~ubuntu-branches/ubuntu/trusty/python3.4/trusty-proposed

« back to all changes in this revision

Viewing changes to Lib/test/test_json/test_indent.py

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-11-25 09:44:27 UTC
  • Revision ID: package-import@ubuntu.com-20131125094427-lzxj8ap5w01lmo7f
Tags: upstream-3.4~b1
ImportĀ upstreamĀ versionĀ 3.4~b1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import textwrap
 
2
from io import StringIO
 
3
from test.test_json import PyTest, CTest
 
4
 
 
5
 
 
6
class TestIndent:
 
7
    def test_indent(self):
 
8
        h = [['blorpie'], ['whoops'], [], 'd-shtaeou', 'd-nthiouh', 'i-vhbjkhnth',
 
9
             {'nifty': 87}, {'field': 'yes', 'morefield': False} ]
 
10
 
 
11
        expect = textwrap.dedent("""\
 
12
        [
 
13
        \t[
 
14
        \t\t"blorpie"
 
15
        \t],
 
16
        \t[
 
17
        \t\t"whoops"
 
18
        \t],
 
19
        \t[],
 
20
        \t"d-shtaeou",
 
21
        \t"d-nthiouh",
 
22
        \t"i-vhbjkhnth",
 
23
        \t{
 
24
        \t\t"nifty": 87
 
25
        \t},
 
26
        \t{
 
27
        \t\t"field": "yes",
 
28
        \t\t"morefield": false
 
29
        \t}
 
30
        ]""")
 
31
 
 
32
        d1 = self.dumps(h)
 
33
        d2 = self.dumps(h, indent=2, sort_keys=True, separators=(',', ': '))
 
34
        d3 = self.dumps(h, indent='\t', sort_keys=True, separators=(',', ': '))
 
35
        d4 = self.dumps(h, indent=2, sort_keys=True)
 
36
        d5 = self.dumps(h, indent='\t', sort_keys=True)
 
37
 
 
38
        h1 = self.loads(d1)
 
39
        h2 = self.loads(d2)
 
40
        h3 = self.loads(d3)
 
41
 
 
42
        self.assertEqual(h1, h)
 
43
        self.assertEqual(h2, h)
 
44
        self.assertEqual(h3, h)
 
45
        self.assertEqual(d2, expect.expandtabs(2))
 
46
        self.assertEqual(d3, expect)
 
47
        self.assertEqual(d4, d2)
 
48
        self.assertEqual(d5, d3)
 
49
 
 
50
    def test_indent0(self):
 
51
        h = {3: 1}
 
52
        def check(indent, expected):
 
53
            d1 = self.dumps(h, indent=indent)
 
54
            self.assertEqual(d1, expected)
 
55
 
 
56
            sio = StringIO()
 
57
            self.json.dump(h, sio, indent=indent)
 
58
            self.assertEqual(sio.getvalue(), expected)
 
59
 
 
60
        # indent=0 should emit newlines
 
61
        check(0, '{\n"3": 1\n}')
 
62
        # indent=None is more compact
 
63
        check(None, '{"3": 1}')
 
64
 
 
65
 
 
66
class TestPyIndent(TestIndent, PyTest): pass
 
67
class TestCIndent(TestIndent, CTest): pass