コード例 #1
0
ファイル: test_rutf8.py プロジェクト: pointworld/pypy
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
コード例 #2
0
ファイル: newformat.py プロジェクト: pointworld/pypy
 def _builder(self):
     if self.is_unicode:
         return rutf8.Utf8StringBuilder()
     else:
         return rstring.StringBuilder()
コード例 #3
0
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()
コード例 #4
0
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