|
@@ -0,0 +1,84 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+"""
|
|
|
+test/unit_tests_d/ut_addrparse: address parsing tests for the MMGen suite
|
|
|
+"""
|
|
|
+
|
|
|
+from mmgen.common import *
|
|
|
+
|
|
|
+vectors = {
|
|
|
+ 'btc_mainnet': [
|
|
|
+ {'std': '1C5VPtgq9xQ6AcTgMAR3J6GDrs72HC4pS1'},
|
|
|
+ {'std': '3AhjTiWHhVJAi1s5CfKMcLzYps12x3gZhg'},
|
|
|
+ {'std': 'bc1q6pqnfwwakuuejpm9w52ds342f9d5u36v0qnz7c'}
|
|
|
+ ],
|
|
|
+ 'ltc_mainnet': [
|
|
|
+ {'std': 'LUbHQNYoy23RByq4dKQotLA4ugk9FhpAMT'},
|
|
|
+ {'std': 'MCoZrHYPqYKqvpiwyzzqf3EPxF5no6puEf'},
|
|
|
+ {'std': 'ltc1qvmqas4maw7lg9clqu6kqu9zq9cluvllnst5pxs'}
|
|
|
+ ],
|
|
|
+ 'xmr_mainnet': [
|
|
|
+ { # ut_xmrseed.vectors[0]:
|
|
|
+'std': '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm',
|
|
|
+ },{
|
|
|
+'std': '46r4nYSevkfBUMhuykdK3gQ98XDqDTYW1hNLaXNvjpsJaSbNtdXh1sKMsdVgqkaihChAzEy29zEDPMR3NHQvGoZCLGwTerK',
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ 'zec_mainnet': [
|
|
|
+ {'std': 't1KQYLBvjpmcQuATommo6gx2QTQDLPikB8Q'},
|
|
|
+ {'std': 'zceQDpyNwek7dKqF5ZuFGj7YrNVxh7X1aPkrVxDLVxWSiZAFDEuy5C7XNV8VhyZ3ghTPQ61xjCGiyLT3wqpiN1Yi6mdmaCq'},
|
|
|
+ ],
|
|
|
+ 'eth_mainnet': [
|
|
|
+ {'std': '7e5f4552091a69125d5dfcb7b8c2659029395bdf'},
|
|
|
+ ],
|
|
|
+}
|
|
|
+
|
|
|
+def test_network(proto,addrs):
|
|
|
+
|
|
|
+ def check_equal(a,b):
|
|
|
+ assert a == b, f'{a.hex()} != {b.hex()}'
|
|
|
+
|
|
|
+ def check_bytes(addr):
|
|
|
+ if addr.parsed.ver_bytes is not None:
|
|
|
+ check_equal(
|
|
|
+ addr.parsed.ver_bytes,
|
|
|
+ proto.addr_fmt_to_ver_bytes.get(addr.addr_fmt) )
|
|
|
+ check_equal(
|
|
|
+ addr.parsed.data,
|
|
|
+ addr.bytes )
|
|
|
+
|
|
|
+ def fmt_addr_data(addr):
|
|
|
+ return pp_fmt({k:(v.hex() if isinstance(v,bytes) else v) for k,v in addr.parsed._asdict().items()})
|
|
|
+
|
|
|
+ def print_info(addr):
|
|
|
+ vmsg('\n{}\n{}\n{}'.format(
|
|
|
+ yellow(addr.addr_fmt),
|
|
|
+ cyan(addr),
|
|
|
+ fmt_addr_data(addr)))
|
|
|
+
|
|
|
+ msg_r(f'Testing {proto.coin} address parsing...')
|
|
|
+ vmsg('')
|
|
|
+
|
|
|
+ from mmgen.addr import CoinAddr
|
|
|
+
|
|
|
+ for addr in addrs:
|
|
|
+ a1 = CoinAddr(proto,addr['std'])
|
|
|
+ print_info(a1)
|
|
|
+ check_bytes(a1)
|
|
|
+
|
|
|
+ msg('OK')
|
|
|
+ vmsg('')
|
|
|
+
|
|
|
+
|
|
|
+class unit_test(object):
|
|
|
+
|
|
|
+ def run_test(self,name,ut):
|
|
|
+
|
|
|
+ from mmgen.protocol import init_proto
|
|
|
+
|
|
|
+ for net_id,addrs in vectors.items():
|
|
|
+ coin,network = net_id.split('_')
|
|
|
+ test_network(
|
|
|
+ init_proto(coin,network=network),
|
|
|
+ addrs )
|
|
|
+
|
|
|
+ return True
|