summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-10-17 00:31:04 +0200
committerGitHub <noreply@github.com>2017-10-17 00:31:04 +0200
commit475a2fb1f3493a1d7ee8b91161132dc51f3d066e (patch)
tree4e820cd1beb9f018b36e02f8184f9806b85effbf /tests
parentd1f9acd3859b7e40494bd619ab2e1c52dd72379c (diff)
downloadpyasn1-git-475a2fb1f3493a1d7ee8b91161132dc51f3d066e.tar.gz
fixed encoder not to omit empty substrate for simple types (#92)
Fix to encoder to omit empty substrate only for constructed types
Diffstat (limited to 'tests')
-rw-r--r--tests/codec/der/test_encoder.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/tests/codec/der/test_encoder.py b/tests/codec/der/test_encoder.py
index 3059c0c..66a8a91 100644
--- a/tests/codec/der/test_encoder.py
+++ b/tests/codec/der/test_encoder.py
@@ -289,6 +289,73 @@ class NestedOptionalSequenceOfEncoderTestCase(BaseTestCase):
assert encoder.encode(s) == ints2octs((48, 0))
+class EmptyInnerFieldOfSequenceEncoderTestCase(BaseTestCase):
+
+ def testInitializedOptionalNullIsEncoded(self):
+ self.s = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('null', univ.Null())
+ )
+ )
+
+ self.s.clear()
+ self.s[0] = ''
+ assert encoder.encode(self.s) == ints2octs((48, 2, 5, 0))
+
+ def testUninitializedOptionalNullIsNotEncoded(self):
+ self.s = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('null', univ.Null())
+ )
+ )
+
+ self.s.clear()
+ assert encoder.encode(self.s) == ints2octs((48, 0))
+
+ def testInitializedDefaultNullIsNotEncoded(self):
+ self.s = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.DefaultedNamedType('null', univ.Null(''))
+ )
+ )
+
+ self.s.clear()
+ self.s[0] = ''
+ assert encoder.encode(self.s) == ints2octs((48, 0))
+
+ def testInitializedOptionalOctetStringIsEncoded(self):
+ self.s = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('str', univ.OctetString())
+ )
+ )
+
+ self.s.clear()
+ self.s[0] = ''
+ assert encoder.encode(self.s) == ints2octs((48, 2, 4, 0))
+
+ def testUninitializedOptionalOctetStringIsNotEncoded(self):
+ self.s = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('str', univ.OctetString())
+ )
+ )
+
+ self.s.clear()
+ assert encoder.encode(self.s) == ints2octs((48, 0))
+
+ def testInitializedDefaultOctetStringIsNotEncoded(self):
+ self.s = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.DefaultedNamedType('str', univ.OctetString(''))
+ )
+ )
+
+ self.s.clear()
+ self.s[0] = ''
+ assert encoder.encode(self.s) == ints2octs((48, 0))
+
+
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
if __name__ == '__main__':