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:
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()