]>
git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_unicode.py
ebe73539c510dbe4d7c85e2a80cb4a1d1bcc2160
1 from collections
import OrderedDict
2 from json
.tests
import PyTest
, CTest
5 class TestUnicode(object):
6 def test_encoding1(self
):
7 encoder
= self
.json
.JSONEncoder(encoding
='utf-8')
8 u
= u
'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
10 ju
= encoder
.encode(u
)
11 js
= encoder
.encode(s
)
12 self
.assertEqual(ju
, js
)
14 def test_encoding2(self
):
15 u
= u
'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
17 ju
= self
.dumps(u
, encoding
='utf-8')
18 js
= self
.dumps(s
, encoding
='utf-8')
19 self
.assertEqual(ju
, js
)
21 def test_encoding3(self
):
22 u
= u
'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
24 self
.assertEqual(j
, '"\\u03b1\\u03a9"')
26 def test_encoding4(self
):
27 u
= u
'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
29 self
.assertEqual(j
, '["\\u03b1\\u03a9"]')
31 def test_encoding5(self
):
32 u
= u
'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
33 j
= self
.dumps(u
, ensure_ascii
=False)
34 self
.assertEqual(j
, u
'"{0}"'.format(u
))
36 def test_encoding6(self
):
37 u
= u
'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
38 j
= self
.dumps([u
], ensure_ascii
=False)
39 self
.assertEqual(j
, u
'["{0}"]'.format(u
))
41 def test_big_unicode_encode(self
):
43 self
.assertEqual(self
.dumps(u
), '"\\ud834\\udd20"')
44 self
.assertEqual(self
.dumps(u
, ensure_ascii
=False), u
'"\U0001d120"')
46 def test_big_unicode_decode(self
):
48 self
.assertEqual(self
.loads('"' + u
+ '"'), u
)
49 self
.assertEqual(self
.loads('"z\\ud834\\udd20x"'), u
)
51 def test_unicode_decode(self
):
52 for i
in range(0, 0xd7ff):
54 s
= '"\\u{0:04x}"'.format(i
)
55 self
.assertEqual(self
.loads(s
), u
)
57 def test_object_pairs_hook_with_unicode(self
):
58 s
= u
'{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'
59 p
= [(u
"xkd", 1), (u
"kcw", 2), (u
"art", 3), (u
"hxm", 4),
60 (u
"qrt", 5), (u
"pad", 6), (u
"hoy", 7)]
61 self
.assertEqual(self
.loads(s
), eval(s
))
62 self
.assertEqual(self
.loads(s
, object_pairs_hook
= lambda x
: x
), p
)
63 od
= self
.loads(s
, object_pairs_hook
= OrderedDict
)
64 self
.assertEqual(od
, OrderedDict(p
))
65 self
.assertEqual(type(od
), OrderedDict
)
66 # the object_pairs_hook takes priority over the object_hook
67 self
.assertEqual(self
.loads(s
,
68 object_pairs_hook
= OrderedDict
,
69 object_hook
= lambda x
: None),
72 def test_default_encoding(self
):
73 self
.assertEqual(self
.loads(u
'{"a": "\xe9"}'.encode('utf-8')),
76 def test_unicode_preservation(self
):
77 self
.assertEqual(type(self
.loads(u
'""')), unicode)
78 self
.assertEqual(type(self
.loads(u
'"a"')), unicode)
79 self
.assertEqual(type(self
.loads(u
'["a"]')[0]), unicode)
81 self
.assertEqual(type(self
.loads('"foo"')), unicode)
84 class TestPyUnicode(TestUnicode
, PyTest
): pass
85 class TestCUnicode(TestUnicode
, CTest
): pass