/Lib/json/tests/test_unicode.py

http://unladen-swallow.googlecode.com/ · Python · 55 lines · 45 code · 10 blank · 0 comment · 1 complexity · 8bb53bbe6c9bb71f38c28b3efbd78f06 MD5 · raw file

  1. from unittest import TestCase
  2. import json
  3. class TestUnicode(TestCase):
  4. def test_encoding1(self):
  5. encoder = json.JSONEncoder(encoding='utf-8')
  6. u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
  7. s = u.encode('utf-8')
  8. ju = encoder.encode(u)
  9. js = encoder.encode(s)
  10. self.assertEquals(ju, js)
  11. def test_encoding2(self):
  12. u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
  13. s = u.encode('utf-8')
  14. ju = json.dumps(u, encoding='utf-8')
  15. js = json.dumps(s, encoding='utf-8')
  16. self.assertEquals(ju, js)
  17. def test_encoding3(self):
  18. u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
  19. j = json.dumps(u)
  20. self.assertEquals(j, '"\\u03b1\\u03a9"')
  21. def test_encoding4(self):
  22. u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
  23. j = json.dumps([u])
  24. self.assertEquals(j, '["\\u03b1\\u03a9"]')
  25. def test_encoding5(self):
  26. u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
  27. j = json.dumps(u, ensure_ascii=False)
  28. self.assertEquals(j, u'"{0}"'.format(u))
  29. def test_encoding6(self):
  30. u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
  31. j = json.dumps([u], ensure_ascii=False)
  32. self.assertEquals(j, u'["{0}"]'.format(u))
  33. def test_big_unicode_encode(self):
  34. u = u'\U0001d120'
  35. self.assertEquals(json.dumps(u), '"\\ud834\\udd20"')
  36. self.assertEquals(json.dumps(u, ensure_ascii=False), u'"\U0001d120"')
  37. def test_big_unicode_decode(self):
  38. u = u'z\U0001d120x'
  39. self.assertEquals(json.loads('"' + u + '"'), u)
  40. self.assertEquals(json.loads('"z\\ud834\\udd20x"'), u)
  41. def test_unicode_decode(self):
  42. for i in range(0, 0xd7ff):
  43. u = unichr(i)
  44. js = '"\\u{0:04x}"'.format(i)
  45. self.assertEquals(json.loads(js), u)