From: Sergey Matveev Date: Sun, 16 Feb 2020 18:22:54 +0000 (+0300) Subject: Check that interleaved characters are ok X-Git-Tag: 7.0^0 X-Git-Url: http://www.git.cypherpunks.ru/?p=pyderasn.git;a=commitdiff_plain;h=20cfbf32cd8bc0f869004c625aad156556f8b06e Check that interleaved characters are ok --- diff --git a/tests/test_pyderasn.py b/tests/test_pyderasn.py index 0fa0485..3a9e303 100644 --- a/tests/test_pyderasn.py +++ b/tests/test_pyderasn.py @@ -3737,10 +3737,6 @@ class StringMixin(object): list(obj.pps()) -class TestUTF8String(StringMixin, CommonMixin, TestCase): - base_klass = UTF8String - - cyrillic_letters = text( alphabet="".join(six_unichr(i) for i in list(range(0x0410, 0x044f + 1))), min_size=1, @@ -3748,6 +3744,26 @@ cyrillic_letters = text( ) +class TestUTF8String(StringMixin, CommonMixin, TestCase): + base_klass = UTF8String + + @given(cyrillic_letters) + def test_byte_per_primitive(self, chars): + char = chars[0] + char_raw = char.encode("utf-8") + encoded = b"".join(( + self.base_klass().tag_constructed, + LENINDEF, + OctetString(char_raw[:1]).encode(), + OctetString(char_raw[1:2]).encode(), + EOC, + )) + self.assertEqual( + self.base_klass().decod(encoded, ctx={"bered": True}), + char, + ) + + class UnicodeDecodeErrorMixin(object): @given(cyrillic_letters) def test_unicode_decode_error(self, cyrillic_text): @@ -3786,6 +3802,19 @@ class TestNumericString(StringMixin, CommonMixin, TestCase): self.assertEqual(err.exception.offset, offset) self.assertEqual(err.exception.decode_path, decode_path) + def test_byte_per_primitive(self): + encoded = b"".join(( + self.base_klass().tag_constructed, + LENINDEF, + OctetString(b"1").encode(), + OctetString(b"2").encode(), + EOC, + )) + self.assertEqual( + self.base_klass().decod(encoded, ctx={"bered": True}), + "12", + ) + class TestPrintableString( UnicodeDecodeErrorMixin,