diff options
author | Sebastian Falbesoner <sebastian.falbesoner@gmail.com> | 2023-08-22 03:17:00 +0200 |
---|---|---|
committer | Sebastian Falbesoner <sebastian.falbesoner@gmail.com> | 2024-06-05 16:18:31 +0200 |
commit | 0570d2c204ec7f10af6bd8e48c23318a48fefc10 (patch) | |
tree | 5189b883211ea213fda941cf3853208f8f0dd9d8 /test/functional/test_framework/script_util.py | |
parent | 0c41fc3fa52ad16923afbd0ec18b9c1b3ded8036 (diff) |
test: add unit test for `keys_to_multisig_script`
Diffstat (limited to 'test/functional/test_framework/script_util.py')
-rwxr-xr-x | test/functional/test_framework/script_util.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/functional/test_framework/script_util.py b/test/functional/test_framework/script_util.py index ee8199c2da..855f3b8cf5 100755 --- a/test/functional/test_framework/script_util.py +++ b/test/functional/test_framework/script_util.py @@ -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, @@ -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]))) |