Skip to content

Commit

Permalink
test: add unit test for keys_to_multisig_script
Browse files Browse the repository at this point in the history
  • Loading branch information
theStack committed Jan 22, 2024
1 parent d046116 commit a36ad0c
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
20 changes: 20 additions & 0 deletions test/functional/test_framework/script_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,13 @@
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Useful Script constants and utils."""
import unittest

from test_framework.script import (
CScript,
OP_0,
OP_15,
OP_16,
OP_CHECKMULTISIG,
OP_CHECKSIG,
OP_DUP,
Expand Down Expand Up @@ -122,3 +126,19 @@ def check_script(script):
if isinstance(script, bytes) or isinstance(script, CScript):
return script
assert False


class TestFrameworkScriptUtil(unittest.TestCase):
def test_multisig(self):
fake_pubkey = bytes([0]*33)
# check correct encoding of P2MS script with n,k <= 16
normal_ms_script = keys_to_multisig_script([fake_pubkey]*16, k=15)
self.assertEqual(len(normal_ms_script), 1 + 16*34 + 1 + 1)
self.assertTrue(normal_ms_script.startswith(bytes([OP_15])))
self.assertTrue(normal_ms_script.endswith(bytes([OP_16, OP_CHECKMULTISIG])))

# check correct encoding of P2MS script with n,k > 16
max_ms_script = keys_to_multisig_script([fake_pubkey]*20, k=19)
self.assertEqual(len(max_ms_script), 2 + 20*34 + 2 + 1)
self.assertTrue(max_ms_script.startswith(bytes([1, 19]))) # using OP_PUSH1
self.assertTrue(max_ms_script.endswith(bytes([1, 20, OP_CHECKMULTISIG])))
1 change: 1 addition & 0 deletions test/functional/test_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@
"crypto.poly1305",
"crypto.ripemd160",
"script",
"script_util",
"segwit_addr",
]

Expand Down

0 comments on commit a36ad0c

Please sign in to comment.