0e501107ce31fbafe40a03ec886bfa90e608af94
[profile/ivi/python.git] / Lib / json / tests / test_encode_basestring_ascii.py
1 from unittest import TestCase
2
3 import json.encoder
4 from json import dumps
5 from collections import OrderedDict
6
7 CASES = [
8     (u'/\\"\ucafe\ubabe\uab98\ufcde\ubcda\uef4a\x08\x0c\n\r\t`1~!@#$%^&*()_+-=[]{}|;:\',./<>?', '"/\\\\\\"\\ucafe\\ubabe\\uab98\\ufcde\\ubcda\\uef4a\\b\\f\\n\\r\\t`1~!@#$%^&*()_+-=[]{}|;:\',./<>?"'),
9     (u'\u0123\u4567\u89ab\ucdef\uabcd\uef4a', '"\\u0123\\u4567\\u89ab\\ucdef\\uabcd\\uef4a"'),
10     (u'controls', '"controls"'),
11     (u'\x08\x0c\n\r\t', '"\\b\\f\\n\\r\\t"'),
12     (u'{"object with 1 member":["array with 1 element"]}', '"{\\"object with 1 member\\":[\\"array with 1 element\\"]}"'),
13     (u' s p a c e d ', '" s p a c e d "'),
14     (u'\U0001d120', '"\\ud834\\udd20"'),
15     (u'\u03b1\u03a9', '"\\u03b1\\u03a9"'),
16     ('\xce\xb1\xce\xa9', '"\\u03b1\\u03a9"'),
17     (u'\u03b1\u03a9', '"\\u03b1\\u03a9"'),
18     ('\xce\xb1\xce\xa9', '"\\u03b1\\u03a9"'),
19     (u'\u03b1\u03a9', '"\\u03b1\\u03a9"'),
20     (u'\u03b1\u03a9', '"\\u03b1\\u03a9"'),
21     (u"`1~!@#$%^&*()_+-={':[,]}|;.</>?", '"`1~!@#$%^&*()_+-={\':[,]}|;.</>?"'),
22     (u'\x08\x0c\n\r\t', '"\\b\\f\\n\\r\\t"'),
23     (u'\u0123\u4567\u89ab\ucdef\uabcd\uef4a', '"\\u0123\\u4567\\u89ab\\ucdef\\uabcd\\uef4a"'),
24 ]
25
26 class TestEncodeBaseStringAscii(TestCase):
27     def test_py_encode_basestring_ascii(self):
28         self._test_encode_basestring_ascii(json.encoder.py_encode_basestring_ascii)
29
30     def test_c_encode_basestring_ascii(self):
31         if not json.encoder.c_encode_basestring_ascii:
32             return
33         self._test_encode_basestring_ascii(json.encoder.c_encode_basestring_ascii)
34
35     def _test_encode_basestring_ascii(self, encode_basestring_ascii):
36         fname = encode_basestring_ascii.__name__
37         for input_string, expect in CASES:
38             result = encode_basestring_ascii(input_string)
39             self.assertEqual(result, expect,
40                 '{0!r} != {1!r} for {2}({3!r})'.format(
41                     result, expect, fname, input_string))
42
43     def test_ordered_dict(self):
44         # See issue 6105
45         items = [('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]
46         s = json.dumps(OrderedDict(items))
47         self.assertEqual(s, '{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5}')