From 0baf4ba395b3496b9f21f290d268c25ee670be5e Mon Sep 17 00:00:00 2001 From: inso <insomniak.fr@gmaiL.com> Date: Tue, 6 Sep 2016 08:36:51 +0200 Subject: [PATCH] Add converters from string for BlockUID --- duniterpy/documents/__init__.py | 2 +- duniterpy/documents/block.py | 11 +++++++++++ tests/documents/test_block.py | 15 ++++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/duniterpy/documents/__init__.py b/duniterpy/documents/__init__.py index a976b3a6..97684351 100644 --- a/duniterpy/documents/__init__.py +++ b/duniterpy/documents/__init__.py @@ -1,4 +1,4 @@ -from .block import Block, BlockUID +from .block import Block, BlockUID, block_uid from .certification import SelfCertification, Certification, Revocation from .membership import Membership from .peer import Endpoint, BMAEndpoint, UnknownEndpoint, Peer diff --git a/duniterpy/documents/block.py b/duniterpy/documents/block.py index ebafdcd8..5cf08ee6 100644 --- a/duniterpy/documents/block.py +++ b/duniterpy/documents/block.py @@ -7,6 +7,17 @@ from .constants import pubkey_regex, block_id_regex, block_hash_regex import re +def block_uid(value): + if isinstance(value, BlockUID): + return value + elif isinstance(value, str): + return BlockUID.from_str(value) + elif value is None: + return BlockUID.empty() + else: + raise TypeError("Cannot convert {0} to BlockUID".format(type(value))) + + class BlockUID: """ A simple block id diff --git a/tests/documents/test_block.py b/tests/documents/test_block.py index 7411ebb1..015d5e2c 100644 --- a/tests/documents/test_block.py +++ b/tests/documents/test_block.py @@ -4,7 +4,7 @@ Created on 12 déc. 2014 @author: inso ''' import unittest -from duniterpy.documents.block import Block, BlockUID +from duniterpy.documents.block import Block, BlockUID, block_uid raw_block = """Version: 2 Type: Block @@ -518,6 +518,19 @@ class Test_Block(unittest.TestCase): from_rendered_raw = block.from_signed_raw(rendered_raw) self.assertEqual(from_rendered_raw.signed_raw(), negative_issuers_frame_var) + def test_block_uid_converter(self): + buid = block_uid("1345-0000338C775613399FA508A8F8B22EB60F525884730639E2A707299E373F43C0") + self.assertEqual(buid.number, 1345) + self.assertEqual(buid.sha_hash, "0000338C775613399FA508A8F8B22EB60F525884730639E2A707299E373F43C0") + + def test_block_uid_converter_error(self): + with self.assertRaises(TypeError): + buid = block_uid(1235654) + + def test_block_uid_no_convert(self): + buid = block_uid(BlockUID(1345, "0000338C775613399FA508A8F8B22EB60F525884730639E2A707299E373F43C0")) + self.assertEqual(buid.number, 1345) + self.assertEqual(buid.sha_hash, "0000338C775613399FA508A8F8B22EB60F525884730639E2A707299E373F43C0") if __name__ == '__main__': unittest.main() -- GitLab