construct: Add Construct for variable-length int 'GreedyInteger'
We have a number of integers with variable-length encoding, so
add a Construct for this. Naming inspired by GreedyBytes.
Related to https://github.com/construct/construct/issues/962
Change-Id: Ic6049b74ea3705fda24855f34b4a1d5f2c9327f7
diff --git a/tests/test_construct.py b/tests/test_construct.py
new file mode 100644
index 0000000..ad409b1
--- /dev/null
+++ b/tests/test_construct.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python3
+
+import unittest
+from pySim.construct import GreedyInteger
+
+tests = [
+ ( b'\x80', 0x80 ),
+ ( b'\x80\x01', 0x8001 ),
+ ( b'\x80\x00\x01', 0x800001 ),
+ ( b'\x80\x23\x42\x01', 0x80234201 ),
+ ]
+
+class TestGreedyInt(unittest.TestCase):
+ def test_GreedyInt_decoder(self):
+ gi = GreedyInteger()
+ for t in tests:
+ self.assertEqual(gi.parse(t[0]), t[1])
+ def test_GreedyInt_encoder(self):
+ gi = GreedyInteger()
+ for t in tests:
+ self.assertEqual(t[0], gi.build(t[1]))
+ pass
+
+
+if __name__ == "__main__":
+ unittest.main()