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