aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-07-31 12:10:47 +0200
committerIlya Etingof <etingof@gmail.com>2017-07-31 12:10:47 +0200
commite30fc742897e2f7ea4bf5ec8c6460a6e270c9010 (patch)
tree7bedc8bb6a42c0bcad6b55649cb82da991a2f028 /tests
parent3e6a176073cc9c1724efeb76255e988f221ad08a (diff)
downloadpyasn1-e30fc742897e2f7ea4bf5ec8c6460a6e270c9010.tar.gz
more tests on optional nested sequence field
Diffstat (limited to 'tests')
-rw-r--r--tests/codec/cer/test_encoder.py109
-rw-r--r--tests/codec/der/test_encoder.py183
2 files changed, 285 insertions, 7 deletions
diff --git a/tests/codec/cer/test_encoder.py b/tests/codec/cer/test_encoder.py
index fbf2b97..1ff12db 100644
--- a/tests/codec/cer/test_encoder.py
+++ b/tests/codec/cer/test_encoder.py
@@ -274,33 +274,128 @@ class NestedOptionalSequenceEncoderTestCase(unittest.TestCase):
self.s2[0][1] = 123
return self.s2
- def testDefModeOptionalWithDefaultAndOptional(self):
+ def testOptionalWithDefaultAndOptional(self):
s = self.__initOptionalWithDefaultAndOptional()
assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 4, 4, 116, 101, 115, 116, 2, 1, 123, 0, 0, 0, 0))
- def testDefModeOptionalWithDefault(self):
+
+ def testOptionalWithDefault(self):
s = self.__initOptionalWithDefault()
assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 2, 1, 123, 0, 0, 0, 0))
- def testDefModeOptionalWithOptional(self):
+ def testOptionalWithOptional(self):
s = self.__initOptionalWithOptional()
assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 4, 4, 116, 101, 115, 116, 0, 0, 0, 0))
- def testDefModeOptional(self):
+ def testOptional(self):
s = self.__initOptional()
assert encoder.encode(s) == ints2octs((48, 128, 0, 0))
- def testDefModeDefaultWithDefaultAndOptional(self):
+ def testDefaultWithDefaultAndOptional(self):
s = self.__initDefaultWithDefaultAndOptional()
assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 4, 4, 116, 101, 115, 116, 2, 1, 123, 0, 0, 0, 0))
- def testDefModeDefaultWithDefault(self):
+ def testDefaultWithDefault(self):
s = self.__initDefaultWithDefault()
assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 4, 4, 116, 101, 115, 116, 0, 0, 0, 0))
- def testDefModeDefaultWithOptional(self):
+ def testDefaultWithOptional(self):
s = self.__initDefaultWithOptional()
assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 2, 1, 123, 0, 0, 0, 0))
+
+class NestedOptionalChoiceEncoderTestCase(unittest.TestCase):
+ def setUp(self):
+ layer3 = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('first-name', univ.OctetString()),
+ namedtype.DefaultedNamedType('age', univ.Integer(33)),
+ )
+ )
+
+ layer2 = univ.Choice(
+ componentType=namedtype.NamedTypes(
+ namedtype.NamedType('inner', layer3),
+ namedtype.NamedType('first-name', univ.OctetString())
+ )
+ )
+
+ layer1 = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('inner', layer2),
+ )
+ )
+
+ self.s = layer1
+
+ def __initOptionalWithDefaultAndOptional(self):
+ self.s.clear()
+ self.s[0][0][0] = 'test'
+ self.s[0][0][1] = 123
+ return self.s
+
+ def __initOptionalWithDefault(self):
+ self.s.clear()
+ self.s[0][0][1] = 123
+ return self.s
+
+ def __initOptionalWithOptional(self):
+ self.s.clear()
+ self.s[0][0][0] = 'test'
+ return self.s
+
+ def __initOptional(self):
+ self.s.clear()
+ return self.s
+
+ def testOptionalWithDefaultAndOptional(self):
+ s = self.__initOptionalWithDefaultAndOptional()
+ assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 4, 4, 116, 101, 115, 116, 2, 1, 123, 0, 0, 0, 0))
+
+ def testOptionalWithDefault(self):
+ s = self.__initOptionalWithDefault()
+ assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 2, 1, 123, 0, 0, 0, 0))
+
+ def testOptionalWithOptional(self):
+ s = self.__initOptionalWithOptional()
+ assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 4, 4, 116, 101, 115, 116, 0, 0, 0, 0))
+
+ def testOptional(self):
+ s = self.__initOptional()
+ assert encoder.encode(s) == ints2octs((48, 128, 0, 0))
+
+
+class NestedOptionalSequenceOfEncoderTestCase(unittest.TestCase):
+ def setUp(self):
+ layer2 = univ.SequenceOf(
+ componentType=univ.OctetString()
+ )
+
+ layer1 = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('inner', layer2),
+ )
+ )
+
+ self.s = layer1
+
+ def __initOptionalWithValue(self):
+ self.s.clear()
+ self.s[0][0] = 'test'
+ return self.s
+
+ def __initOptional(self):
+ self.s.clear()
+ return self.s
+
+ def testOptionalWithValue(self):
+ s = self.__initOptionalWithValue()
+ assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 4, 4, 116, 101, 115, 116, 0, 0, 0, 0))
+
+ def testOptional(self):
+ s = self.__initOptional()
+ assert encoder.encode(s) == ints2octs((48, 128, 0, 0))
+
+
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
if __name__ == '__main__':
diff --git a/tests/codec/der/test_encoder.py b/tests/codec/der/test_encoder.py
index a148763..eee2707 100644
--- a/tests/codec/der/test_encoder.py
+++ b/tests/codec/der/test_encoder.py
@@ -64,6 +64,189 @@ class SetWithChoiceEncoderTestCase(unittest.TestCase):
self.s.getComponentByName('status').setComponentByPosition(1, True)
assert encoder.encode(self.s) == ints2octs((49, 6, 1, 1, 255, 2, 1, 5))
+
+class NestedOptionalSequenceEncoderTestCase(unittest.TestCase):
+ def setUp(self):
+ inner = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('first-name', univ.OctetString()),
+ namedtype.DefaultedNamedType('age', univ.Integer(33)),
+ )
+ )
+
+ outerWithOptional = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('inner', inner),
+ )
+ )
+
+ outerWithDefault = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.DefaultedNamedType('inner', inner),
+ )
+ )
+
+ self.s1 = outerWithOptional
+ self.s2 = outerWithDefault
+
+ def __initOptionalWithDefaultAndOptional(self):
+ self.s1.clear()
+ self.s1[0][0] = 'test'
+ self.s1[0][1] = 123
+ return self.s1
+
+ def __initOptionalWithDefault(self):
+ self.s1.clear()
+ self.s1[0][1] = 123
+ return self.s1
+
+ def __initOptionalWithOptional(self):
+ self.s1.clear()
+ self.s1[0][0] = 'test'
+ return self.s1
+
+ def __initOptional(self):
+ self.s1.clear()
+ return self.s1
+
+ def __initDefaultWithDefaultAndOptional(self):
+ self.s2.clear()
+ self.s2[0][0] = 'test'
+ self.s2[0][1] = 123
+ return self.s2
+
+ def __initDefaultWithDefault(self):
+ self.s2.clear()
+ self.s2[0][0] = 'test'
+ return self.s2
+
+ def __initDefaultWithOptional(self):
+ self.s2.clear()
+ self.s2[0][1] = 123
+ return self.s2
+
+ def testDefModeOptionalWithDefaultAndOptional(self):
+ s = self.__initOptionalWithDefaultAndOptional()
+ assert encoder.encode(s) == ints2octs((48, 11, 48, 9, 4, 4, 116, 101, 115, 116, 2, 1, 123))
+
+ def testDefModeOptionalWithDefault(self):
+ s = self.__initOptionalWithDefault()
+ assert encoder.encode(s) == ints2octs((48, 5, 48, 3, 2, 1, 123))
+
+ def testDefModeOptionalWithOptional(self):
+ s = self.__initOptionalWithOptional()
+ assert encoder.encode(s) == ints2octs((48, 8, 48, 6, 4, 4, 116, 101, 115, 116))
+
+ def testDefModeOptional(self):
+ s = self.__initOptional()
+ assert encoder.encode(s) == ints2octs((48, 0))
+
+ def testDefModeDefaultWithDefaultAndOptional(self):
+ s = self.__initDefaultWithDefaultAndOptional()
+ assert encoder.encode(s) == ints2octs((48, 11, 48, 9, 4, 4, 116, 101, 115, 116, 2, 1, 123))
+
+ def testDefModeDefaultWithDefault(self):
+ s = self.__initDefaultWithDefault()
+ assert encoder.encode(s) == ints2octs((48, 8, 48, 6, 4, 4, 116, 101, 115, 116))
+
+ def testDefModeDefaultWithOptional(self):
+ s = self.__initDefaultWithOptional()
+ assert encoder.encode(s) == ints2octs((48, 5, 48, 3, 2, 1, 123))
+
+
+class NestedOptionalChoiceEncoderTestCase(unittest.TestCase):
+ def setUp(self):
+ layer3 = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('first-name', univ.OctetString()),
+ namedtype.DefaultedNamedType('age', univ.Integer(33)),
+ )
+ )
+
+ layer2 = univ.Choice(
+ componentType=namedtype.NamedTypes(
+ namedtype.NamedType('inner', layer3),
+ namedtype.NamedType('first-name', univ.OctetString())
+ )
+ )
+
+ layer1 = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('inner', layer2),
+ )
+ )
+
+ self.s = layer1
+
+ def __initOptionalWithDefaultAndOptional(self):
+ self.s.clear()
+ self.s[0][0][0] = 'test'
+ self.s[0][0][1] = 123
+ return self.s
+
+ def __initOptionalWithDefault(self):
+ self.s.clear()
+ self.s[0][0][1] = 123
+ return self.s
+
+ def __initOptionalWithOptional(self):
+ self.s.clear()
+ self.s[0][0][0] = 'test'
+ return self.s
+
+ def __initOptional(self):
+ self.s.clear()
+ return self.s
+
+ def testDefModeOptionalWithDefaultAndOptional(self):
+ s = self.__initOptionalWithDefaultAndOptional()
+ assert encoder.encode(s) == ints2octs((48, 11, 48, 9, 4, 4, 116, 101, 115, 116, 2, 1, 123))
+
+ def testDefModeOptionalWithDefault(self):
+ s = self.__initOptionalWithDefault()
+ assert encoder.encode(s) == ints2octs((48, 5, 48, 3, 2, 1, 123))
+
+ def testDefModeOptionalWithOptional(self):
+ s = self.__initOptionalWithOptional()
+ assert encoder.encode(s) == ints2octs((48, 8, 48, 6, 4, 4, 116, 101, 115, 116))
+
+ def testDefModeOptional(self):
+ s = self.__initOptional()
+ assert encoder.encode(s) == ints2octs((48, 0))
+
+
+class NestedOptionalSequenceOfEncoderTestCase(unittest.TestCase):
+ def setUp(self):
+ layer2 = univ.SequenceOf(
+ componentType=univ.OctetString()
+ )
+
+ layer1 = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.OptionalNamedType('inner', layer2),
+ )
+ )
+
+ self.s = layer1
+
+ def __initOptionalWithValue(self):
+ self.s.clear()
+ self.s[0][0] = 'test'
+ return self.s
+
+ def __initOptional(self):
+ self.s.clear()
+ return self.s
+
+ def testDefModeOptionalWithValue(self):
+ s = self.__initOptionalWithValue()
+ assert encoder.encode(s) == ints2octs((48, 8, 48, 6, 4, 4, 116, 101, 115, 116))
+
+ def testDefModeOptional(self):
+ s = self.__initOptional()
+ assert encoder.encode(s) == ints2octs((48, 0))
+
+
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
if __name__ == '__main__':