| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import sys
- import pytest
- from panda3d.core import TextEncoder
- if sys.version_info >= (3, 0):
- unichr = chr
- xrange = range
- def valid_characters():
- """Generator yielding all valid Unicode code points."""
- for i in xrange(0xd800):
- yield unichr(i)
- for i in xrange(0xe000, sys.maxunicode + 1):
- if i != 0xfeff and i & 0xfffe != 0xfffe:
- yield unichr(i)
- def test_text_decode_iso8859():
- encoder = TextEncoder()
- encoder.set_encoding(TextEncoder.E_iso8859)
- for i in xrange(255):
- enc = unichr(i).encode('latin-1')
- assert len(enc) == 1
- dec = encoder.decode_text(enc)
- assert len(dec) == 1
- assert ord(dec) == i
- def test_text_decode_utf8():
- encoder = TextEncoder()
- encoder.set_encoding(TextEncoder.E_utf8)
- for c in valid_characters():
- enc = c.encode('utf-8')
- assert len(enc) <= 4
- dec = encoder.decode_text(enc)
- assert len(dec) == 1
- assert dec == c
- def test_text_decode_utf16be():
- encoder = TextEncoder()
- encoder.set_encoding(TextEncoder.E_utf16be)
- for c in valid_characters():
- enc = c.encode('utf-16be')
- dec = encoder.decode_text(enc)
- assert len(c) == len(dec)
- assert c == dec
- def test_text_encode_iso8859():
- encoder = TextEncoder()
- encoder.set_encoding(TextEncoder.E_iso8859)
- for i in xrange(255):
- c = unichr(i)
- enc = encoder.encode_wtext(c)
- assert enc == c.encode('latin-1')
- def test_text_encode_utf8():
- encoder = TextEncoder()
- encoder.set_encoding(TextEncoder.E_utf8)
- for c in valid_characters():
- enc = encoder.encode_wtext(c)
- assert enc == c.encode('utf-8')
- def test_text_encode_utf16be():
- encoder = TextEncoder()
- encoder.set_encoding(TextEncoder.E_utf16be)
- for c in valid_characters():
- enc = encoder.encode_wtext(c)
- assert enc == c.encode('utf-16-be')
- def test_text_append_unicode_char():
- encoder = TextEncoder()
- encoder.set_encoding(TextEncoder.E_iso8859)
- code_points = []
- for code_point in [0, 1, 127, 128, 255, 256, 0xfffd, 0x10000, 0x10ffff]:
- if code_point <= sys.maxunicode:
- code_points.append(code_point)
- encoder.append_unicode_char(code_point)
- encoded = encoder.get_wtext()
- assert len(encoded) == len(code_points)
- for a, b in zip(code_points, encoded):
- assert a == ord(b)
|