def test_utf8_string_builder(): s = rutf8.Utf8StringBuilder() s.append("foo") s.append_char("x") assert s.getlength() == 4 assert s.build() == "foox" s.append(u"\u1234".encode("utf8")) assert s.getlength() == 5 assert s.build().decode("utf8") == u"foox\u1234" s.append("foo") s.append_char("x") assert s.getlength() == 9 assert s.build().decode("utf8") == u"foox\u1234foox" s = rutf8.Utf8StringBuilder() s.append_code(0x1234) assert s.build().decode("utf8") == u"\u1234" assert s.getlength() == 1 s.append_code(0xD800) assert s.getlength() == 2 s = rutf8.Utf8StringBuilder() s.append_utf8("abc", 3) assert s.getlength() == 3 assert s.build().decode("utf8") == u"abc" s.append_utf8(u"\u1234".encode("utf8"), 1) assert s.build().decode("utf8") == u"abc\u1234" assert s.getlength() == 4 s.append_code(0xD800) assert s.getlength() == 5
def _builder(self): if self.is_unicode: return rutf8.Utf8StringBuilder() else: return rstring.StringBuilder()
def descr_upper(s): builder = rutf8.Utf8StringBuilder(len(s)) for ch in rutf8.Utf8StringIterator(s): ch = unicodedb.toupper(ch) builder.append_code(ch) return builder.build()
def test_utf8_string_builder_bad_code(): s = rutf8.Utf8StringBuilder() with pytest.raises(rutf8.OutOfRange): s.append_code(0x110000) assert s.build() == '' assert s.getlength() == 0