123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #!/usr/bin/env python3
- """
- test.unit_tests_d.ut_addrlist: address list unit tests for the MMGen suite
- """
- from mmgen.color import blue
- from mmgen.util import msg
- from mmgen.seed import Seed
- from mmgen.addr import MMGenAddrType
- from mmgen.addrlist import AddrIdxList,AddrList,KeyList,KeyAddrList,ViewKeyAddrList
- from mmgen.passwdlist import PasswordList
- from mmgen.protocol import init_proto
- from ..include.common import cfg,qmsg,vmsg
- def do_test(
- list_type,
- chksum,
- idx_spec = None,
- pw_id_str = None,
- add_kwargs = None,
- coin = None,
- addrtype = None):
- qmsg(blue(f'Testing {list_type.__name__}'))
- proto = init_proto( cfg, coin or 'btc' )
- seed = Seed(cfg,seed_bin=bytes.fromhex('feedbead'*8))
- mmtype = MMGenAddrType(proto, addrtype or 'C')
- idxs = AddrIdxList(idx_spec or '1-3')
- if cfg.verbose:
- debug_addrlist_save = cfg.debug_addrlist
- cfg.debug_addrlist = True
- kwargs = {
- 'seed': seed,
- 'pw_idxs': idxs,
- 'pw_id_str': pw_id_str,
- 'pw_fmt': 'b58',
- } if pw_id_str else {
- 'seed': seed,
- 'addr_idxs': idxs,
- 'mmtype': mmtype,
- }
- if add_kwargs:
- kwargs.update(add_kwargs)
- al = list_type( cfg, proto, **kwargs )
- al.file.format()
- qmsg(f'Filename: {al.file.filename}\n')
- vmsg(f'------------\n{al.file.fmt_data}\n------------')
- if chksum:
- assert al.chksum == chksum, f'{al.chksum} != {chksum}'
- if cfg.verbose:
- cfg.debug_addrlist = debug_addrlist_save
- return True
- class unit_tests:
- altcoin_deps = ('keyaddr_xmr','viewkeyaddr')
- def idxlist(self,name,ut):
- for i,o in (
- ('99,88-102,1-3,4,9,818,444-445,816', '1-4,9,88-102,444-445,816,818'),
- ('99,88-99,100,102,4-7,9,818,444-445,816,1', '1,4-7,9,88-100,102,444-445,816,818'),
- ('8', '8'),
- ('2-4', '2-4'),
- ('1,2-4', '1-4'),
- ('2-4,1-9,9,1,8', '1-9'),
- ('2-4,1', '1-4'),
- ('2-2', '2'),
- ('2,2', '2'),
- ('2-3', '2-3'),
- ('2,3', '2-3'),
- ('3,2', '2-3'),
- ('2,4', '2,4'),
- ('', ''),
- ):
- l = AddrIdxList(i)
- if cfg.verbose:
- msg(f'list: {list(l)}\nin: {i}\nout: {o}\n')
- assert l.id_str == o, f'{l.id_str} != {o}'
- return True
- def addr(self,name,ut):
- return (
- do_test(AddrList,'BCE8 082C 0973 A525','1-3') and
- do_test(AddrList,'88FA B04B A380 C1CB','199999,99-101,77-78,7,3,2-9')
- )
- def key(self,name,ut):
- return do_test(KeyList,None)
- def keyaddr(self,name,ut):
- return do_test(KeyAddrList,'4A36 AA65 8C2B 7C35')
- def keyaddr_xmr(self,name,ut):
- return do_test(KeyAddrList,'AAA2 BA69 17FC 9A88',coin='XMR',addrtype='M')
- def viewkeyaddr(self,name,ut):
- return do_test(ViewKeyAddrList,'C122 2E58 DC28 D6AE',coin='XMR',addrtype='M')
- def passwd(self,name,ut):
- return do_test(PasswordList,'FF4A B716 4513 8F8F',pw_id_str='foo')
- def passwd_bip39(self,name,ut):
- return do_test(PasswordList,'C3A8 B2B2 1AA1 FB40',pw_id_str='foo',add_kwargs={'pw_fmt':'bip39'})
|