diff options
author | Ilya Etingof <etingof@gmail.com> | 2017-10-17 00:31:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-17 00:31:04 +0200 |
commit | 475a2fb1f3493a1d7ee8b91161132dc51f3d066e (patch) | |
tree | 4e820cd1beb9f018b36e02f8184f9806b85effbf /tests | |
parent | d1f9acd3859b7e40494bd619ab2e1c52dd72379c (diff) | |
download | pyasn1-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.py | 67 |
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__': |