tool_api_test.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/env python3
  2. #
  3. # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
  4. # Copyright (C)2013-2020 The MMGen Project <mmgen@tuta.io>
  5. """
  6. tool_api_test.py: test the MMGen suite tool API
  7. """
  8. import sys,os
  9. os.chdir(os.path.dirname(os.path.dirname(os.path.abspath(os.path.dirname(sys.argv[0])))))
  10. sys.path[0] = os.curdir
  11. def check_equal(a,b):
  12. assert a == b, f'{a} != {b}'
  13. def msg(*args,**kwargs):
  14. print(*args,**kwargs,file=sys.stdout)
  15. def init_coin(t,coinsym,network,addrtype,triplet):
  16. t.init_coin(coinsym,network)
  17. t.addrtype = addrtype
  18. check_equal(type(t.addrtype).__name__,'MMGenAddrType')
  19. check_equal(f'{t.coin} {t.proto.cls_name} {t.addrtype}', triplet)
  20. msg('\ncoin/proto/type:',triplet)
  21. def run_test():
  22. key_bytes = bytes.fromhex('deadbeef' * 8)
  23. from mmgen.tool import tool_api
  24. tool = tool_api()
  25. tool.coins
  26. tool.print_addrtypes()
  27. check_equal(f'{tool.coin} {tool.proto.cls_name} {tool.addrtype}', 'BTC Bitcoin L' )
  28. tool.usr_randchars # getter
  29. tool.usr_randchars = 0 # setter
  30. check_equal(tool.usr_randchars,0)
  31. init_coin(tool,'xmr','mainnet','M','XMR Monero M')
  32. msg('\n'.join(tool.randpair()))
  33. init_coin(tool,'etc','mainnet','E','ETC EthereumClassic E')
  34. msg('\n'.join(tool.randpair()))
  35. init_coin(tool,'ltc','regtest','bech32','LTC LitecoinRegtest B')
  36. wif,addr = tool.randpair()
  37. from mmgen.obj import PrivKey,CoinAddr
  38. msg('wif:',PrivKey(proto=tool.proto,wif=wif).wif)
  39. msg('addr:',CoinAddr(proto=tool.proto,addr=addr))
  40. wif = PrivKey(proto=tool.proto,s=key_bytes,compressed=True,pubkey_type='std').wif
  41. addr = tool.wif2addr(wif)
  42. msg('wif:',PrivKey(proto=tool.proto,wif=wif).wif)
  43. msg('addr:',CoinAddr(proto=tool.proto,addr=addr))
  44. addr_chk = tool.privhex2addr(key_bytes.hex())
  45. check_equal(addr,addr_chk)
  46. check_equal(wif,'cV3ZRqf8PhyfiFwtJfkvGu2qmBsazE1wXoA2A16S3nixb3BTvvVx')
  47. check_equal(addr,'rltc1qvmqas4maw7lg9clqu6kqu9zq9cluvllnz4kj9y')
  48. init_coin(tool,'zec','mainnet','Z','ZEC Zcash Z')
  49. wif = PrivKey(proto=tool.proto,s=key_bytes,compressed=True,pubkey_type='zcash_z').wif
  50. addr = tool.wif2addr(wif)
  51. msg('wif:',wif)
  52. msg('addr:',CoinAddr(proto=tool.proto,addr=addr))
  53. addr_chk = tool.privhex2addr(key_bytes.hex())
  54. wif_chk = PrivKey(proto=tool.proto,wif=wif).wif
  55. check_equal(addr,addr_chk)
  56. check_equal(wif,wif_chk)
  57. check_equal(
  58. addr,
  59. 'zchFELwBxqsAubsLQ8yZgPCDDGukjXJssgCbiTPwFNmFwn9haLnDatzfhLdZzJT4PcU4o2yr92B52UFirUzEdF6ZYM2gBkM' )
  60. run_test()