diff options
author | Ezio Melotti <ezio.melotti@gmail.com> | 2013-08-08 12:03:45 (GMT) |
---|---|---|
committer | Ezio Melotti <ezio.melotti@gmail.com> | 2013-08-08 12:03:45 (GMT) |
commit | 66f2ea042acf792bf6ff432f409628e1cec99e43 (patch) | |
tree | 9d7e5a24d3f26eeeb63a0f00fa4758b5dde8d099 /Lib/test/test_json/test_indent.py | |
parent | 0d2d2b83935a516235f4dbce25aefad789d088cf (diff) | |
download | cpython-66f2ea042acf792bf6ff432f409628e1cec99e43.zip cpython-66f2ea042acf792bf6ff432f409628e1cec99e43.tar.gz cpython-66f2ea042acf792bf6ff432f409628e1cec99e43.tar.bz2 |
#18273: move the tests in Lib/test/json_tests to Lib/test/test_json and make them discoverable by unittest. Patch by Zachary Ware.
Diffstat (limited to 'Lib/test/test_json/test_indent.py')
-rw-r--r-- | Lib/test/test_json/test_indent.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Lib/test/test_json/test_indent.py b/Lib/test/test_json/test_indent.py new file mode 100644 index 0000000..a4d4d20 --- /dev/null +++ b/Lib/test/test_json/test_indent.py @@ -0,0 +1,63 @@ +import textwrap +from io import StringIO +from test.test_json import PyTest, CTest + + +class TestIndent: + def test_indent(self): + h = [['blorpie'], ['whoops'], [], 'd-shtaeou', 'd-nthiouh', 'i-vhbjkhnth', + {'nifty': 87}, {'field': 'yes', 'morefield': False} ] + + expect = textwrap.dedent("""\ + [ + \t[ + \t\t"blorpie" + \t], + \t[ + \t\t"whoops" + \t], + \t[], + \t"d-shtaeou", + \t"d-nthiouh", + \t"i-vhbjkhnth", + \t{ + \t\t"nifty": 87 + \t}, + \t{ + \t\t"field": "yes", + \t\t"morefield": false + \t} + ]""") + + d1 = self.dumps(h) + d2 = self.dumps(h, indent=2, sort_keys=True, separators=(',', ': ')) + d3 = self.dumps(h, indent='\t', sort_keys=True, separators=(',', ': ')) + + h1 = self.loads(d1) + h2 = self.loads(d2) + h3 = self.loads(d3) + + self.assertEqual(h1, h) + self.assertEqual(h2, h) + self.assertEqual(h3, h) + self.assertEqual(d2, expect.expandtabs(2)) + self.assertEqual(d3, expect) + + def test_indent0(self): + h = {3: 1} + def check(indent, expected): + d1 = self.dumps(h, indent=indent) + self.assertEqual(d1, expected) + + sio = StringIO() + self.json.dump(h, sio, indent=indent) + self.assertEqual(sio.getvalue(), expected) + + # indent=0 should emit newlines + check(0, '{\n"3": 1\n}') + # indent=None is more compact + check(None, '{"3": 1}') + + +class TestPyIndent(TestIndent, PyTest): pass +class TestCIndent(TestIndent, CTest): pass |