12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #!/usr/bin/env python3
- """
- test.unit_tests_d.ut_devtools: devtools unit tests for the MMGen suite
- """
- import os,json
- from mmgen.devtools import *
- from . import unit_tests_base
- textA = """
- def main():
- a = 1
- b = 2
- c = 3
- """.lstrip()
- textB = """
- def main():
- a = 1
- b = 0
- c = 3
- """.lstrip()
- jsonA = open('test/ref/ethereum/tracking-wallet-v1.json').read()
- dataB = json.loads(jsonA)
- dataB['coin'] = 'ETC'
- jsonB = json.dumps(dataB)
- text_data = (
- (textA, textB, 'a/main.py', 'b/main.py', False, 'text: one line difference'),
- ('', textB, 'a/main.py', 'b/main.py', False, 'text: first file empty'),
- (textA, textA, 'a/main.py', 'b/main.py', False, 'text: identical files'),
- ('', '', 'a/empty.txt', 'b/empty.txt', False, 'text: empty files'),
- )
- json_data = (
- (jsonA, jsonB, 'a/data.json', 'b/data.json', True, 'json: one difference'),
- ('{}', jsonB, 'a/data.json', 'b/data.json', True, 'json: first file empty'),
- (jsonA, jsonA, 'a/data.json', 'b/data.json', True, 'json: identical files'),
- ('{}', '{}', 'a/data.json', 'b/data.json', True, 'json: empty files'),
- )
- def print_hdr(hdr):
- print('{a} {b} {c}'.format(
- a = '-' * ((78 - len(hdr))//2),
- b = hdr,
- c = '-' * ((78 - len(hdr))//2 + (len(hdr) % 2)) ))
- # TODO: add data checks
- class unit_tests(unit_tests_base):
- def _pre_subtest(self,name,subname,ut):
- self._silence()
- def _post_subtest(self,name,subname,ut):
- print('-' * 80 + '\n')
- self._end_silence()
- def diff(self,name,ut):
- for data in text_data + json_data:
- print_hdr(data[-1])
- print_diff(*data[:-1])
- return True
- def ndiff(self,name,ut):
- for data in text_data:
- print_hdr(data[-1])
- print('\n'.join(get_ndiff(*data[:2])))
- return True
- def stack_trace(self,name,ut):
- print_hdr('stack trace')
- print_stack_trace('Test',fh_list=[open(os.devnull,'w')],trim=0)
- return True
- def obj_pmsg(self,name,ut):
- from mmgen.protocol import init_proto
- from mmgen.seed import Seed
- from mmgen.addrlist import AddrList
- print_hdr('MMGenObject.pmsg()')
- AddrList(
- proto = init_proto('btc'),
- seed = Seed(seed_bin=bytes.fromhex('bead'*16)),
- addr_idxs = '1',
- mmtype = 'B',
- skip_chksum = True ).pmsg()
- return True
|