tests/test_pyderasn.py | 37 +++++++++++++++++++++++++++++++++---- diff --git a/tests/test_pyderasn.py b/tests/test_pyderasn.py index 29099b8584887b92b89c35472d27707be4b67b079609e4cc09b676d8fb1dd803..a6d61a6aa4ace7f582f5606afff631f6bc8faeb58f7a6682fa50ceb71645d4f8 100644 --- a/tests/test_pyderasn.py +++ b/tests/test_pyderasn.py @@ -3737,15 +3737,31 @@ repr(obj) 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, max_size=5, ) + + +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): @@ -3785,6 +3801,19 @@ ) repr(err.exception) 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(