pylibrlp

Python3 wrapper for librlp
git clone git://git.defalsify.org/pylibrlp.git
Log | Files | Refs | LICENSE

commit 3f88f97cacd9f79875fbf1155a08f61b93db19d4
parent 4bf1f2efa9c9a091d34779be3e014e3c306b704f
Author: nolash <dev@holbrook.no>
Date:   Tue, 15 Jun 2021 13:07:54 +0200

Return value contingent on input type

Diffstat:
Mpylibrlp/encoder.py | 7++++++-
Mtests/test_rlp_decoder.py | 12+++++++-----
Atests/test_rlp_reciprocal.py | 42++++++++++++++++++++++++++++++++++++++++++
3 files changed, 55 insertions(+), 6 deletions(-)

diff --git a/pylibrlp/encoder.py b/pylibrlp/encoder.py @@ -102,6 +102,7 @@ class RLPEncoder: return (frame, stack) def decode(self, v, size_hint=None): + if size_hint == None: size_hint = sys.getsizeof(v) @@ -118,4 +119,8 @@ class RLPEncoder: (frame, stack) = self.decode_item(frame, stack) l = self.backend.depth - return frame[0] + if isinstance(v, str): + return frame[0] + else: + print('frame {}'.format(frame)) + return frame diff --git a/tests/test_rlp_decoder.py b/tests/test_rlp_decoder.py @@ -37,14 +37,16 @@ class TestRlpDecoder(unittest.TestCase): bytes.fromhex('01'), bytes.fromhex('3b9aca00'), bytes.fromhex('5208'), - bytes.fromhex('3102ac39709f178c0f5e87d05908609d8e09d820'), + bytes.fromhex('16CfB63467452eCf15E9d6aC48E9B4DA628716C4'), bytes.fromhex('0400'), bytes.fromhex('666f6f'), - bytes.fromhex('01'), - os.urandom(32), - os.urandom(32), + bytes.fromhex('26'), + bytes.fromhex('d825b2e797550c144f5e8acae452bd81e1947fdcbc3430240e44e967b82181f4'), + bytes.fromhex('30856f4a51a8e9464b506490f4c7d391c386efe1134cabb546dfa4260f801c6a'), ] - self.assertEqual(v, t) + for i in range(len(t)): + logg.debug('checking {}: {} {}'.format(i, v[i], t[i])) + self.assertEqual(v[i], t[i]) if __name__ == '__main__': diff --git a/tests/test_rlp_reciprocal.py b/tests/test_rlp_reciprocal.py @@ -0,0 +1,42 @@ +# standard imports +import os +import unittest +import logging +import ctypes + +# local imports +from pylibrlp import RLPEncoder + +logging.basicConfig(level=logging.DEBUG) +logg = logging.getLogger() + + + +class TestRlpEncoder(unittest.TestCase): + + def setUp(self): + self.encoder = RLPEncoder(1024) + + + def test_encode_multiple_adjacent(self): + v = [ + bytes.fromhex('01'), + bytes.fromhex('3b9aca00'), + bytes.fromhex('5208'), + bytes.fromhex('3102ac39709f178c0f5e87d05908609d8e09d820'), + bytes.fromhex('0400'), + bytes.fromhex('666f6f'), + bytes.fromhex('01'), + os.urandom(32), + os.urandom(32), + ] + b = self.encoder.encode(v) + print(b.hex()) + + o = self.encoder.decode(b) + for e in o: + print(e.hex()) + + +if __name__ == '__main__': + unittest.main()