Handle idempotence in Address()

This commit is contained in:
Michał Sałaban 2017-11-29 04:37:01 +01:00
parent 7200d980d9
commit 176ab69638
2 changed files with 19 additions and 0 deletions

View File

@ -5,6 +5,7 @@ from . import base58
class Address(object):
def __init__(self, address):
address = str(address)
if len(address) != 95:
raise ValueError("Address must be 95 characters long, is %d" % len(address))
self._decode(address)
@ -47,6 +48,7 @@ class Address(object):
class IntegratedAddress(Address):
def __init__(self, address):
address = str(address)
if len(address) != 106:
raise ValueError("Integrated address must be 106 characters long, is %d" % len(address))
self._decode(address)
@ -62,6 +64,7 @@ class IntegratedAddress(Address):
def address(addr):
addr = str(addr)
if len(addr) == 95:
return Address(addr)
elif len(addr) == 106:

View File

@ -43,6 +43,22 @@ class Tests(object):
self.assertEqual(ia2.is_testnet(), self.testnet)
self.assertEqual(ia2.get_base_address(), a)
def test_idempotence(self):
a = Address(self.addr)
a_idem = Address(a)
self.assertEqual(a, a_idem)
a_idem = Address(str(a))
self.assertEqual(a, a_idem)
a_idem = address(a)
self.assertEqual(a, a_idem)
ia = IntegratedAddress(self.iaddr)
ia_idem = IntegratedAddress(ia)
self.assertEqual(ia, ia_idem)
ia_idem = IntegratedAddress(str(ia))
self.assertEqual(ia, ia_idem)
ia_idem = address(ia)
self.assertEqual(ia, ia_idem)
class AddressTestCase(unittest.TestCase, Tests):
addr = '43aeKax1ts4BoEbSyzKVbbDRmc8nsnpZLUpQBYvhUxs3KVrodnaFaBEQMDp69u4VaiEG3LSQXA6M61mXPrztCLuh7PFUAmd'