From 1fee9804bbad56540185b3eacec020dc92e1eb60 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Fri, 18 Oct 2024 10:32:13 +0000 Subject: [PATCH] whitespace: test/obj{attr}test_d/ --- test/objattrtest_py_d/oat_btc_mainnet.py | 64 ++-- test/objattrtest_py_d/oat_common.py | 22 +- test/objtest_py_d/ot_btc_mainnet.py | 427 ++++++++++++----------- test/objtest_py_d/ot_btc_testnet.py | 78 ++--- test/objtest_py_d/ot_common.py | 2 +- test/objtest_py_d/ot_eth_mainnet.py | 46 +-- test/objtest_py_d/ot_ltc_mainnet.py | 82 ++--- test/objtest_py_d/ot_ltc_testnet.py | 78 ++--- 8 files changed, 409 insertions(+), 390 deletions(-) diff --git a/test/objattrtest_py_d/oat_btc_mainnet.py b/test/objattrtest_py_d/oat_btc_mainnet.py index d705d192..47e70acf 100755 --- a/test/objattrtest_py_d/oat_btc_mainnet.py +++ b/test/objattrtest_py_d/oat_btc_mainnet.py @@ -7,31 +7,31 @@ test.objattrtest_py_d.oat_btc_mainnet: BTC mainnet test vectors for MMGen data objects """ -from .oat_common import sample_objs,seed_bin,atd +from .oat_common import sample_objs, seed_bin, atd from ..include.common import cfg from mmgen.protocol import init_proto -proto = init_proto( cfg, 'btc', need_amt=True ) +proto = init_proto(cfg, 'btc', need_amt=True) -from mmgen.key import PrivKey,WifKey -from mmgen.addr import CoinAddr,MMGenID,AddrIdx,MMGenAddrType,MMGenPasswordType +from mmgen.key import PrivKey, WifKey +from mmgen.addr import CoinAddr, MMGenID, AddrIdx, MMGenAddrType, MMGenPasswordType from mmgen.amt import BTCAmt from mmgen.tw.shared import TwMMGenID sample_objs.update({ - 'PrivKey': PrivKey(proto,seed_bin,compressed=True,pubkey_type='std'), - 'WifKey': WifKey(proto,'5HwzecKMWD82ppJK3qMKpC7ohXXAwcyAN5VgdJ9PLFaAzpBG4sX'), - 'CoinAddr': CoinAddr(proto,'1111111111111111111114oLvT2'), + 'PrivKey': PrivKey(proto, seed_bin, compressed=True, pubkey_type='std'), + 'WifKey': WifKey(proto, '5HwzecKMWD82ppJK3qMKpC7ohXXAwcyAN5VgdJ9PLFaAzpBG4sX'), + 'CoinAddr': CoinAddr(proto, '1111111111111111111114oLvT2'), 'BTCAmt': BTCAmt('0.01'), - 'MMGenID': MMGenID(proto,'F00F00BB:B:1'), - 'TwMMGenID': TwMMGenID(proto,'F00F00BB:S:23'), + 'MMGenID': MMGenID(proto, 'F00F00BB:B:1'), + 'TwMMGenID': TwMMGenID(proto, 'F00F00BB:S:23'), }) from mmgen.addrlist import AddrListEntry from mmgen.passwdlist import PasswordListEntry -from mmgen.obj import TwComment,CoinTxID,HexStr -from mmgen.seed import SeedID,SeedBase -from mmgen.subseed import SubSeed,SubSeedIdx +from mmgen.obj import TwComment, CoinTxID, HexStr +from mmgen.seed import SeedID, SeedBase +from mmgen.subseed import SubSeed, SubSeedIdx from mmgen.seedsplit import ( SeedShareCount, SeedSplitIDString, @@ -59,21 +59,21 @@ tests = { {} ), 'PasswordListEntry': atd({ - 'passwd': (0b00001, str), - 'idx': (0b01001, AddrIdx), - 'comment':(0b01101, TwComment), - 'sec': (0b01001, PrivKey), + 'passwd': (0b00001, str), + 'idx': (0b01001, AddrIdx), + 'comment': (0b01101, TwComment), + 'sec': (0b01001, PrivKey), }, (proto,), - {'passwd':'ΑlphaΩmega', 'idx':1 }, + {'passwd': 'ΑlphaΩmega', 'idx': 1}, ), # obj.py 'PrivKey': atd({ 'compressed': (0b00001, bool), 'wif': (0b00001, WifKey), }, - (proto,seed_bin), - {'compressed':True, 'pubkey_type':'std'}, + (proto, seed_bin), + {'compressed': True, 'pubkey_type': 'std'}, ), 'MMGenAddrType': atd({ 'name': (0b01001, str), @@ -85,7 +85,7 @@ tests = { 'extra_attrs': (0b11001, tuple), 'desc': (0b01001, str), }, - (proto,'S'), + (proto, 'S'), {}, ), # seed.py @@ -93,7 +93,7 @@ tests = { 'data': (0b00001, bytes), 'sid': (0b00001, SeedID), }, - [cfg,seed_bin], + [cfg, seed_bin], {}, ), 'SubSeed': atd({ @@ -101,14 +101,14 @@ tests = { 'nonce': (0b00001, int), 'ss_idx': (0b01001, SubSeedIdx), }, - [sample_objs['SubSeedList'],1,1,'short'], + [sample_objs['SubSeedList'], 1, 1, 'short'], {}, ), 'SeedShareList': atd({ 'count': (0b01001, SeedShareCount), 'id_str': (0b01001, SeedSplitIDString), }, - [sample_objs['Seed'],sample_objs['SeedShareCount']], + [sample_objs['Seed'], sample_objs['SeedShareCount']], {}, ), 'SeedShareLast': atd({ @@ -121,14 +121,14 @@ tests = { 'idx': (0b01001, MasterShareIdx), 'nonce': (0b00001, int), }, - [sample_objs['SeedShareList'],7,0], + [sample_objs['SeedShareList'], 7, 0], {}, ), 'SeedShareMasterJoining': atd({ 'id_str': (0b01001, SeedSplitIDString), 'count': (0b01001, SeedShareCount), }, - [cfg,sample_objs['MasterShareIdx'], sample_objs['Seed'], 'foo', 2], + [cfg, sample_objs['MasterShareIdx'], sample_objs['Seed'], 'foo', 2], {}, ), # twuo.py @@ -146,11 +146,11 @@ tests = { }, (proto,), { - 'amt':BTCAmt('0.01'), - 'twmmid':'F00F00BB:B:17', - 'addr':'1111111111111111111114oLvT2', + 'amt': BTCAmt('0.01'), + 'twmmid': 'F00F00BB:B:17', + 'addr': '1111111111111111111114oLvT2', 'confs': 100000, - 'scriptPubKey':'ff', + 'scriptPubKey': 'ff', }, ), # tx.py @@ -167,7 +167,7 @@ tests = { 'sequence': (0b00001, int), }, (proto,), - { 'amt':BTCAmt('0.01'), 'addr':sample_objs['CoinAddr'] }, + {'amt': BTCAmt('0.01'), 'addr': sample_objs['CoinAddr']}, ), 'Base.Output': atd({ 'vout': (0b01001, int), @@ -181,8 +181,8 @@ tests = { 'is_chg': (0b00001, bool), }, (proto,), - { 'amt':BTCAmt('0.01'), 'addr':sample_objs['CoinAddr'] }, + {'amt': BTCAmt('0.01'), 'addr': sample_objs['CoinAddr']}, ), } -tests['MMGenPasswordType'] = atd(tests['MMGenAddrType'].attrs, [proto,'P'], {}) +tests['MMGenPasswordType'] = atd(tests['MMGenAddrType'].attrs, [proto, 'P'], {}) diff --git a/test/objattrtest_py_d/oat_common.py b/test/objattrtest_py_d/oat_common.py index 5bb22a0c..b9a0abda 100755 --- a/test/objattrtest_py_d/oat_common.py +++ b/test/objattrtest_py_d/oat_common.py @@ -10,15 +10,15 @@ test.objattrtest_py_d.oat_common: shared data for MMGen data objects tests from decimal import Decimal from collections import namedtuple -from mmgen.obj import TwComment,CoinTxID,HexStr -from mmgen.seed import Seed,SeedID -from mmgen.subseed import SubSeedIdx,SubSeedList -from mmgen.seedsplit import SeedShareList,SeedShareCount,SeedSplitIDString,SeedShareIdx,MasterShareIdx +from mmgen.obj import TwComment, CoinTxID, HexStr +from mmgen.seed import Seed, SeedID +from mmgen.subseed import SubSeedIdx, SubSeedList +from mmgen.seedsplit import SeedShareList, SeedShareCount, SeedSplitIDString, SeedShareIdx, MasterShareIdx from mmgen.addr import AddrIdx -from ..include.common import cfg,getrand +from ..include.common import cfg, getrand -atd = namedtuple('attrtest_entry',['attrs','args','kwargs']) +atd = namedtuple('attrtest_entry', ['attrs', 'args', 'kwargs']) seed_bin = getrand(32) @@ -30,9 +30,9 @@ sample_objs = { 'NoneType': None, 'bool': bool(True), 'str': str('foo'), - 'dict': dict({'a':1}), + 'dict': dict({'a': 1}), 'list': list([1]), - 'tuple': tuple((1,2)), + 'tuple': tuple((1, 2)), 'bytes': bytes(1), 'HexStr': HexStr('ff'), @@ -41,13 +41,13 @@ sample_objs = { 'CoinTxID': CoinTxID('aa'*32), 'SeedID': SeedID(sid='F00F00BB'), - 'Seed': Seed(cfg,seed_bin=seed_bin), + 'Seed': Seed(cfg, seed_bin=seed_bin), - 'SubSeedList': SubSeedList(Seed(cfg,seed_bin=seed_bin)), + 'SubSeedList': SubSeedList(Seed(cfg, seed_bin=seed_bin)), 'SubSeedIdx': SubSeedIdx('1S'), 'SeedSplitIDString': SeedSplitIDString('alice'), - 'SeedShareList': SeedShareList(Seed(cfg,seed_bin=seed_bin),SeedShareCount(2)), + 'SeedShareList': SeedShareList(Seed(cfg, seed_bin=seed_bin), SeedShareCount(2)), 'SeedShareIdx': SeedShareIdx(1), 'SeedShareCount': SeedShareCount(2), 'MasterShareIdx': MasterShareIdx(7), diff --git a/test/objtest_py_d/ot_btc_mainnet.py b/test/objtest_py_d/ot_btc_mainnet.py index a483641f..43f4edb6 100755 --- a/test/objtest_py_d/ot_btc_mainnet.py +++ b/test/objtest_py_d/ot_btc_mainnet.py @@ -9,289 +9,308 @@ test.objtest_py_d.ot_btc_mainnet: BTC mainnet test vectors for MMGen data object from decimal import Decimal -from mmgen.obj import Int,MMGenTxID,CoinTxID,MMGenWalletLabel,MMGenTxComment,MMGenPWIDString,TrackingWalletName -from mmgen.addrlist import AddrIdx,AddrIdxList,AddrListID -from mmgen.seed import Seed,SeedID -from mmgen.subseed import SubSeedList,SubSeedIdx,SubSeedIdxRange -from mmgen.seedsplit import SeedShareIdx,SeedShareCount,MasterShareIdx,SeedSplitSpecifier -from mmgen.key import PrivKey,WifKey,PubKey +from mmgen.obj import ( + Int, + MMGenTxID, + CoinTxID, + MMGenWalletLabel, + MMGenTxComment, + MMGenPWIDString, + TrackingWalletName) +from mmgen.addrlist import AddrIdx, AddrIdxList, AddrListID +from mmgen.seed import Seed, SeedID +from mmgen.subseed import SubSeedList, SubSeedIdx, SubSeedIdxRange +from mmgen.seedsplit import SeedShareIdx, SeedShareCount, MasterShareIdx, SeedSplitSpecifier +from mmgen.key import PrivKey, WifKey, PubKey from mmgen.amt import BTCAmt -from mmgen.addr import CoinAddr,MMGenID,MMGenAddrType,MMGenPasswordType -from mmgen.tw.shared import TwMMGenID,TwLabel,TwComment +from mmgen.addr import CoinAddr, MMGenID, MMGenAddrType, MMGenPasswordType +from mmgen.tw.shared import TwMMGenID, TwLabel, TwComment from mmgen.rpc import IPPort from mmgen.protocol import init_proto -from .ot_common import r16,r32 -from ..include.common import cfg,utf8_ctrl,utf8_text,utf8_combining,gr_uc_w_ctrl,text_jp,text_zh,ru_uc,gr_uc - -proto = init_proto( cfg, 'btc', need_amt=True ) +from .ot_common import r16, r32 +from ..include.common import ( + cfg, + utf8_ctrl, + utf8_text, + utf8_combining, + gr_uc_w_ctrl, + text_jp, + text_zh, + ru_uc, + gr_uc) +proto = init_proto(cfg, 'btc', need_amt=True) tw_pfx = proto.base_coin.lower() + ':' zero_addr = '1111111111111111111114oLvT2' ssm = str(SeedShareCount.max_val) -privkey = PrivKey(proto=proto,s=bytes.fromhex('deadbeef'*8),compressed=True,pubkey_type='std') +privkey = PrivKey(proto=proto, s=bytes.fromhex('deadbeef'*8), compressed=True, pubkey_type='std') tests = { 'Int': { 'arg1': 'n', - 'bad': ('1L',0.0,'0.0','1.0',1.0,'s',1.1,'1.1'), + 'bad': ('1L', 0.0, '0.0', '1.0', 1.0, 's', 1.1, '1.1'), 'good': ( - ('0',0),('-1',-1),('7',7),-1,0,1,9999999, - {'n':'0x0','base':16,'ret':0}, - {'n':'0x1','base':16,'ret':1}, - {'n':'0xf','base':16,'ret':15}, - {'n':'0xff','base':16,'ret':255}, + ('0', 0), ('-1', -1), ('7', 7), -1, 0, 1, 9999999, + {'n': '0x0', 'base': 16, 'ret': 0}, + {'n': '0x1', 'base': 16, 'ret': 1}, + {'n': '0xf', 'base': 16, 'ret': 15}, + {'n': '0xff', 'base': 16, 'ret': 255}, ) }, 'AddrIdx': { 'arg1': 'n', - 'bad': ('s',1.1,10000000,-1,0), - 'good': (('7',7),(1,1),(9999999,9999999)) + 'bad': ('s', 1.1, 10000000, -1, 0), + 'good': (('7', 7), (1, 1), (9999999, 9999999)) }, 'SeedShareIdx': { 'arg1': 'n', - 'bad': ('s',1.1,1025,-1,0), - 'good': (('7',7),(1,1),(1024,1024)) + 'bad': ('s', 1.1, 1025, -1, 0), + 'good': (('7', 7), (1, 1), (1024, 1024)) }, 'SeedShareCount': { 'arg1': 'n', - 'bad': ('s',2.1,1025,-1,0,1), - 'good': (('7',7),(2,2),(1024,1024)) + 'bad': ('s', 2.1, 1025, -1, 0, 1), + 'good': (('7', 7), (2, 2), (1024, 1024)) }, 'MasterShareIdx': { 'arg1': 'n', - 'bad': ('s',1.1,1025,-1,0), - 'good': (('7',7),(1,1),(1024,1024)) + 'bad': ('s', 1.1, 1025, -1, 0), + 'good': (('7', 7), (1, 1), (1024, 1024)) }, 'AddrIdxList': { 'arg1': 'fmt_str', - 'bad': ('x','5,9,1-2-3','8,-11','66,3-2','0-3'), + 'bad': ('x', '5,9,1-2-3', '8,-11', '66,3-2', '0-3'), 'good': ( - ('3,2,2',(2,3)), - ('101,1,3,5,2-7,99',(1,2,3,4,5,6,7,99,101)), - ({'idx_list':AddrIdxList('1-5')},(1,2,3,4,5)) + ('3,2,2', (2, 3)), + ('101,1,3,5,2-7,99', (1, 2, 3, 4, 5, 6, 7, 99, 101)), + ({'idx_list': AddrIdxList('1-5')}, (1, 2, 3, 4, 5)) ) }, 'SubSeedIdxRange': { - 'bad': (33,'x','-11','66,3','0','3-2','8000000','100000000',(1,2,3)), + 'bad': (33, 'x', '-11', '66,3','0', '3-2', '8000000', '100000000', (1, 2, 3)), 'good': ( - ('3',(3,3)), - ((3,5),(3,5)), - ('1-2',(1,2)), - (str(SubSeedList.dfl_len),(SubSeedList.dfl_len,SubSeedList.dfl_len)), - (str(SubSeedIdxRange.max_idx),(SubSeedIdxRange.max_idx,SubSeedIdxRange.max_idx)), + ('3', (3, 3)), + ((3, 5), (3, 5)), + ('1-2', (1, 2)), + (str(SubSeedList.dfl_len), (SubSeedList.dfl_len, SubSeedList.dfl_len)), + (str(SubSeedIdxRange.max_idx), (SubSeedIdxRange.max_idx, SubSeedIdxRange.max_idx)), ) }, 'BTCAmt': { 'arg1': 'num', - 'bad': ('-3.2','0.123456789',123,'123L','22000000',20999999.12345678, - {'num':'1','from_decimal':True}, - {'num':1,'from_decimal':True}, + 'bad': ('-3.2', '0.123456789', 123, '123L', '22000000', 20999999.12345678, + {'num': '1', 'from_decimal': True}, + {'num': 1, 'from_decimal': True}, ), - 'good': (('20999999.12345678',Decimal('20999999.12345678')), - {'num':Decimal('1.23456789623456789'),'from_decimal':True,'ret':Decimal('1.23456790')}, # rounding - {'num':Decimal('1.234'),'from_decimal':True,'ret':Decimal('1.234')}, - {'num':Decimal('0.0'),'from_decimal':True,'ret':Decimal('0')}, + 'good': (('20999999.12345678', Decimal('20999999.12345678')), + # rounding + {'num': Decimal('1.23456789623456789'), 'from_decimal': True, 'ret': Decimal('1.23456790')}, + {'num': Decimal('1.234'), 'from_decimal': True, 'ret': Decimal('1.234')}, + {'num': Decimal('0.0'), 'from_decimal': True, 'ret': Decimal('0')}, # emulate network fee estimation: # BTC/kB fee_adjust tx size - { 'num':Decimal('0.00053249') * Decimal('0.9') * 109 / 1024 , # ≈53 sat/byte - 'from_decimal':True, - 'ret':Decimal('0.00005101') }, - { 'num':Decimal('0.00003249') * Decimal('1.1') * 109 / 1024 , # ≈3 sat/byte - 'from_decimal':True, - 'ret':Decimal('0.00000380') }, - { 'num':Decimal('0.00011249') * Decimal('1.0') * 221 / 1024 , # ≈11 sat/byte - 'from_decimal':True, - 'ret':Decimal('0.00002428') }, - {'num':1234,'from_unit':'satoshi','ret':Decimal('0.00001234')}, + { 'num': Decimal('0.00053249') * Decimal('0.9') * 109 / 1024 , # ≈53 sat/byte + 'from_decimal': True, + 'ret': Decimal('0.00005101')}, + { 'num': Decimal('0.00003249') * Decimal('1.1') * 109 / 1024 , # ≈3 sat/byte + 'from_decimal': True, + 'ret': Decimal('0.00000380')}, + { 'num': Decimal('0.00011249') * Decimal('1.0') * 221 / 1024 , # ≈11 sat/byte + 'from_decimal': True, + 'ret': Decimal('0.00002428')}, + {'num': 1234, 'from_unit': 'satoshi', 'ret': Decimal('0.00001234')}, ) }, 'CoinAddr': { 'arg1': 'addr', - 'good': ( - {'addr':'1MjjELEy6EJwk8fSNfpS8b5teFRo4X5fZr', 'proto':proto}, - {'addr':'32GiSWo9zJQgkCmjAaLRrbPwXhKry2jHhj', 'proto':proto}, + 'good': ( + {'addr': '1MjjELEy6EJwk8fSNfpS8b5teFRo4X5fZr', 'proto': proto}, + {'addr': '32GiSWo9zJQgkCmjAaLRrbPwXhKry2jHhj', 'proto': proto}, ), - 'bad': ( - {'addr':1, 'proto':proto}, - {'addr':'x', 'proto':proto}, - {'addr':'я', 'proto':proto}, + 'bad': ( + {'addr': 1, 'proto': proto}, + {'addr': 'x', 'proto': proto}, + {'addr': 'я', 'proto': proto}, ), }, 'SeedID': { 'arg1': 'sid', - 'bad': ( - {'sid':'я'}, - {'sid':'F00F00'}, - {'sid':'xF00F00x'}, - {'sid':1}, - {'sid':'F00BAA123'}, - {'sid':'f00baa12'}, - 'я',r32,'abc' + 'bad': ( + {'sid': 'я'}, + {'sid': 'F00F00'}, + {'sid': 'xF00F00x'}, + {'sid': 1}, + {'sid': 'F00BAA123'}, + {'sid': 'f00baa12'}, + 'я', r32, 'abc' ), 'good': ( - {'sid':'F00BAA12'}, - {'seed': Seed(cfg,r16), 'ret': SeedID(seed=Seed(cfg,r16))}, - {'sid': Seed(cfg,r16).sid, 'ret': SeedID(seed=Seed(cfg,r16))} + {'sid': 'F00BAA12'}, + {'seed': Seed(cfg, r16), 'ret': SeedID(seed=Seed(cfg, r16))}, + {'sid': Seed(cfg, r16).sid, 'ret': SeedID(seed=Seed(cfg, r16))} ) }, 'SubSeedIdx': { 'arg1': 's', - 'bad': (33,'x','я','1x',200,'1ss','L','s','200LS','30ll','s100',str(SubSeedIdxRange.max_idx+1),'0'), - 'good': (('1','1L'),('1s','1S'),'20S','30L',('300l','300L'),('200','200L'),str(SubSeedIdxRange.max_idx)+'S') + 'bad': (33, 'x', 'я', '1x', 200, '1ss', 'L', 's', '200LS', '30ll', 's100', + str(SubSeedIdxRange.max_idx+1), '0'), + 'good': ( + ('1', '1L'), ('1s', '1S'), '20S', '30L', ('300l', '300L'), ('200', '200L'), + str(SubSeedIdxRange.max_idx)+'S') }, 'MMGenID': { 'arg1': 'id_str', - 'bad': ( - {'id_str':'x', 'proto':proto}, - {'id_str':1, 'proto':proto}, - {'id_str':'f00f00f', 'proto':proto}, - {'id_str':'a:b', 'proto':proto}, - {'id_str':'x:L:3', 'proto':proto}, - {'id_str':'F00BAA12', 'proto':proto}, - {'id_str':'F00BAA12:Z:99', 'proto':proto}, + 'bad': ( + {'id_str': 'x', 'proto': proto}, + {'id_str': 1, 'proto': proto}, + {'id_str': 'f00f00f', 'proto': proto}, + {'id_str': 'a:b', 'proto': proto}, + {'id_str': 'x:L:3', 'proto': proto}, + {'id_str': 'F00BAA12', 'proto': proto}, + {'id_str': 'F00BAA12:Z:99', 'proto': proto}, ), - 'good': ( - {'id_str':'F00BAA12:99', 'proto':proto, 'ret':'F00BAA12:L:99'}, - {'id_str':'F00BAA12:L:99', 'proto':proto}, - {'id_str':'F00BAA12:S:99', 'proto':proto}, + 'good': ( + {'id_str': 'F00BAA12:99', 'proto': proto, 'ret': 'F00BAA12:L:99'}, + {'id_str': 'F00BAA12:L:99', 'proto': proto}, + {'id_str': 'F00BAA12:S:99', 'proto': proto}, ), }, 'TwMMGenID': { 'arg1': 'id_str', - 'bad': ( - {'id_str':'x', 'proto':proto}, - {'id_str':'я', 'proto':proto}, - {'id_str':'я:я', 'proto':proto}, - {'id_str':1, 'proto':proto}, - {'id_str':'f00f00f', 'proto':proto}, - {'id_str':'a:b', 'proto':proto}, - {'id_str':'x:L:3', 'proto':proto}, - {'id_str':'F00BAA12:0', 'proto':proto}, - {'id_str':'F00BAA12:Z:99', 'proto':proto}, - {'id_str':tw_pfx, 'proto':proto}, - {'id_str':tw_pfx+'я', 'proto':proto}, - {'id_str':tw_pfx+'x', 'proto':proto}, + 'bad': ( + {'id_str': 'x', 'proto': proto}, + {'id_str': 'я', 'proto': proto}, + {'id_str': 'я:я', 'proto': proto}, + {'id_str': 1, 'proto': proto}, + {'id_str': 'f00f00f', 'proto': proto}, + {'id_str': 'a:b', 'proto': proto}, + {'id_str': 'x:L:3', 'proto': proto}, + {'id_str': 'F00BAA12:0', 'proto': proto}, + {'id_str': 'F00BAA12:Z:99', 'proto': proto}, + {'id_str': tw_pfx, 'proto': proto}, + {'id_str': tw_pfx+'я', 'proto': proto}, + {'id_str': tw_pfx+'x', 'proto': proto}, ), - 'good': ( - {'id_str':tw_pfx+zero_addr, 'proto':proto}, - {'id_str':'F00BAA12:99', 'proto':proto, 'ret':'F00BAA12:L:99'}, - {'id_str':'F00BAA12:L:99', 'proto':proto}, - {'id_str':'F00BAA12:S:9999999', 'proto':proto}, + 'good': ( + {'id_str': tw_pfx+zero_addr, 'proto': proto}, + {'id_str': 'F00BAA12:99', 'proto': proto, 'ret': 'F00BAA12:L:99'}, + {'id_str': 'F00BAA12:L:99', 'proto': proto}, + {'id_str': 'F00BAA12:S:9999999', 'proto': proto}, ), }, 'TrackingWalletName': { 'arg1': 's', - 'bad': ('-abcdefg', 'a' * 50, 'abc-α-ω'), + 'bad': ('-abcdefg', 'a' * 50, 'abc-α-ω'), 'good': ('ab-cd-def_ghi-', '321-abcd') }, 'TwLabel': { 'arg1': 'proto', 'exc_name': 'BadTwLabel', - 'bad': ( - {'text':'', 'proto':proto}, - {'text':'x x', 'proto':proto}, - {'text':'x я', 'proto':proto}, - {'text':'я:я', 'proto':proto}, - {'text':1, 'proto':proto}, - {'text':'f00f00f', 'proto':proto}, - {'text':'a:b', 'proto':proto}, - {'text':'x:L:3', 'proto':proto}, - {'text':'F00BAA12:0 x', 'proto':proto}, - {'text':'F00BAA12:Z:99', 'proto':proto}, - {'text':tw_pfx+' x', 'proto':proto}, - {'text':tw_pfx+'я x', 'proto':proto}, - {'text':utf8_ctrl[:40], 'proto':proto}, - {'text':'F00BAA12:S:1 ' + utf8_ctrl[:40], 'proto':proto, 'exc_name': 'BadTwComment'}, - {'text':tw_pfx+'x comment','proto':proto}, + 'bad': ( + {'text': '', 'proto': proto}, + {'text': 'x x', 'proto': proto}, + {'text': 'x я', 'proto': proto}, + {'text': 'я:я', 'proto': proto}, + {'text': 1, 'proto': proto}, + {'text': 'f00f00f', 'proto': proto}, + {'text': 'a:b', 'proto': proto}, + {'text': 'x:L:3', 'proto': proto}, + {'text': 'F00BAA12:0 x', 'proto': proto}, + {'text': 'F00BAA12:Z:99', 'proto': proto}, + {'text': tw_pfx+' x', 'proto': proto}, + {'text': tw_pfx+'я x', 'proto': proto}, + {'text': utf8_ctrl[:40], 'proto': proto}, + {'text': 'F00BAA12:S:1 ' + utf8_ctrl[:40], 'proto': proto, 'exc_name': 'BadTwComment'}, + {'text': tw_pfx+'x comment', 'proto': proto}, ), - 'good': ( - {'text':'F00BAA12:99 a comment', 'proto':proto, 'ret':'F00BAA12:L:99 a comment'}, - {'text':'F00BAA12:L:99 a comment', 'proto':proto}, - {'text': 'F00BAA12:L:99 comment (UTF-8) α', 'proto':proto}, - {'text':'F00BAA12:S:9999999 comment', 'proto':proto}, - {'text':tw_pfx+zero_addr+' comment', 'proto':proto}, + 'good': ( + {'text': 'F00BAA12:99 a comment', 'proto': proto, 'ret': 'F00BAA12:L:99 a comment'}, + {'text': 'F00BAA12:L:99 a comment', 'proto': proto}, + {'text': 'F00BAA12:L:99 comment (UTF-8) α', 'proto': proto}, + {'text': 'F00BAA12:S:9999999 comment', 'proto': proto}, + {'text': tw_pfx+zero_addr+' comment', 'proto': proto}, ), }, 'MMGenTxID': { 'arg1': 's', - 'bad': (1,[],'\0','\1','я','g','gg','FF','f00','F00F0012'), - 'good': ('DEADBE','F00BAA') + 'bad': (1, [], '\0', '\1', 'я', 'g', 'gg', 'FF', 'f00', 'F00F0012'), + 'good': ('DEADBE', 'F00BAA') }, - 'CoinTxID':{ + 'CoinTxID': { 'arg1': 's', - 'bad': (1,[],'\0','\1','я','g','gg','FF','f00','F00F0012',r16.hex(),r32.hex()+'ee'), + 'bad': (1, [], '\0', '\1', 'я', 'g', 'gg', 'FF', 'f00', 'F00F0012', r16.hex(), r32.hex()+'ee'), 'good': (r32.hex(),) }, 'WifKey': { 'arg1': 'proto', 'bad': ( - {'proto':proto, 'wif':1}, - {'proto':proto, 'wif':[]}, - {'proto':proto, 'wif':'\0'}, - {'proto':proto, 'wif':'\1'}, - {'proto':proto, 'wif':'я'}, - {'proto':proto, 'wif':'g'}, - {'proto':proto, 'wif':'gg'}, - {'proto':proto, 'wif':'FF'}, - {'proto':proto, 'wif':'f00'}, - {'proto':proto, 'wif':r16.hex()}, - {'proto':proto, 'wif':'2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN'}, + {'proto': proto, 'wif': 1}, + {'proto': proto, 'wif': []}, + {'proto': proto, 'wif': '\0'}, + {'proto': proto, 'wif': '\1'}, + {'proto': proto, 'wif': 'я'}, + {'proto': proto, 'wif': 'g'}, + {'proto': proto, 'wif': 'gg'}, + {'proto': proto, 'wif': 'FF'}, + {'proto': proto, 'wif': 'f00'}, + {'proto': proto, 'wif': r16.hex()}, + {'proto': proto, 'wif': '2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN'}, ), 'good': ( - {'proto':proto, 'wif':'5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb', 'ret_idx':1}, - {'proto':proto, 'wif':'KwWr9rDh8KK5TtDa3HLChEvQXNYcUXpwhRFUPc5uSNnMtqNKLFhk', 'ret_idx':1}, + {'proto': proto, 'wif': '5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb', 'ret_idx': 1}, + {'proto': proto, 'wif': 'KwWr9rDh8KK5TtDa3HLChEvQXNYcUXpwhRFUPc5uSNnMtqNKLFhk', 'ret_idx': 1}, ) }, 'PubKey': { 'arg1': 's', - 'bad': ( - {'s':1, 'compressed':True }, - {'s':'F00BAA12','compressed':False}, + 'bad': ( + {'s': 1, 'compressed': True}, + {'s': 'F00BAA12', 'compressed': False}, ), 'good': ( # TODO: add real pubkeys - {'s':bytes.fromhex('deadbeef'),'compressed':True}, + {'s': bytes.fromhex('deadbeef'), 'compressed': True}, ) }, 'PrivKey': { 'arg1': 'proto', 'bad': ( - {'proto':proto, 'wif':1}, - {'proto':proto, 'wif':'1'}, - {'proto':proto, 'wif':'cMsqcmDYZP1LdKgqRh9L4ZRU9br28yvdmTPwW2YQwVSN9aQiMAoR'}, - {'proto':proto, 's':r32,'wif':'5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb'}, - {'proto':proto, 'pubkey_type':'std'}, - {'proto':proto, 's':r32}, - {'proto':proto, 's':r32,'compressed':'yes'}, - {'proto':proto, 's':r32,'compressed':'yes','pubkey_type':'std'}, - {'proto':proto, 's':r32,'compressed':True,'pubkey_type':'nonstd'}, - {'proto':proto, 's':r32+b'x','compressed':True,'pubkey_type':'std'} + {'proto': proto, 'wif': 1}, + {'proto': proto, 'wif': '1'}, + {'proto': proto, 'wif': 'cMsqcmDYZP1LdKgqRh9L4ZRU9br28yvdmTPwW2YQwVSN9aQiMAoR'}, + {'proto': proto, 's': r32, 'wif': '5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb'}, + {'proto': proto, 'pubkey_type': 'std'}, + {'proto': proto, 's': r32}, + {'proto': proto, 's': r32, 'compressed': 'yes'}, + {'proto': proto, 's': r32, 'compressed': 'yes', 'pubkey_type': 'std'}, + {'proto': proto, 's': r32, 'compressed': True, 'pubkey_type': 'nonstd'}, + {'proto': proto, 's': r32+b'x', 'compressed': True, 'pubkey_type': 'std'} ), 'good': ( - {'proto':proto, 'wif':'5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb', - 'ret':bytes.fromhex('e0aef965b905a2fedf907151df8e0a6bac832aa697801c51f58bd2ecb4fd381c')}, - {'proto':proto, 'wif':'KwWr9rDh8KK5TtDa3HLChEvQXNYcUXpwhRFUPc5uSNnMtqNKLFhk', - 'ret':bytes.fromhex('08d0ed83b64b68d56fa064be48e2385060ed205be2b1e63cd56d218038c3a05f')}, - {'proto':proto, 's':r32,'compressed':False,'pubkey_type':'std','ret':r32}, - {'proto':proto, 's':r32,'compressed':True,'pubkey_type':'std','ret':r32} + {'proto': proto, 'wif': '5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb', + 'ret': bytes.fromhex('e0aef965b905a2fedf907151df8e0a6bac832aa697801c51f58bd2ecb4fd381c')}, + {'proto': proto, 'wif': 'KwWr9rDh8KK5TtDa3HLChEvQXNYcUXpwhRFUPc5uSNnMtqNKLFhk', + 'ret': bytes.fromhex('08d0ed83b64b68d56fa064be48e2385060ed205be2b1e63cd56d218038c3a05f')}, + {'proto': proto, 's': r32, 'compressed': False, 'pubkey_type': 'std', 'ret': r32}, + {'proto': proto, 's': r32, 'compressed': True, 'pubkey_type': 'std', 'ret': r32} ) }, 'AddrListID': { 'arg1': 'sid', - 'bad': ( - {'sid':SeedID(sid='F00BAA12'),'mmtype':'Z','ret':'F00BAA12:Z'}, - {'id_str':'G00BAA12:B','proto':proto}, + 'bad': ( + {'sid': SeedID(sid='F00BAA12'), 'mmtype': 'Z', 'ret': 'F00BAA12:Z'}, + {'id_str': 'G00BAA12:B', 'proto': proto}, ), - 'good': ( - {'id_str':'F00BAA12:B','proto':proto,'ret':'F00BAA12:B'}, - {'sid':SeedID(sid='F00BAA12'),'mmtype':proto.addr_type(id_str='S'),'ret':'F00BAA12:S'}, - {'sid':SeedID(sid='F00BAA12'),'mmtype':proto.addr_type(id_str='L'),'ret':'F00BAA12:L'}, + 'good': ( + {'id_str': 'F00BAA12:B', 'proto': proto, 'ret': 'F00BAA12:B'}, + {'sid': SeedID(sid='F00BAA12'), 'mmtype': proto.addr_type(id_str='S'), 'ret': 'F00BAA12:S'}, + {'sid': SeedID(sid='F00BAA12'), 'mmtype': proto.addr_type(id_str='L'), 'ret': 'F00BAA12:L'}, ) }, 'MMGenWalletLabel': { 'arg1': 's', - 'bad': (utf8_text[:49],utf8_combining[:48],utf8_ctrl[:48],gr_uc_w_ctrl), - 'good': (utf8_text[:48],) + 'bad': (utf8_text[:49], utf8_combining[:48], utf8_ctrl[:48], gr_uc_w_ctrl), + 'good': (utf8_text[:48],) }, 'TwComment': { 'exc_name': 'BadTwComment', @@ -301,60 +320,60 @@ tests = { text_jp[:41], text_zh[:41], gr_uc_w_ctrl, - utf8_text[:81] ), - 'good': ( utf8_text[:80], + utf8_text[:81]), + 'good': ( utf8_text[:80], (ru_uc + gr_uc + utf8_text)[:80], text_jp[:40], - text_zh[:40] ) + text_zh[:40]) }, - 'MMGenTxComment':{ + 'MMGenTxComment': { 'arg1': 's', - 'bad': (utf8_text[:73],utf8_combining[:72],utf8_ctrl[:72],gr_uc_w_ctrl), - 'good': (utf8_text[:72],) + 'bad': (utf8_text[:73], utf8_combining[:72], utf8_ctrl[:72], gr_uc_w_ctrl), + 'good': (utf8_text[:72],) }, 'MMGenPWIDString': { # forbidden = list(u' :/\\') 'arg1': 's', - 'bad': ('foo/','foo:','foo:\\'), + 'bad': ('foo/', 'foo:', 'foo:\\'), 'good': ('qwerty@яяя',) }, 'MMGenAddrType': { 'arg1': 'proto', - 'bad': ( - {'proto':proto, 'id_str':'U', 'ret':'L'}, - {'proto':proto, 'id_str':'z', 'ret':'L'}, - {'proto':proto, 'id_str':'xx', 'ret':'C'}, - {'proto':proto, 'id_str':'dogecoin', 'ret':'C'}, + 'bad': ( + {'proto': proto, 'id_str': 'U', 'ret': 'L'}, + {'proto': proto, 'id_str': 'z', 'ret': 'L'}, + {'proto': proto, 'id_str': 'xx', 'ret': 'C'}, + {'proto': proto, 'id_str': 'dogecoin', 'ret': 'C'}, ), - 'good': ( - {'proto':proto, 'id_str':'legacy', 'ret':'L'}, - {'proto':proto, 'id_str':'L', 'ret':'L'}, - {'proto':proto, 'id_str':'compressed','ret':'C'}, - {'proto':proto, 'id_str':'C', 'ret':'C'}, - {'proto':proto, 'id_str':'segwit', 'ret':'S'}, - {'proto':proto, 'id_str':'S', 'ret':'S'}, - {'proto':proto, 'id_str':'bech32', 'ret':'B'}, - {'proto':proto, 'id_str':'B', 'ret':'B'} + 'good': ( + {'proto': proto, 'id_str': 'legacy', 'ret': 'L'}, + {'proto': proto, 'id_str': 'L', 'ret': 'L'}, + {'proto': proto, 'id_str': 'compressed', 'ret': 'C'}, + {'proto': proto, 'id_str': 'C', 'ret': 'C'}, + {'proto': proto, 'id_str': 'segwit', 'ret': 'S'}, + {'proto': proto, 'id_str': 'S', 'ret': 'S'}, + {'proto': proto, 'id_str': 'bech32', 'ret': 'B'}, + {'proto': proto, 'id_str': 'B', 'ret': 'B'} ) }, 'MMGenPasswordType': { 'arg1': 'proto', - 'bad': ( - {'proto':proto, 'id_str':'U', 'ret':'L'}, - {'proto':proto, 'id_str':'z', 'ret':'L'}, - {'proto':proto, 'id_str':'я', 'ret':'C'}, - {'proto':proto, 'id_str':1, 'ret':'C'}, - {'proto':proto, 'id_str':'passw0rd', 'ret':'C'}, + 'bad': ( + {'proto': proto, 'id_str': 'U', 'ret': 'L'}, + {'proto': proto, 'id_str': 'z', 'ret': 'L'}, + {'proto': proto, 'id_str': 'я', 'ret': 'C'}, + {'proto': proto, 'id_str': 1, 'ret': 'C'}, + {'proto': proto, 'id_str': 'passw0rd', 'ret': 'C'}, ), 'good': ( - {'proto':proto, 'id_str':'password', 'ret':'P'}, - {'proto':proto, 'id_str':'P', 'ret':'P'}, + {'proto': proto, 'id_str': 'password', 'ret': 'P'}, + {'proto': proto, 'id_str': 'P', 'ret': 'P'}, ) }, 'SeedSplitSpecifier': { 'arg1': 's', - 'bad': ('M','αβ:2',1,'0:1','1:1','2:1','3:2','1:2000','abc:0:2'), + 'bad': ('M', 'αβ:2', 1, '0:1', '1:1', '2:1', '3:2', '1:2000', 'abc:0:2'), 'good': ( - ('1:2','2:2','alice:2:2','αβ:2:2','1:'+ssm,ssm+':'+ssm) + ('1:2', '2:2', 'alice:2:2', 'αβ:2:2', '1:'+ssm, ssm+':'+ssm) ) }, 'IPPort': { diff --git a/test/objtest_py_d/ot_btc_testnet.py b/test/objtest_py_d/ot_btc_testnet.py index 66b697c2..55f90a25 100755 --- a/test/objtest_py_d/ot_btc_testnet.py +++ b/test/objtest_py_d/ot_btc_testnet.py @@ -7,66 +7,66 @@ test.objtest_py_d.ot_btc_testnet: BTC testnet test vectors for MMGen data objects """ -from mmgen.key import PrivKey,WifKey +from mmgen.key import PrivKey, WifKey from mmgen.addr import CoinAddr from mmgen.protocol import init_proto -from .ot_common import r16,r32 +from .ot_common import r16, r32 from ..include.common import cfg -proto = init_proto( cfg, 'btc', network='testnet', need_amt=True ) +proto = init_proto(cfg, 'btc', network='testnet', need_amt=True) tests = { 'CoinAddr': { - 'bad': ( - {'addr':1, 'proto':proto}, - {'addr':'x', 'proto':proto}, - {'addr':'я', 'proto':proto}, + 'bad': ( + {'addr': 1, 'proto': proto}, + {'addr': 'x', 'proto': proto}, + {'addr': 'я', 'proto': proto}, ), - 'good': ( - {'addr':'n2FgXPKwuFkCXF946EnoxWJDWF2VwQ6q8J', 'proto':proto}, - {'addr':'2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN','proto':proto}, + 'good': ( + {'addr': 'n2FgXPKwuFkCXF946EnoxWJDWF2VwQ6q8J', 'proto': proto}, + {'addr': '2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN', 'proto': proto}, ), }, 'WifKey': { 'bad': ( - {'proto':proto, 'wif':1}, - {'proto':proto, 'wif':[]}, - {'proto':proto, 'wif':'\0'}, - {'proto':proto, 'wif':'\1'}, - {'proto':proto, 'wif':'я'}, - {'proto':proto, 'wif':'g'}, - {'proto':proto, 'wif':'gg'}, - {'proto':proto, 'wif':'FF'}, - {'proto':proto, 'wif':'f00'}, - {'proto':proto, 'wif':r16.hex()}, - {'proto':proto, 'wif':'2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN'}, + {'proto': proto, 'wif': 1}, + {'proto': proto, 'wif': []}, + {'proto': proto, 'wif': '\0'}, + {'proto': proto, 'wif': '\1'}, + {'proto': proto, 'wif': 'я'}, + {'proto': proto, 'wif': 'g'}, + {'proto': proto, 'wif': 'gg'}, + {'proto': proto, 'wif': 'FF'}, + {'proto': proto, 'wif': 'f00'}, + {'proto': proto, 'wif': r16.hex()}, + {'proto': proto, 'wif': '2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN'}, ), 'good': ( - {'proto':proto, 'wif':'93HsQEpH75ibaUJYi3QwwiQxnkW4dUuYFPXZxcbcKds7XrqHkY6', 'ret_idx':1}, - {'proto':proto, 'wif':'cMsqcmDYZP1LdKgqRh9L4ZRU9br28yvdmTPwW2YQwVSN9aQiMAoR', 'ret_idx':1}, + {'proto': proto, 'wif': '93HsQEpH75ibaUJYi3QwwiQxnkW4dUuYFPXZxcbcKds7XrqHkY6', 'ret_idx': 1}, + {'proto': proto, 'wif': 'cMsqcmDYZP1LdKgqRh9L4ZRU9br28yvdmTPwW2YQwVSN9aQiMAoR', 'ret_idx': 1}, ) }, 'PrivKey': { 'bad': ( - {'proto':proto, 'wif':1}, - {'proto':proto, 'wif':'1'}, - {'proto':proto, 'wif':'5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb'}, - {'proto':proto, 's':r32,'wif':'5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb'}, - {'proto':proto, 'pubkey_type':'std'}, - {'proto':proto, 's':r32}, - {'proto':proto, 's':r32,'compressed':'yes'}, - {'proto':proto, 's':r32,'compressed':'yes','pubkey_type':'std'}, - {'proto':proto, 's':r32,'compressed':True,'pubkey_type':'nonstd'}, - {'proto':proto, 's':r32+b'x','compressed':True,'pubkey_type':'std'} + {'proto': proto, 'wif': 1}, + {'proto': proto, 'wif': '1'}, + {'proto': proto, 'wif': '5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb'}, + {'proto': proto, 's': r32, 'wif': '5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb'}, + {'proto': proto, 'pubkey_type': 'std'}, + {'proto': proto, 's': r32}, + {'proto': proto, 's': r32, 'compressed': 'yes'}, + {'proto': proto, 's': r32, 'compressed': 'yes', 'pubkey_type': 'std'}, + {'proto': proto, 's': r32, 'compressed': True, 'pubkey_type': 'nonstd'}, + {'proto': proto, 's': r32+b'x', 'compressed': True, 'pubkey_type': 'std'} ), 'good': ( - {'proto':proto, 'wif':'93HsQEpH75ibaUJYi3QwwiQxnkW4dUuYFPXZxcbcKds7XrqHkY6', - 'ret':bytes.fromhex('e0aef965b905a2fedf907151df8e0a6bac832aa697801c51f58bd2ecb4fd381c')}, - {'proto':proto, 'wif':'cMsqcmDYZP1LdKgqRh9L4ZRU9br28yvdmTPwW2YQwVSN9aQiMAoR', - 'ret':bytes.fromhex('08d0ed83b64b68d56fa064be48e2385060ed205be2b1e63cd56d218038c3a05f')}, - {'proto':proto, 's':r32,'compressed':False,'pubkey_type':'std','ret':r32}, - {'proto':proto, 's':r32,'compressed':True,'pubkey_type':'std','ret':r32} + {'proto': proto, 'wif': '93HsQEpH75ibaUJYi3QwwiQxnkW4dUuYFPXZxcbcKds7XrqHkY6', + 'ret': bytes.fromhex('e0aef965b905a2fedf907151df8e0a6bac832aa697801c51f58bd2ecb4fd381c')}, + {'proto': proto, 'wif': 'cMsqcmDYZP1LdKgqRh9L4ZRU9br28yvdmTPwW2YQwVSN9aQiMAoR', + 'ret': bytes.fromhex('08d0ed83b64b68d56fa064be48e2385060ed205be2b1e63cd56d218038c3a05f')}, + {'proto': proto, 's': r32, 'compressed': False, 'pubkey_type': 'std', 'ret': r32}, + {'proto': proto, 's': r32, 'compressed': True, 'pubkey_type': 'std', 'ret': r32} ), }, } diff --git a/test/objtest_py_d/ot_common.py b/test/objtest_py_d/ot_common.py index b1fa1068..67e39afa 100755 --- a/test/objtest_py_d/ot_common.py +++ b/test/objtest_py_d/ot_common.py @@ -9,4 +9,4 @@ test.objtest_py_d.ot_common: shared data for MMGen data objects tests from ..include.common import getrand -r16,r32 = getrand(16),getrand(32) +r16, r32 = getrand(16), getrand(32) diff --git a/test/objtest_py_d/ot_eth_mainnet.py b/test/objtest_py_d/ot_eth_mainnet.py index bb3a02d4..8af6c38f 100755 --- a/test/objtest_py_d/ot_eth_mainnet.py +++ b/test/objtest_py_d/ot_eth_mainnet.py @@ -21,38 +21,38 @@ proto = init_proto(cfg, 'eth', need_amt=True) tests = { 'CoinAddr': { 'arg1': 'addr', - 'good': ( - {'addr':'beadcafe' * 5, 'proto':proto}, + 'good': ( + {'addr': 'beadcafe' * 5, 'proto': proto}, ), - 'bad': ( - {'addr':'aaaaxxxx' * 5, 'proto':proto}, - {'addr':'beadcafe' * 2, 'proto':proto}, - {'addr':'beadcafe' * 6, 'proto':proto}, + 'bad': ( + {'addr': 'aaaaxxxx' * 5, 'proto': proto}, + {'addr': 'beadcafe' * 2, 'proto': proto}, + {'addr': 'beadcafe' * 6, 'proto': proto}, ), }, 'ETHAmt': { - 'bad': ('-3.2','0.1234567891234567891',123,'123L', - {'num':'1','from_decimal':True}, - {'num':1,'from_decimal':True}, + 'bad': ('-3.2', '0.1234567891234567891', 123, '123L', + {'num': '1', 'from_decimal': True}, + {'num': 1, 'from_decimal': True}, ), - 'good': (('123.123456789123456789',Decimal('123.123456789123456789')), - { 'num':Decimal('1.12345678912345678892345'), # rounding - 'from_decimal':True, - 'ret':Decimal('1.123456789123456789')}, - {'num':Decimal('1.234'),'from_decimal':True,'ret':Decimal('1.234')}, - {'num':Decimal('0.0'),'from_decimal':True,'ret':Decimal('0')}, - {'num':1234,'from_unit':'wei','ret':Decimal('0.000000000000001234')}, - {'num':1234,'from_unit':'Mwei','ret':Decimal('0.000000001234')}, + 'good': (('123.123456789123456789', Decimal('123.123456789123456789')), + { 'num': Decimal('1.12345678912345678892345'), # rounding + 'from_decimal': True, + 'ret': Decimal('1.123456789123456789')}, + {'num': Decimal('1.234'), 'from_decimal': True, 'ret': Decimal('1.234')}, + {'num': Decimal('0.0'), 'from_decimal': True, 'ret': Decimal('0')}, + {'num': 1234, 'from_unit': 'wei', 'ret': Decimal('0.000000000000001234')}, + {'num': 1234, 'from_unit': 'Mwei', 'ret': Decimal('0.000000001234')}, ) }, 'ETHNonce': { - 'bad': ('z','я',-1,'-1',0.0,'0.0'), + 'bad': ('z', 'я', -1, '-1', 0.0, '0.0'), 'good': ( - ('0',0),('1',1),('100',100),1,100, - {'n':'0x0','base':16,'ret':0}, - {'n':'0x1','base':16,'ret':1}, - {'n':'0xf','base':16,'ret':15}, - {'n':'0xff','base':16,'ret':255}, + ('0', 0), ('1', 1), ('100', 100), 1, 100, + {'n': '0x0', 'base': 16, 'ret': 0}, + {'n': '0x1', 'base': 16, 'ret': 1}, + {'n': '0xf', 'base': 16, 'ret': 15}, + {'n': '0xff', 'base': 16, 'ret': 255}, ) }, } diff --git a/test/objtest_py_d/ot_ltc_mainnet.py b/test/objtest_py_d/ot_ltc_mainnet.py index 0b4b41d6..605d9e47 100755 --- a/test/objtest_py_d/ot_ltc_mainnet.py +++ b/test/objtest_py_d/ot_ltc_mainnet.py @@ -11,69 +11,69 @@ from decimal import Decimal from mmgen.amt import LTCAmt from mmgen.addr import CoinAddr -from mmgen.key import WifKey,PrivKey +from mmgen.key import WifKey, PrivKey from mmgen.protocol import init_proto -from .ot_common import r16,r32 +from .ot_common import r16, r32 from ..include.common import cfg -proto = init_proto( cfg, 'ltc', need_amt=True ) +proto = init_proto(cfg, 'ltc', need_amt=True) tests = { 'LTCAmt': { - 'bad': ('-3.2','0.123456789',123,'123L','88000000',80999999.12345678), - 'good': (('80999999.12345678',Decimal('80999999.12345678')),) + 'bad': ('-3.2', '0.123456789', 123, '123L', '88000000', 80999999.12345678), + 'good': (('80999999.12345678', Decimal('80999999.12345678')),) }, 'CoinAddr': { - 'bad': ( - {'addr':1, 'proto':proto}, - {'addr':'x', 'proto':proto}, - {'addr':'я', 'proto':proto}, + 'bad': ( + {'addr': 1, 'proto': proto}, + {'addr': 'x', 'proto': proto}, + {'addr': 'я', 'proto': proto}, ), - 'good': ( - {'addr':'LXYx4j8PDGE8GEwDFnEQhcLyHFGsRxSJwt', 'proto':proto}, - {'addr':'MEnuCzUGHaQx9fK5WYvLwR1NK4SAo8HmSr', 'proto':proto}, + 'good': ( + {'addr': 'LXYx4j8PDGE8GEwDFnEQhcLyHFGsRxSJwt', 'proto': proto}, + {'addr': 'MEnuCzUGHaQx9fK5WYvLwR1NK4SAo8HmSr', 'proto': proto}, ), }, 'WifKey': { 'bad': ( - {'proto':proto, 'wif':1}, - {'proto':proto, 'wif':[]}, - {'proto':proto, 'wif':'\0'}, - {'proto':proto, 'wif':'\1'}, - {'proto':proto, 'wif':'я'}, - {'proto':proto, 'wif':'g'}, - {'proto':proto, 'wif':'gg'}, - {'proto':proto, 'wif':'FF'}, - {'proto':proto, 'wif':'f00'}, - {'proto':proto, 'wif':r16.hex()}, - {'proto':proto, 'wif':'2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN'}, + {'proto': proto, 'wif': 1}, + {'proto': proto, 'wif': []}, + {'proto': proto, 'wif': '\0'}, + {'proto': proto, 'wif': '\1'}, + {'proto': proto, 'wif': 'я'}, + {'proto': proto, 'wif': 'g'}, + {'proto': proto, 'wif': 'gg'}, + {'proto': proto, 'wif': 'FF'}, + {'proto': proto, 'wif': 'f00'}, + {'proto': proto, 'wif': r16.hex()}, + {'proto': proto, 'wif': '2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN'}, ), 'good': ( - {'proto':proto, 'wif':'6udBAGS6B9RfGyvEQDkVDsWy3Kqv9eTULqtEfVkJtTJyHdLvojw', 'ret_idx':1}, - {'proto':proto, 'wif':'T7kCSp5E71jzV2zEJW4q5qU1SMB5CSz8D9VByxMBkamv1uM3Jjca', 'ret_idx':1}, + {'proto': proto, 'wif': '6udBAGS6B9RfGyvEQDkVDsWy3Kqv9eTULqtEfVkJtTJyHdLvojw', 'ret_idx': 1}, + {'proto': proto, 'wif': 'T7kCSp5E71jzV2zEJW4q5qU1SMB5CSz8D9VByxMBkamv1uM3Jjca', 'ret_idx': 1}, ) }, 'PrivKey': { 'bad': ( - {'proto':proto, 'wif':1}, - {'proto':proto, 'wif':'1'}, - {'proto':proto, 'wif':'cMsqcmDYZP1LdKgqRh9L4ZRU9br28yvdmTPwW2YQwVSN9aQiMAoR'}, - {'proto':proto, 's':r32,'wif':'6ufJhtQQiRYA3w2QvDuXNXuLgPFp15i3HR1Wp8An2mx1JnhhJAh'}, - {'proto':proto, 'pubkey_type':'std'}, - {'proto':proto, 's':r32}, - {'proto':proto, 's':r32,'compressed':'yes'}, - {'proto':proto, 's':r32,'compressed':'yes','pubkey_type':'std'}, - {'proto':proto, 's':r32,'compressed':True,'pubkey_type':'nonstd'}, - {'proto':proto, 's':r32+b'x','compressed':True,'pubkey_type':'std'} + {'proto': proto, 'wif': 1}, + {'proto': proto, 'wif': '1'}, + {'proto': proto, 'wif': 'cMsqcmDYZP1LdKgqRh9L4ZRU9br28yvdmTPwW2YQwVSN9aQiMAoR'}, + {'proto': proto, 's': r32, 'wif': '6ufJhtQQiRYA3w2QvDuXNXuLgPFp15i3HR1Wp8An2mx1JnhhJAh'}, + {'proto': proto, 'pubkey_type': 'std'}, + {'proto': proto, 's': r32}, + {'proto': proto, 's': r32, 'compressed': 'yes'}, + {'proto': proto, 's': r32, 'compressed': 'yes', 'pubkey_type': 'std'}, + {'proto': proto, 's': r32, 'compressed': True, 'pubkey_type': 'nonstd'}, + {'proto': proto, 's': r32+b'x', 'compressed': True, 'pubkey_type': 'std'} ), 'good': ( - {'proto':proto, 'wif':'6ufJhtQQiRYA3w2QvDuXNXuLgPFp15i3HR1Wp8An2mx1JnhhJAh', - 'ret':bytes.fromhex('470a974ffca9fca1299b706b09142077bea3acbab6d6480b87dbba79d5fd279b')}, - {'proto':proto, 'wif':'T41Fm7J3mtZLKYPMCLVSFARz4QF8nvSDhLAfW97Ds56Zm9hRJgn8', - 'ret':bytes.fromhex('1c6feab55a4c3b4ad1823d4ecacd1565c64228c01828cf44fb4db1e2d82c3d56')}, - {'proto':proto, 's':r32,'compressed':False,'pubkey_type':'std','ret':r32}, - {'proto':proto, 's':r32,'compressed':True,'pubkey_type':'std','ret':r32} + {'proto': proto, 'wif': '6ufJhtQQiRYA3w2QvDuXNXuLgPFp15i3HR1Wp8An2mx1JnhhJAh', + 'ret': bytes.fromhex('470a974ffca9fca1299b706b09142077bea3acbab6d6480b87dbba79d5fd279b')}, + {'proto': proto, 'wif': 'T41Fm7J3mtZLKYPMCLVSFARz4QF8nvSDhLAfW97Ds56Zm9hRJgn8', + 'ret': bytes.fromhex('1c6feab55a4c3b4ad1823d4ecacd1565c64228c01828cf44fb4db1e2d82c3d56')}, + {'proto': proto, 's': r32, 'compressed': False, 'pubkey_type': 'std', 'ret': r32}, + {'proto': proto, 's': r32, 'compressed': True, 'pubkey_type': 'std', 'ret': r32} ) }, } diff --git a/test/objtest_py_d/ot_ltc_testnet.py b/test/objtest_py_d/ot_ltc_testnet.py index e53eb7e9..db9fefc4 100755 --- a/test/objtest_py_d/ot_ltc_testnet.py +++ b/test/objtest_py_d/ot_ltc_testnet.py @@ -8,65 +8,65 @@ test.objtest_py_d.ot_ltc_testnet: LTC testnet test vectors for MMGen data object """ from mmgen.addr import CoinAddr -from mmgen.key import WifKey,PrivKey +from mmgen.key import WifKey, PrivKey from mmgen.protocol import init_proto -from .ot_common import r16,r32 +from .ot_common import r16, r32 from ..include.common import cfg -proto = init_proto( cfg, 'ltc', network='testnet', need_amt=True ) +proto = init_proto(cfg, 'ltc', network='testnet', need_amt=True) tests = { 'CoinAddr': { - 'bad': ( - {'addr':1, 'proto':proto}, - {'addr':'x', 'proto':proto}, - {'addr':'я', 'proto':proto}, + 'bad': ( + {'addr': 1, 'proto': proto}, + {'addr': 'x', 'proto': proto}, + {'addr': 'я', 'proto': proto}, ), - 'good': ( - {'addr':'n2D3joAy3yE5fqxUeCp38X6uPUcVn7EFw9', 'proto':proto}, - {'addr':'QN59YbnHsPQcbKWSq9PmTpjrhBnHGQqRmf', 'proto':proto}, + 'good': ( + {'addr': 'n2D3joAy3yE5fqxUeCp38X6uPUcVn7EFw9', 'proto': proto}, + {'addr': 'QN59YbnHsPQcbKWSq9PmTpjrhBnHGQqRmf', 'proto': proto}, ), }, 'WifKey': { 'bad': ( - {'proto':proto, 'wif':1}, - {'proto':proto, 'wif':[]}, - {'proto':proto, 'wif':'\0'}, - {'proto':proto, 'wif':'\1'}, - {'proto':proto, 'wif':'я'}, - {'proto':proto, 'wif':'g'}, - {'proto':proto, 'wif':'gg'}, - {'proto':proto, 'wif':'FF'}, - {'proto':proto, 'wif':'f00'}, - {'proto':proto, 'wif':r16.hex()}, - {'proto':proto, 'wif':'2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN'}, + {'proto': proto, 'wif': 1}, + {'proto': proto, 'wif': []}, + {'proto': proto, 'wif': '\0'}, + {'proto': proto, 'wif': '\1'}, + {'proto': proto, 'wif': 'я'}, + {'proto': proto, 'wif': 'g'}, + {'proto': proto, 'wif': 'gg'}, + {'proto': proto, 'wif': 'FF'}, + {'proto': proto, 'wif': 'f00'}, + {'proto': proto, 'wif': r16.hex()}, + {'proto': proto, 'wif': '2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN'}, ), 'good': ( - {'proto':proto, 'wif':'936Fd4qs3Zy2ZiYHH7vZ3UpT23KtCAiGiG2xBTkjHo7jE9aWA2f', 'ret_idx':1}, - {'proto':proto, 'wif':'cQY3EumdaSNuttvDSUuPdiMYLyw8aVmYfFqxo9kdPuWbJBN4Ny66', 'ret_idx':1}, + {'proto': proto, 'wif': '936Fd4qs3Zy2ZiYHH7vZ3UpT23KtCAiGiG2xBTkjHo7jE9aWA2f', 'ret_idx': 1}, + {'proto': proto, 'wif': 'cQY3EumdaSNuttvDSUuPdiMYLyw8aVmYfFqxo9kdPuWbJBN4Ny66', 'ret_idx': 1}, ) }, 'PrivKey': { 'bad': ( - {'proto':proto, 'wif':1}, - {'proto':proto, 'wif':'1'}, - {'proto':proto, 'wif':'5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb'}, - {'proto':proto, 's':r32,'wif':'5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb'}, - {'proto':proto, 'pubkey_type':'std'}, - {'proto':proto, 's':r32}, - {'proto':proto, 's':r32,'compressed':'yes'}, - {'proto':proto, 's':r32,'compressed':'yes','pubkey_type':'std'}, - {'proto':proto, 's':r32,'compressed':True,'pubkey_type':'nonstd'}, - {'proto':proto, 's':r32+b'x','compressed':True,'pubkey_type':'std'} + {'proto': proto, 'wif': 1}, + {'proto': proto, 'wif': '1'}, + {'proto': proto, 'wif': '5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb'}, + {'proto': proto, 's': r32, 'wif': '5KXEpVzjWreTcQoG5hX357s1969MUKNLuSfcszF6yu84kpsNZKb'}, + {'proto': proto, 'pubkey_type': 'std'}, + {'proto': proto, 's': r32}, + {'proto': proto, 's': r32, 'compressed': 'yes'}, + {'proto': proto, 's': r32, 'compressed': 'yes', 'pubkey_type': 'std'}, + {'proto': proto, 's': r32, 'compressed': True, 'pubkey_type': 'nonstd'}, + {'proto': proto, 's': r32+b'x', 'compressed': True, 'pubkey_type': 'std'} ), 'good': ( - {'proto':proto, 'wif':'92iqzh6NqiKawyB1ronw66YtEHrU4rxRJ5T4aHniZqvuSVZS21f', - 'ret':bytes.fromhex('95b2aa7912550eacdd3844dcc14bee08ce7bc2434ad4858beb136021e945afeb')}, - {'proto':proto, 'wif':'cSaJAXBAm9ooHpVJgoxqjDG3AcareFy29Cz8mhnNTRijjv2HLgta', - 'ret':bytes.fromhex('94fa8b90c11fea8fb907c9376b919534b0a75b9a9621edf71a78753544b4101c')}, - {'proto':proto, 's':r32,'compressed':False,'pubkey_type':'std','ret':r32}, - {'proto':proto, 's':r32,'compressed':True,'pubkey_type':'std','ret':r32} + {'proto': proto, 'wif': '92iqzh6NqiKawyB1ronw66YtEHrU4rxRJ5T4aHniZqvuSVZS21f', + 'ret': bytes.fromhex('95b2aa7912550eacdd3844dcc14bee08ce7bc2434ad4858beb136021e945afeb')}, + {'proto': proto, 'wif': 'cSaJAXBAm9ooHpVJgoxqjDG3AcareFy29Cz8mhnNTRijjv2HLgta', + 'ret': bytes.fromhex('94fa8b90c11fea8fb907c9376b919534b0a75b9a9621edf71a78753544b4101c')}, + {'proto': proto, 's': r32, 'compressed': False, 'pubkey_type': 'std', 'ret': r32}, + {'proto': proto, 's': r32, 'compressed': True, 'pubkey_type': 'std', 'ret': r32} ) }, }