##// END OF EJS Templates
Add test for gh-2684.
Bradley M. Froehle -
Show More
@@ -1,84 +1,94 b''
1 """Tests for IPython.lib.pretty.
1 """Tests for IPython.lib.pretty.
2 """
2 """
3 #-----------------------------------------------------------------------------
3 #-----------------------------------------------------------------------------
4 # Copyright (c) 2011, the IPython Development Team.
4 # Copyright (c) 2011, the IPython Development Team.
5 #
5 #
6 # Distributed under the terms of the Modified BSD License.
6 # Distributed under the terms of the Modified BSD License.
7 #
7 #
8 # The full license is in the file COPYING.txt, distributed with this software.
8 # The full license is in the file COPYING.txt, distributed with this software.
9 #-----------------------------------------------------------------------------
9 #-----------------------------------------------------------------------------
10
10
11 #-----------------------------------------------------------------------------
11 #-----------------------------------------------------------------------------
12 # Imports
12 # Imports
13 #-----------------------------------------------------------------------------
13 #-----------------------------------------------------------------------------
14 from __future__ import print_function
14 from __future__ import print_function
15
15
16 # Third-party imports
16 # Third-party imports
17 import nose.tools as nt
17 import nose.tools as nt
18
18
19 # Our own imports
19 # Our own imports
20 from IPython.lib import pretty
20 from IPython.lib import pretty
21 from IPython.testing.decorators import skip_without
21
22
22 #-----------------------------------------------------------------------------
23 #-----------------------------------------------------------------------------
23 # Classes and functions
24 # Classes and functions
24 #-----------------------------------------------------------------------------
25 #-----------------------------------------------------------------------------
25
26
26 class MyList(object):
27 class MyList(object):
27 def __init__(self, content):
28 def __init__(self, content):
28 self.content = content
29 self.content = content
29 def _repr_pretty_(self, p, cycle):
30 def _repr_pretty_(self, p, cycle):
30 if cycle:
31 if cycle:
31 p.text("MyList(...)")
32 p.text("MyList(...)")
32 else:
33 else:
33 with p.group(3, "MyList(", ")"):
34 with p.group(3, "MyList(", ")"):
34 for (i, child) in enumerate(self.content):
35 for (i, child) in enumerate(self.content):
35 if i:
36 if i:
36 p.text(",")
37 p.text(",")
37 p.breakable()
38 p.breakable()
38 else:
39 else:
39 p.breakable("")
40 p.breakable("")
40 p.pretty(child)
41 p.pretty(child)
41
42
42
43
43 class MyDict(dict):
44 class MyDict(dict):
44 def _repr_pretty_(self, p, cycle):
45 def _repr_pretty_(self, p, cycle):
45 p.text("MyDict(...)")
46 p.text("MyDict(...)")
46
47
47
48
48 class Dummy1(object):
49 class Dummy1(object):
49 def _repr_pretty_(self, p, cycle):
50 def _repr_pretty_(self, p, cycle):
50 p.text("Dummy1(...)")
51 p.text("Dummy1(...)")
51
52
52 class Dummy2(Dummy1):
53 class Dummy2(Dummy1):
53 _repr_pretty_ = None
54 _repr_pretty_ = None
54
55
55
56
56 def test_indentation():
57 def test_indentation():
57 """Test correct indentation in groups"""
58 """Test correct indentation in groups"""
58 count = 40
59 count = 40
59 gotoutput = pretty.pretty(MyList(range(count)))
60 gotoutput = pretty.pretty(MyList(range(count)))
60 expectedoutput = "MyList(\n" + ",\n".join(" %d" % i for i in range(count)) + ")"
61 expectedoutput = "MyList(\n" + ",\n".join(" %d" % i for i in range(count)) + ")"
61
62
62 nt.assert_equal(gotoutput, expectedoutput)
63 nt.assert_equal(gotoutput, expectedoutput)
63
64
64
65
65 def test_dispatch():
66 def test_dispatch():
66 """
67 """
67 Test correct dispatching: The _repr_pretty_ method for MyDict
68 Test correct dispatching: The _repr_pretty_ method for MyDict
68 must be found before the registered printer for dict.
69 must be found before the registered printer for dict.
69 """
70 """
70 gotoutput = pretty.pretty(MyDict())
71 gotoutput = pretty.pretty(MyDict())
71 expectedoutput = "MyDict(...)"
72 expectedoutput = "MyDict(...)"
72
73
73 nt.assert_equal(gotoutput, expectedoutput)
74 nt.assert_equal(gotoutput, expectedoutput)
74
75
75
76
76 def test_callability_checking():
77 def test_callability_checking():
77 """
78 """
78 Test that the _repr_pretty_ method is tested for callability and skipped if
79 Test that the _repr_pretty_ method is tested for callability and skipped if
79 not.
80 not.
80 """
81 """
81 gotoutput = pretty.pretty(Dummy2())
82 gotoutput = pretty.pretty(Dummy2())
82 expectedoutput = "Dummy1(...)"
83 expectedoutput = "Dummy1(...)"
83
84
84 nt.assert_equal(gotoutput, expectedoutput)
85 nt.assert_equal(gotoutput, expectedoutput)
86
87 @skip_without('xxlimited')
88 def test_pprint_heap_allocated_type():
89 """
90 Test that pprint works for heap allocated types.
91 """
92 import xxlimited
93 output = pretty.pretty(xxlimited.Null)
94 nt.assert_equal(output, 'xxlimited.Null')
General Comments 0
You need to be logged in to leave comments. Login now