summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-09-09 22:21:36 +0200
committerIlya Etingof <etingof@gmail.com>2017-09-09 22:21:36 +0200
commit8ae824dfe8fe0bae4b755f444b3c0be721f5e908 (patch)
treee94d168041b14e259cb23775c03e46befc32a11c
parent5b7cc4f06fa264f9ee5490f63ea0f06dc29b89b3 (diff)
downloadpyasn1-git-8ae824dfe8fe0bae4b755f444b3c0be721f5e908.tar.gz
WIP: avoid coping values when encoding explicit ASN.1 tags
-rw-r--r--tests/codec/ber/test_encoder.py28
1 files changed, 26 insertions, 2 deletions
diff --git a/tests/codec/ber/test_encoder.py b/tests/codec/ber/test_encoder.py
index 332b071..7935afe 100644
--- a/tests/codec/ber/test_encoder.py
+++ b/tests/codec/ber/test_encoder.py
@@ -142,8 +142,7 @@ class ExpTaggedOctetStringEncoderTestCase(unittest.TestCase):
def testIndefModeChunked(self):
assert encoder.encode(
self.o, defMode=False, maxChunkSize=4
- ) == ints2octs((101, 128, 36, 128, 4, 4, 81, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 4, 111, 119, 110, 32, 4, 3,
- 102, 111, 120, 0, 0, 0, 0))
+ ) == ints2octs((101, 128, 36, 128, 4, 4, 81, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 4, 111, 119, 110, 32, 4, 3, 102, 111, 120, 0, 0, 0, 0))
class NullEncoderTestCase(unittest.TestCase):
@@ -618,6 +617,31 @@ class SequenceEncoderWithSchemaTestCase(unittest.TestCase):
0, 2, 1, 1, 0, 0))
+class ExpTaggedSequenceEncoderTestCase(unittest.TestCase):
+ def setUp(self):
+ s = univ.Sequence(
+ componentType=namedtype.NamedTypes(
+ namedtype.NamedType('number', univ.Integer()),
+ )
+ )
+
+ s = s.subtype(
+ explicitTag=tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 5)
+ )
+
+ s[0] = 12
+
+ self.s = s
+
+ def testDefMode(self):
+ assert encoder.encode(self.s) == ints2octs((101, 5, 48, 3, 2, 1, 12))
+
+ def testIndefMode(self):
+ assert encoder.encode(
+ self.s, defMode=False
+ ) == ints2octs((101, 128, 48, 128, 2, 1, 12, 0, 0, 0, 0))
+
+
class SetEncoderTestCase(unittest.TestCase):
def setUp(self):
self.s = univ.Set()