From 176ab69638e5b5e45f7f465e5c6eb7228ad52220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Sa=C5=82aban?= Date: Wed, 29 Nov 2017 04:37:01 +0100 Subject: [PATCH] Handle idempotence in Address() --- monero/address.py | 3 +++ tests/address.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/monero/address.py b/monero/address.py index 186f7b3..1e377ce 100644 --- a/monero/address.py +++ b/monero/address.py @@ -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: diff --git a/tests/address.py b/tests/address.py index 88b1921..0fe7856 100644 --- a/tests/address.py +++ b/tests/address.py @@ -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'