blob: bed9a932274de54068732bce9f4d9e1876725308 [file] [log] [blame]
Tim Petersa814db52001-05-14 07:05:58 +00001import pprint
Fred Drakeb456e4f2002-12-31 07:16:16 +00002import test.test_support
Fred Drake43913dd2001-05-14 17:41:20 +00003import unittest
Raymond Hettinger5310b692008-01-24 21:47:56 +00004import test.test_set
Tim Petersa814db52001-05-14 07:05:58 +00005
Martin v. Löwis339d0f72001-08-17 18:39:25 +00006try:
7 uni = unicode
8except NameError:
Fred Drakeb456e4f2002-12-31 07:16:16 +00009 def uni(x):
10 return x
Martin v. Löwis339d0f72001-08-17 18:39:25 +000011
Walter Dörwald7a7ede52003-12-03 20:15:28 +000012# list, tuple and dict subclasses that do or don't overwrite __repr__
13class list2(list):
14 pass
Tim Petersd609b1a2006-06-02 23:22:51 +000015
Walter Dörwald7a7ede52003-12-03 20:15:28 +000016class list3(list):
17 def __repr__(self):
18 return list.__repr__(self)
Tim Petersd609b1a2006-06-02 23:22:51 +000019
Walter Dörwald7a7ede52003-12-03 20:15:28 +000020class tuple2(tuple):
21 pass
Tim Petersd609b1a2006-06-02 23:22:51 +000022
Walter Dörwald7a7ede52003-12-03 20:15:28 +000023class tuple3(tuple):
24 def __repr__(self):
25 return tuple.__repr__(self)
Tim Petersd609b1a2006-06-02 23:22:51 +000026
Serhiy Storchakafdda2002013-10-02 11:40:26 +030027class set2(set):
28 pass
29
30class set3(set):
31 def __repr__(self):
32 return set.__repr__(self)
33
34class frozenset2(frozenset):
35 pass
36
37class frozenset3(frozenset):
38 def __repr__(self):
39 return frozenset.__repr__(self)
40
Walter Dörwald7a7ede52003-12-03 20:15:28 +000041class dict2(dict):
42 pass
Tim Petersd609b1a2006-06-02 23:22:51 +000043
Walter Dörwald7a7ede52003-12-03 20:15:28 +000044class dict3(dict):
45 def __repr__(self):
46 return dict.__repr__(self)
Tim Petersa814db52001-05-14 07:05:58 +000047
Fred Drake43913dd2001-05-14 17:41:20 +000048class QueryTestCase(unittest.TestCase):
Tim Petersa814db52001-05-14 07:05:58 +000049
Fred Drake43913dd2001-05-14 17:41:20 +000050 def setUp(self):
51 self.a = range(100)
52 self.b = range(200)
53 self.a[-12] = self.b
Tim Petersa814db52001-05-14 07:05:58 +000054
Fred Drake43913dd2001-05-14 17:41:20 +000055 def test_basic(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +000056 # Verify .isrecursive() and .isreadable() w/o recursion
Fred Drakeb456e4f2002-12-31 07:16:16 +000057 pp = pprint.PrettyPrinter()
Martin v. Löwis339d0f72001-08-17 18:39:25 +000058 for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, uni("yaddayadda"),
Serhiy Storchakad6c1c1e2015-05-16 21:34:56 +030059 bytearray(b"ghi"), True, False, None,
Fred Drake43913dd2001-05-14 17:41:20 +000060 self.a, self.b):
Fred Drakeb456e4f2002-12-31 07:16:16 +000061 # module-level convenience functions
Ezio Melotti469a05f2010-01-24 20:48:35 +000062 self.assertFalse(pprint.isrecursive(safe),
63 "expected not isrecursive for %r" % (safe,))
64 self.assertTrue(pprint.isreadable(safe),
65 "expected isreadable for %r" % (safe,))
Fred Drakeb456e4f2002-12-31 07:16:16 +000066 # PrettyPrinter methods
Ezio Melotti469a05f2010-01-24 20:48:35 +000067 self.assertFalse(pp.isrecursive(safe),
68 "expected not isrecursive for %r" % (safe,))
69 self.assertTrue(pp.isreadable(safe),
70 "expected isreadable for %r" % (safe,))
Tim Petersa814db52001-05-14 07:05:58 +000071
Fred Drake43913dd2001-05-14 17:41:20 +000072 def test_knotted(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +000073 # Verify .isrecursive() and .isreadable() w/ recursion
Fred Drake43913dd2001-05-14 17:41:20 +000074 # Tie a knot.
75 self.b[67] = self.a
76 # Messy dict.
77 self.d = {}
78 self.d[0] = self.d[1] = self.d[2] = self.d
Tim Petersa814db52001-05-14 07:05:58 +000079
Fred Drakeb456e4f2002-12-31 07:16:16 +000080 pp = pprint.PrettyPrinter()
Tim Petersa814db52001-05-14 07:05:58 +000081
Fred Drake43913dd2001-05-14 17:41:20 +000082 for icky in self.a, self.b, self.d, (self.d, self.d):
Ezio Melotti469a05f2010-01-24 20:48:35 +000083 self.assertTrue(pprint.isrecursive(icky), "expected isrecursive")
84 self.assertFalse(pprint.isreadable(icky), "expected not isreadable")
85 self.assertTrue(pp.isrecursive(icky), "expected isrecursive")
86 self.assertFalse(pp.isreadable(icky), "expected not isreadable")
Fred Drake43913dd2001-05-14 17:41:20 +000087
88 # Break the cycles.
89 self.d.clear()
90 del self.a[:]
91 del self.b[:]
92
93 for safe in self.a, self.b, self.d, (self.d, self.d):
Fred Drakeb456e4f2002-12-31 07:16:16 +000094 # module-level convenience functions
Ezio Melotti469a05f2010-01-24 20:48:35 +000095 self.assertFalse(pprint.isrecursive(safe),
96 "expected not isrecursive for %r" % (safe,))
97 self.assertTrue(pprint.isreadable(safe),
98 "expected isreadable for %r" % (safe,))
Fred Drakeb456e4f2002-12-31 07:16:16 +000099 # PrettyPrinter methods
Ezio Melotti469a05f2010-01-24 20:48:35 +0000100 self.assertFalse(pp.isrecursive(safe),
101 "expected not isrecursive for %r" % (safe,))
102 self.assertTrue(pp.isreadable(safe),
103 "expected isreadable for %r" % (safe,))
Fred Drake43913dd2001-05-14 17:41:20 +0000104
105 def test_unreadable(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +0000106 # Not recursive but not readable anyway
Fred Drakeb456e4f2002-12-31 07:16:16 +0000107 pp = pprint.PrettyPrinter()
Fred Drake43913dd2001-05-14 17:41:20 +0000108 for unreadable in type(3), pprint, pprint.isrecursive:
Fred Drakeb456e4f2002-12-31 07:16:16 +0000109 # module-level convenience functions
Ezio Melotti469a05f2010-01-24 20:48:35 +0000110 self.assertFalse(pprint.isrecursive(unreadable),
111 "expected not isrecursive for %r" % (unreadable,))
112 self.assertFalse(pprint.isreadable(unreadable),
113 "expected not isreadable for %r" % (unreadable,))
Fred Drakeb456e4f2002-12-31 07:16:16 +0000114 # PrettyPrinter methods
Ezio Melotti469a05f2010-01-24 20:48:35 +0000115 self.assertFalse(pp.isrecursive(unreadable),
116 "expected not isrecursive for %r" % (unreadable,))
117 self.assertFalse(pp.isreadable(unreadable),
118 "expected not isreadable for %r" % (unreadable,))
Fred Drake43913dd2001-05-14 17:41:20 +0000119
Tim Peters95b3f782001-05-14 18:39:41 +0000120 def test_same_as_repr(self):
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000121 # Simple objects, small containers and classes that overwrite __repr__
Tim Petersd609b1a2006-06-02 23:22:51 +0000122 # For those the result should be the same as repr().
123 # Ahem. The docs don't say anything about that -- this appears to
124 # be testing an implementation quirk. Starting in Python 2.5, it's
125 # not true for dicts: pprint always sorts dicts by key now; before,
126 # it sorted a dict display if and only if the display required
127 # multiple lines. For that reason, dicts with more than one element
128 # aren't tested here.
Serhiy Storchakad6c1c1e2015-05-16 21:34:56 +0300129 for simple in (0, 0L, 0+0j, 0.0, "", uni(""), bytearray(),
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000130 (), tuple2(), tuple3(),
131 [], list2(), list3(),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300132 set(), set2(), set3(),
133 frozenset(), frozenset2(), frozenset3(),
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000134 {}, dict2(), dict3(),
Ezio Melotti469a05f2010-01-24 20:48:35 +0000135 self.assertTrue, pprint,
Serhiy Storchakad6c1c1e2015-05-16 21:34:56 +0300136 -6, -6L, -6-6j, -1.5, "x", uni("x"), bytearray(b"x"),
137 (3,), [3], {3: 6},
Benjamin Peterson68ffe3e2009-03-30 15:15:38 +0000138 (1,2), [3,4], {5: 6},
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000139 tuple2((1,2)), tuple3((1,2)), tuple3(range(100)),
140 [3,4], list2([3,4]), list3([3,4]), list3(range(100)),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300141 set({7}), set2({7}), set3({7}),
142 frozenset({8}), frozenset2({8}), frozenset3({8}),
Benjamin Peterson68ffe3e2009-03-30 15:15:38 +0000143 dict2({5: 6}), dict3({5: 6}),
Serhiy Storchakad6c1c1e2015-05-16 21:34:56 +0300144 range(10, -11, -1),
145 True, False, None,
Tim Peters95b3f782001-05-14 18:39:41 +0000146 ):
147 native = repr(simple)
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300148 self.assertEqual(pprint.pformat(simple), native)
149 self.assertEqual(pprint.pformat(simple, width=1, indent=0)
150 .replace('\n', ' '), native)
151 self.assertEqual(pprint.saferepr(simple), native)
Fred Drake43913dd2001-05-14 17:41:20 +0000152
Barry Warsaw00859c02001-11-28 05:49:39 +0000153 def test_basic_line_wrap(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +0000154 # verify basic line-wrapping operation
Barry Warsaw00859c02001-11-28 05:49:39 +0000155 o = {'RPM_cal': 0,
156 'RPM_cal2': 48059,
157 'Speed_cal': 0,
158 'controldesk_runtime_us': 0,
159 'main_code_runtime_us': 0,
160 'read_io_runtime_us': 0,
161 'write_io_runtime_us': 43690}
162 exp = """\
163{'RPM_cal': 0,
164 'RPM_cal2': 48059,
165 'Speed_cal': 0,
166 'controldesk_runtime_us': 0,
167 'main_code_runtime_us': 0,
168 'read_io_runtime_us': 0,
169 'write_io_runtime_us': 43690}"""
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000170 for type in [dict, dict2]:
171 self.assertEqual(pprint.pformat(type(o)), exp)
172
173 o = range(100)
174 exp = '[%s]' % ',\n '.join(map(str, o))
175 for type in [list, list2]:
176 self.assertEqual(pprint.pformat(type(o)), exp)
177
178 o = tuple(range(100))
179 exp = '(%s)' % ',\n '.join(map(str, o))
180 for type in [tuple, tuple2]:
181 self.assertEqual(pprint.pformat(type(o)), exp)
Barry Warsaw00859c02001-11-28 05:49:39 +0000182
Walter Dörwaldc8de4582003-12-03 20:26:05 +0000183 # indent parameter
184 o = range(100)
185 exp = '[ %s]' % ',\n '.join(map(str, o))
186 for type in [list, list2]:
187 self.assertEqual(pprint.pformat(type(o), indent=4), exp)
188
Facundo Batista2da91c32008-06-21 17:43:56 +0000189 def test_nested_indentations(self):
190 o1 = list(range(10))
191 o2 = dict(first=1, second=2, third=3)
192 o = [o1, o2]
193 expected = """\
194[ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
195 { 'first': 1,
196 'second': 2,
197 'third': 3}]"""
198 self.assertEqual(pprint.pformat(o, indent=4, width=42), expected)
199
Tim Petersd609b1a2006-06-02 23:22:51 +0000200 def test_sorted_dict(self):
201 # Starting in Python 2.5, pprint sorts dict displays by key regardless
202 # of how small the dictionary may be.
203 # Before the change, on 32-bit Windows pformat() gave order
204 # 'a', 'c', 'b' here, so this test failed.
205 d = {'a': 1, 'b': 1, 'c': 1}
206 self.assertEqual(pprint.pformat(d), "{'a': 1, 'b': 1, 'c': 1}")
207 self.assertEqual(pprint.pformat([d, d]),
208 "[{'a': 1, 'b': 1, 'c': 1}, {'a': 1, 'b': 1, 'c': 1}]")
209
210 # The next one is kind of goofy. The sorted order depends on the
211 # alphabetic order of type names: "int" < "str" < "tuple". Before
212 # Python 2.5, this was in the test_same_as_repr() test. It's worth
213 # keeping around for now because it's one of few tests of pprint
214 # against a crazy mix of types.
215 self.assertEqual(pprint.pformat({"xy\tab\n": (3,), 5: [[]], (): {}}),
216 r"{5: [[]], 'xy\tab\n': (3,), (): {}}")
217
Fred Drakeaee113d2002-04-02 05:08:35 +0000218 def test_subclassing(self):
219 o = {'names with spaces': 'should be presented using repr()',
220 'others.should.not.be': 'like.this'}
221 exp = """\
222{'names with spaces': 'should be presented using repr()',
223 others.should.not.be: like.this}"""
224 self.assertEqual(DottedPrettyPrinter().pformat(o), exp)
225
Raymond Hettinger5310b692008-01-24 21:47:56 +0000226 def test_set_reprs(self):
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300227 self.assertEqual(pprint.pformat(set()), 'set([])')
Raymond Hettinger5310b692008-01-24 21:47:56 +0000228 self.assertEqual(pprint.pformat(set(range(3))), 'set([0, 1, 2])')
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300229 self.assertEqual(pprint.pformat(set(range(7)), width=20), '''\
230set([0,
231 1,
232 2,
233 3,
234 4,
235 5,
236 6])''')
237 self.assertEqual(pprint.pformat(set2(range(7)), width=20), '''\
238set2([0,
239 1,
240 2,
241 3,
242 4,
243 5,
244 6])''')
245 self.assertEqual(pprint.pformat(set3(range(7)), width=20),
246 'set3([0, 1, 2, 3, 4, 5, 6])')
247
248 self.assertEqual(pprint.pformat(frozenset()), 'frozenset([])')
249 self.assertEqual(pprint.pformat(frozenset(range(3))),
250 'frozenset([0, 1, 2])')
251 self.assertEqual(pprint.pformat(frozenset(range(7)), width=20), '''\
252frozenset([0,
253 1,
254 2,
255 3,
256 4,
257 5,
258 6])''')
259 self.assertEqual(pprint.pformat(frozenset2(range(7)), width=20), '''\
260frozenset2([0,
261 1,
262 2,
263 3,
264 4,
265 5,
266 6])''')
267 self.assertEqual(pprint.pformat(frozenset3(range(7)), width=20),
268 'frozenset3([0, 1, 2, 3, 4, 5, 6])')
269
270 def test_set_of_sets_reprs(self):
Raymond Hettinger5310b692008-01-24 21:47:56 +0000271 cube_repr_tgt = """\
272{frozenset([]): frozenset([frozenset([2]), frozenset([0]), frozenset([1])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300273 frozenset([0]): frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000274 frozenset([0, 2]),
275 frozenset([0, 1])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300276 frozenset([1]): frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000277 frozenset([1, 2]),
278 frozenset([0, 1])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300279 frozenset([2]): frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000280 frozenset([1, 2]),
281 frozenset([0, 2])]),
282 frozenset([1, 2]): frozenset([frozenset([2]),
283 frozenset([1]),
284 frozenset([0, 1, 2])]),
285 frozenset([0, 2]): frozenset([frozenset([2]),
286 frozenset([0]),
287 frozenset([0, 1, 2])]),
288 frozenset([0, 1]): frozenset([frozenset([0]),
289 frozenset([1]),
290 frozenset([0, 1, 2])]),
291 frozenset([0, 1, 2]): frozenset([frozenset([1, 2]),
292 frozenset([0, 2]),
293 frozenset([0, 1])])}"""
294 cube = test.test_set.cube(3)
295 self.assertEqual(pprint.pformat(cube), cube_repr_tgt)
296 cubo_repr_tgt = """\
297{frozenset([frozenset([0, 2]), frozenset([0])]): frozenset([frozenset([frozenset([0,
298 2]),
299 frozenset([0,
300 1,
301 2])]),
302 frozenset([frozenset([0]),
303 frozenset([0,
304 1])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300305 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000306 frozenset([0])]),
307 frozenset([frozenset([2]),
308 frozenset([0,
309 2])])]),
310 frozenset([frozenset([0, 1]), frozenset([1])]): frozenset([frozenset([frozenset([0,
311 1]),
312 frozenset([0,
313 1,
314 2])]),
315 frozenset([frozenset([0]),
316 frozenset([0,
317 1])]),
318 frozenset([frozenset([1]),
319 frozenset([1,
320 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300321 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000322 frozenset([1])])]),
323 frozenset([frozenset([1, 2]), frozenset([1])]): frozenset([frozenset([frozenset([1,
324 2]),
325 frozenset([0,
326 1,
327 2])]),
328 frozenset([frozenset([2]),
329 frozenset([1,
330 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300331 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000332 frozenset([1])]),
333 frozenset([frozenset([1]),
334 frozenset([0,
335 1])])]),
336 frozenset([frozenset([1, 2]), frozenset([2])]): frozenset([frozenset([frozenset([1,
337 2]),
338 frozenset([0,
339 1,
340 2])]),
341 frozenset([frozenset([1]),
342 frozenset([1,
343 2])]),
344 frozenset([frozenset([2]),
345 frozenset([0,
346 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300347 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000348 frozenset([2])])]),
349 frozenset([frozenset([]), frozenset([0])]): frozenset([frozenset([frozenset([0]),
350 frozenset([0,
351 1])]),
352 frozenset([frozenset([0]),
353 frozenset([0,
354 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300355 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000356 frozenset([1])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300357 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000358 frozenset([2])])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300359 frozenset([frozenset([]), frozenset([1])]): frozenset([frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000360 frozenset([0])]),
361 frozenset([frozenset([1]),
362 frozenset([1,
363 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300364 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000365 frozenset([2])]),
366 frozenset([frozenset([1]),
367 frozenset([0,
368 1])])]),
369 frozenset([frozenset([2]), frozenset([])]): frozenset([frozenset([frozenset([2]),
370 frozenset([1,
371 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300372 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000373 frozenset([0])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300374 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000375 frozenset([1])]),
376 frozenset([frozenset([2]),
377 frozenset([0,
378 2])])]),
379 frozenset([frozenset([0, 1, 2]), frozenset([0, 1])]): frozenset([frozenset([frozenset([1,
380 2]),
381 frozenset([0,
382 1,
383 2])]),
384 frozenset([frozenset([0,
385 2]),
386 frozenset([0,
387 1,
388 2])]),
389 frozenset([frozenset([0]),
390 frozenset([0,
391 1])]),
392 frozenset([frozenset([1]),
393 frozenset([0,
394 1])])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300395 frozenset([frozenset([0]), frozenset([0, 1])]): frozenset([frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000396 frozenset([0])]),
397 frozenset([frozenset([0,
398 1]),
399 frozenset([0,
400 1,
401 2])]),
402 frozenset([frozenset([0]),
403 frozenset([0,
404 2])]),
405 frozenset([frozenset([1]),
406 frozenset([0,
407 1])])]),
408 frozenset([frozenset([2]), frozenset([0, 2])]): frozenset([frozenset([frozenset([0,
409 2]),
410 frozenset([0,
411 1,
412 2])]),
413 frozenset([frozenset([2]),
414 frozenset([1,
415 2])]),
416 frozenset([frozenset([0]),
417 frozenset([0,
418 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300419 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000420 frozenset([2])])]),
421 frozenset([frozenset([0, 1, 2]), frozenset([0, 2])]): frozenset([frozenset([frozenset([1,
422 2]),
423 frozenset([0,
424 1,
425 2])]),
426 frozenset([frozenset([0,
427 1]),
428 frozenset([0,
429 1,
430 2])]),
431 frozenset([frozenset([0]),
432 frozenset([0,
433 2])]),
434 frozenset([frozenset([2]),
435 frozenset([0,
436 2])])]),
437 frozenset([frozenset([1, 2]), frozenset([0, 1, 2])]): frozenset([frozenset([frozenset([0,
438 2]),
439 frozenset([0,
440 1,
441 2])]),
442 frozenset([frozenset([0,
443 1]),
444 frozenset([0,
445 1,
446 2])]),
447 frozenset([frozenset([2]),
448 frozenset([1,
449 2])]),
450 frozenset([frozenset([1]),
451 frozenset([1,
452 2])])])}"""
453
454 cubo = test.test_set.linegraph(cube)
455 self.assertEqual(pprint.pformat(cubo), cubo_repr_tgt)
456
Georg Brandl23da6e62008-05-12 16:26:52 +0000457 def test_depth(self):
458 nested_tuple = (1, (2, (3, (4, (5, 6)))))
459 nested_dict = {1: {2: {3: {4: {5: {6: 6}}}}}}
460 nested_list = [1, [2, [3, [4, [5, [6, []]]]]]]
461 self.assertEqual(pprint.pformat(nested_tuple), repr(nested_tuple))
462 self.assertEqual(pprint.pformat(nested_dict), repr(nested_dict))
463 self.assertEqual(pprint.pformat(nested_list), repr(nested_list))
464
465 lv1_tuple = '(1, (...))'
466 lv1_dict = '{1: {...}}'
467 lv1_list = '[1, [...]]'
468 self.assertEqual(pprint.pformat(nested_tuple, depth=1), lv1_tuple)
469 self.assertEqual(pprint.pformat(nested_dict, depth=1), lv1_dict)
470 self.assertEqual(pprint.pformat(nested_list, depth=1), lv1_list)
471
Fred Drakeaee113d2002-04-02 05:08:35 +0000472
473class DottedPrettyPrinter(pprint.PrettyPrinter):
Guido van Rossum32c2ae72002-08-22 19:45:32 +0000474
Fred Drakeaee113d2002-04-02 05:08:35 +0000475 def format(self, object, context, maxlevels, level):
476 if isinstance(object, str):
477 if ' ' in object:
Walter Dörwald70a6b492004-02-12 17:35:32 +0000478 return repr(object), 1, 0
Fred Drakeaee113d2002-04-02 05:08:35 +0000479 else:
480 return object, 0, 0
481 else:
482 return pprint.PrettyPrinter.format(
483 self, object, context, maxlevels, level)
484
485
Fred Drake2e2be372001-09-20 21:33:42 +0000486def test_main():
Fred Drakeb456e4f2002-12-31 07:16:16 +0000487 test.test_support.run_unittest(QueryTestCase)
Fred Drake2e2be372001-09-20 21:33:42 +0000488
489
490if __name__ == "__main__":
491 test_main()