]> Cypherpunks.ru repositories - pyderasn.git/blobdiff - tests/test_pyderasn.py
PEP8
[pyderasn.git] / tests / test_pyderasn.py
index 46e10e53abdbb12848d8be51d21d58f43ff0a11b..d112a60c9a2ae7302f8dbf83afaeb5537a47e159 100644 (file)
@@ -2662,7 +2662,6 @@ class TestNull(CommonMixin, TestCase):
             repr(obj)
             list(obj.pps())
 
-
     @given(integers(min_value=1))
     def test_invalid_len(self, l):
         with self.assertRaises(InvalidLength):
@@ -6275,24 +6274,34 @@ class SeqMixing(object):
             max_size=len(_schema),
         ))]
 
+        class Wahl(Choice):
+            schema = (("int", Integer()),)
+
         class SeqWithoutDefault(self.base_klass):
             schema = [
-                (n, Integer(impl=t))
+                (n, Wahl(expl=t))
                 for (n, _), t in zip(_schema, tags)
             ]
         seq_without_default = SeqWithoutDefault()
         for name, value in _schema:
-            seq_without_default[name] = Integer(value)
+            seq_without_default[name] = Wahl(("int", Integer(value)))
         seq_encoded = seq_without_default.encode()
+        seq_without_default.decode(seq_encoded)
+        self.assertEqual(
+            len(list(seq_without_default.decode_evgen(seq_encoded))),
+            len(_schema) * 2 + 1,
+        )
 
         class SeqWithDefault(self.base_klass):
             schema = [
-                (n, Integer(default=v, impl=t))
+                (n, Wahl(default=Wahl(("int", Integer(v))), expl=t))
                 for (n, v), t in zip(_schema, tags)
             ]
         seq_with_default = SeqWithDefault()
         with assertRaisesRegex(self, DecodeError, "DEFAULT value met"):
             seq_with_default.decode(seq_encoded)
+        with assertRaisesRegex(self, DecodeError, "DEFAULT value met"):
+            list(seq_with_default.decode_evgen(seq_encoded))
         for ctx in ({"bered": True}, {"allow_default_values": True}):
             seq_decoded, _ = seq_with_default.decode(seq_encoded, ctx=ctx)
             self.assertTrue(seq_decoded.ber_encoded)
@@ -6302,7 +6311,21 @@ class SeqMixing(object):
             self.assertTrue(seq_decoded.bered)
             for name, value in _schema:
                 self.assertEqual(seq_decoded[name], seq_with_default[name])
-                self.assertEqual(seq_decoded[name], value)
+                self.assertEqual(seq_decoded[name].value, value)
+            self.assertEqual(
+                len(list(seq_with_default.decode_evgen(seq_encoded, ctx=ctx))),
+                len(_schema) + 1,
+            )
+
+        seq_without_default = SeqWithoutDefault()
+        for name, value in _schema:
+            seq_without_default[name] = Wahl(("int", Integer(value + 1)))
+        seq_encoded = seq_without_default.encode()
+        seq_with_default.decode(seq_encoded)
+        self.assertEqual(
+            len(list(seq_with_default.decode_evgen(seq_encoded))),
+            len(_schema) + 1,
+        )
 
     @given(data_strategy())
     def test_missing_from_spec(self, d):
@@ -6327,6 +6350,8 @@ class SeqMixing(object):
         seq_missing = SeqMissing()
         with self.assertRaises(TagMismatch):
             seq_missing.decode(seq_encoded)
+        with self.assertRaises(TagMismatch):
+            list(seq_missing.decode_evgen(seq_encoded))
 
     def test_bered(self):
         class Seq(self.base_klass):
@@ -6353,6 +6378,9 @@ class SeqMixing(object):
         encoded = Seq.tag_default + len_encode(len(encoded)) + encoded
         with self.assertRaises(DecodeError):
             Seq().decode(encoded)
+        with self.assertRaises(DecodeError):
+            list(Seq().decode_evgen(encoded))
+        list(Seq().decode_evgen(encoded, ctx={"bered": True}))
         decoded, _ = Seq().decode(encoded, ctx={"bered": True})
         self.assertFalse(decoded.ber_encoded)
         self.assertFalse(decoded.lenindef)
@@ -7018,6 +7046,7 @@ class TestSequenceOf(SeqOfMixing, CommonMixin, TestCase):
             schema = Integer()
             bounds = (10, 20)
         seqof = None
+
         def gen(n):
             for i in six_xrange(n):
                 yield Integer(i)
@@ -7037,6 +7066,7 @@ class TestSequenceOf(SeqOfMixing, CommonMixin, TestCase):
         class SeqOf(SequenceOf):
             schema = Integer()
             bounds = (1, float("+inf"))
+
         def gen():
             for i in six_xrange(10):
                 yield Integer(i)
@@ -7051,6 +7081,7 @@ class TestSequenceOf(SeqOfMixing, CommonMixin, TestCase):
         class SeqOf(SequenceOf):
             schema = Integer()
             bounds = (1, float("+inf"))
+
         def gen():
             for i in six_xrange(10):
                 yield Integer(i)
@@ -7585,6 +7616,7 @@ class TestDefinesByPath(TestCase):
 
     def test_remaining_data(self):
         oid = ObjectIdentifier("1.2.3")
+
         class Seq(Sequence):
             schema = (
                 ("oid", ObjectIdentifier(defines=((("tgt",), {
@@ -7602,6 +7634,7 @@ class TestDefinesByPath(TestCase):
 
     def test_remaining_data_seqof(self):
         oid = ObjectIdentifier("1.2.3")
+
         class SeqOf(SetOf):
             schema = OctetString()