blob: 50493f6d1a8b6e84c17e160dc43eb7b4b3f12544 [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"),
Fred Drake43913dd2001-05-14 17:41:20 +000059 self.a, self.b):
Fred Drakeb456e4f2002-12-31 07:16:16 +000060 # module-level convenience functions
Ezio Melotti469a05f2010-01-24 20:48:35 +000061 self.assertFalse(pprint.isrecursive(safe),
62 "expected not isrecursive for %r" % (safe,))
63 self.assertTrue(pprint.isreadable(safe),
64 "expected isreadable for %r" % (safe,))
Fred Drakeb456e4f2002-12-31 07:16:16 +000065 # PrettyPrinter methods
Ezio Melotti469a05f2010-01-24 20:48:35 +000066 self.assertFalse(pp.isrecursive(safe),
67 "expected not isrecursive for %r" % (safe,))
68 self.assertTrue(pp.isreadable(safe),
69 "expected isreadable for %r" % (safe,))
Tim Petersa814db52001-05-14 07:05:58 +000070
Fred Drake43913dd2001-05-14 17:41:20 +000071 def test_knotted(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +000072 # Verify .isrecursive() and .isreadable() w/ recursion
Fred Drake43913dd2001-05-14 17:41:20 +000073 # Tie a knot.
74 self.b[67] = self.a
75 # Messy dict.
76 self.d = {}
77 self.d[0] = self.d[1] = self.d[2] = self.d
Tim Petersa814db52001-05-14 07:05:58 +000078
Fred Drakeb456e4f2002-12-31 07:16:16 +000079 pp = pprint.PrettyPrinter()
Tim Petersa814db52001-05-14 07:05:58 +000080
Fred Drake43913dd2001-05-14 17:41:20 +000081 for icky in self.a, self.b, self.d, (self.d, self.d):
Ezio Melotti469a05f2010-01-24 20:48:35 +000082 self.assertTrue(pprint.isrecursive(icky), "expected isrecursive")
83 self.assertFalse(pprint.isreadable(icky), "expected not isreadable")
84 self.assertTrue(pp.isrecursive(icky), "expected isrecursive")
85 self.assertFalse(pp.isreadable(icky), "expected not isreadable")
Fred Drake43913dd2001-05-14 17:41:20 +000086
87 # Break the cycles.
88 self.d.clear()
89 del self.a[:]
90 del self.b[:]
91
92 for safe in self.a, self.b, self.d, (self.d, self.d):
Fred Drakeb456e4f2002-12-31 07:16:16 +000093 # module-level convenience functions
Ezio Melotti469a05f2010-01-24 20:48:35 +000094 self.assertFalse(pprint.isrecursive(safe),
95 "expected not isrecursive for %r" % (safe,))
96 self.assertTrue(pprint.isreadable(safe),
97 "expected isreadable for %r" % (safe,))
Fred Drakeb456e4f2002-12-31 07:16:16 +000098 # PrettyPrinter methods
Ezio Melotti469a05f2010-01-24 20:48:35 +000099 self.assertFalse(pp.isrecursive(safe),
100 "expected not isrecursive for %r" % (safe,))
101 self.assertTrue(pp.isreadable(safe),
102 "expected isreadable for %r" % (safe,))
Fred Drake43913dd2001-05-14 17:41:20 +0000103
104 def test_unreadable(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +0000105 # Not recursive but not readable anyway
Fred Drakeb456e4f2002-12-31 07:16:16 +0000106 pp = pprint.PrettyPrinter()
Fred Drake43913dd2001-05-14 17:41:20 +0000107 for unreadable in type(3), pprint, pprint.isrecursive:
Fred Drakeb456e4f2002-12-31 07:16:16 +0000108 # module-level convenience functions
Ezio Melotti469a05f2010-01-24 20:48:35 +0000109 self.assertFalse(pprint.isrecursive(unreadable),
110 "expected not isrecursive for %r" % (unreadable,))
111 self.assertFalse(pprint.isreadable(unreadable),
112 "expected not isreadable for %r" % (unreadable,))
Fred Drakeb456e4f2002-12-31 07:16:16 +0000113 # PrettyPrinter methods
Ezio Melotti469a05f2010-01-24 20:48:35 +0000114 self.assertFalse(pp.isrecursive(unreadable),
115 "expected not isrecursive for %r" % (unreadable,))
116 self.assertFalse(pp.isreadable(unreadable),
117 "expected not isreadable for %r" % (unreadable,))
Fred Drake43913dd2001-05-14 17:41:20 +0000118
Tim Peters95b3f782001-05-14 18:39:41 +0000119 def test_same_as_repr(self):
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000120 # Simple objects, small containers and classes that overwrite __repr__
Tim Petersd609b1a2006-06-02 23:22:51 +0000121 # For those the result should be the same as repr().
122 # Ahem. The docs don't say anything about that -- this appears to
123 # be testing an implementation quirk. Starting in Python 2.5, it's
124 # not true for dicts: pprint always sorts dicts by key now; before,
125 # it sorted a dict display if and only if the display required
126 # multiple lines. For that reason, dicts with more than one element
127 # aren't tested here.
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000128 for simple in (0, 0L, 0+0j, 0.0, "", uni(""),
129 (), tuple2(), tuple3(),
130 [], list2(), list3(),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300131 set(), set2(), set3(),
132 frozenset(), frozenset2(), frozenset3(),
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000133 {}, dict2(), dict3(),
Ezio Melotti469a05f2010-01-24 20:48:35 +0000134 self.assertTrue, pprint,
Martin v. Löwis339d0f72001-08-17 18:39:25 +0000135 -6, -6L, -6-6j, -1.5, "x", uni("x"), (3,), [3], {3: 6},
Benjamin Peterson68ffe3e2009-03-30 15:15:38 +0000136 (1,2), [3,4], {5: 6},
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000137 tuple2((1,2)), tuple3((1,2)), tuple3(range(100)),
138 [3,4], list2([3,4]), list3([3,4]), list3(range(100)),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300139 set({7}), set2({7}), set3({7}),
140 frozenset({8}), frozenset2({8}), frozenset3({8}),
Benjamin Peterson68ffe3e2009-03-30 15:15:38 +0000141 dict2({5: 6}), dict3({5: 6}),
Tim Peters95b3f782001-05-14 18:39:41 +0000142 range(10, -11, -1)
143 ):
144 native = repr(simple)
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300145 self.assertEqual(pprint.pformat(simple), native)
146 self.assertEqual(pprint.pformat(simple, width=1, indent=0)
147 .replace('\n', ' '), native)
148 self.assertEqual(pprint.saferepr(simple), native)
Fred Drake43913dd2001-05-14 17:41:20 +0000149
Barry Warsaw00859c02001-11-28 05:49:39 +0000150 def test_basic_line_wrap(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +0000151 # verify basic line-wrapping operation
Barry Warsaw00859c02001-11-28 05:49:39 +0000152 o = {'RPM_cal': 0,
153 'RPM_cal2': 48059,
154 'Speed_cal': 0,
155 'controldesk_runtime_us': 0,
156 'main_code_runtime_us': 0,
157 'read_io_runtime_us': 0,
158 'write_io_runtime_us': 43690}
159 exp = """\
160{'RPM_cal': 0,
161 'RPM_cal2': 48059,
162 'Speed_cal': 0,
163 'controldesk_runtime_us': 0,
164 'main_code_runtime_us': 0,
165 'read_io_runtime_us': 0,
166 'write_io_runtime_us': 43690}"""
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000167 for type in [dict, dict2]:
168 self.assertEqual(pprint.pformat(type(o)), exp)
169
170 o = range(100)
171 exp = '[%s]' % ',\n '.join(map(str, o))
172 for type in [list, list2]:
173 self.assertEqual(pprint.pformat(type(o)), exp)
174
175 o = tuple(range(100))
176 exp = '(%s)' % ',\n '.join(map(str, o))
177 for type in [tuple, tuple2]:
178 self.assertEqual(pprint.pformat(type(o)), exp)
Barry Warsaw00859c02001-11-28 05:49:39 +0000179
Walter Dörwaldc8de4582003-12-03 20:26:05 +0000180 # indent parameter
181 o = range(100)
182 exp = '[ %s]' % ',\n '.join(map(str, o))
183 for type in [list, list2]:
184 self.assertEqual(pprint.pformat(type(o), indent=4), exp)
185
Facundo Batista2da91c32008-06-21 17:43:56 +0000186 def test_nested_indentations(self):
187 o1 = list(range(10))
188 o2 = dict(first=1, second=2, third=3)
189 o = [o1, o2]
190 expected = """\
191[ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
192 { 'first': 1,
193 'second': 2,
194 'third': 3}]"""
195 self.assertEqual(pprint.pformat(o, indent=4, width=42), expected)
196
Tim Petersd609b1a2006-06-02 23:22:51 +0000197 def test_sorted_dict(self):
198 # Starting in Python 2.5, pprint sorts dict displays by key regardless
199 # of how small the dictionary may be.
200 # Before the change, on 32-bit Windows pformat() gave order
201 # 'a', 'c', 'b' here, so this test failed.
202 d = {'a': 1, 'b': 1, 'c': 1}
203 self.assertEqual(pprint.pformat(d), "{'a': 1, 'b': 1, 'c': 1}")
204 self.assertEqual(pprint.pformat([d, d]),
205 "[{'a': 1, 'b': 1, 'c': 1}, {'a': 1, 'b': 1, 'c': 1}]")
206
207 # The next one is kind of goofy. The sorted order depends on the
208 # alphabetic order of type names: "int" < "str" < "tuple". Before
209 # Python 2.5, this was in the test_same_as_repr() test. It's worth
210 # keeping around for now because it's one of few tests of pprint
211 # against a crazy mix of types.
212 self.assertEqual(pprint.pformat({"xy\tab\n": (3,), 5: [[]], (): {}}),
213 r"{5: [[]], 'xy\tab\n': (3,), (): {}}")
214
Fred Drakeaee113d2002-04-02 05:08:35 +0000215 def test_subclassing(self):
216 o = {'names with spaces': 'should be presented using repr()',
217 'others.should.not.be': 'like.this'}
218 exp = """\
219{'names with spaces': 'should be presented using repr()',
220 others.should.not.be: like.this}"""
221 self.assertEqual(DottedPrettyPrinter().pformat(o), exp)
222
Raymond Hettinger5310b692008-01-24 21:47:56 +0000223 def test_set_reprs(self):
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300224 self.assertEqual(pprint.pformat(set()), 'set([])')
Raymond Hettinger5310b692008-01-24 21:47:56 +0000225 self.assertEqual(pprint.pformat(set(range(3))), 'set([0, 1, 2])')
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300226 self.assertEqual(pprint.pformat(set(range(7)), width=20), '''\
227set([0,
228 1,
229 2,
230 3,
231 4,
232 5,
233 6])''')
234 self.assertEqual(pprint.pformat(set2(range(7)), width=20), '''\
235set2([0,
236 1,
237 2,
238 3,
239 4,
240 5,
241 6])''')
242 self.assertEqual(pprint.pformat(set3(range(7)), width=20),
243 'set3([0, 1, 2, 3, 4, 5, 6])')
244
245 self.assertEqual(pprint.pformat(frozenset()), 'frozenset([])')
246 self.assertEqual(pprint.pformat(frozenset(range(3))),
247 'frozenset([0, 1, 2])')
248 self.assertEqual(pprint.pformat(frozenset(range(7)), width=20), '''\
249frozenset([0,
250 1,
251 2,
252 3,
253 4,
254 5,
255 6])''')
256 self.assertEqual(pprint.pformat(frozenset2(range(7)), width=20), '''\
257frozenset2([0,
258 1,
259 2,
260 3,
261 4,
262 5,
263 6])''')
264 self.assertEqual(pprint.pformat(frozenset3(range(7)), width=20),
265 'frozenset3([0, 1, 2, 3, 4, 5, 6])')
266
267 def test_set_of_sets_reprs(self):
Raymond Hettinger5310b692008-01-24 21:47:56 +0000268 cube_repr_tgt = """\
269{frozenset([]): frozenset([frozenset([2]), frozenset([0]), frozenset([1])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300270 frozenset([0]): frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000271 frozenset([0, 2]),
272 frozenset([0, 1])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300273 frozenset([1]): frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000274 frozenset([1, 2]),
275 frozenset([0, 1])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300276 frozenset([2]): frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000277 frozenset([1, 2]),
278 frozenset([0, 2])]),
279 frozenset([1, 2]): frozenset([frozenset([2]),
280 frozenset([1]),
281 frozenset([0, 1, 2])]),
282 frozenset([0, 2]): frozenset([frozenset([2]),
283 frozenset([0]),
284 frozenset([0, 1, 2])]),
285 frozenset([0, 1]): frozenset([frozenset([0]),
286 frozenset([1]),
287 frozenset([0, 1, 2])]),
288 frozenset([0, 1, 2]): frozenset([frozenset([1, 2]),
289 frozenset([0, 2]),
290 frozenset([0, 1])])}"""
291 cube = test.test_set.cube(3)
292 self.assertEqual(pprint.pformat(cube), cube_repr_tgt)
293 cubo_repr_tgt = """\
294{frozenset([frozenset([0, 2]), frozenset([0])]): frozenset([frozenset([frozenset([0,
295 2]),
296 frozenset([0,
297 1,
298 2])]),
299 frozenset([frozenset([0]),
300 frozenset([0,
301 1])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300302 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000303 frozenset([0])]),
304 frozenset([frozenset([2]),
305 frozenset([0,
306 2])])]),
307 frozenset([frozenset([0, 1]), frozenset([1])]): frozenset([frozenset([frozenset([0,
308 1]),
309 frozenset([0,
310 1,
311 2])]),
312 frozenset([frozenset([0]),
313 frozenset([0,
314 1])]),
315 frozenset([frozenset([1]),
316 frozenset([1,
317 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300318 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000319 frozenset([1])])]),
320 frozenset([frozenset([1, 2]), frozenset([1])]): frozenset([frozenset([frozenset([1,
321 2]),
322 frozenset([0,
323 1,
324 2])]),
325 frozenset([frozenset([2]),
326 frozenset([1,
327 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300328 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000329 frozenset([1])]),
330 frozenset([frozenset([1]),
331 frozenset([0,
332 1])])]),
333 frozenset([frozenset([1, 2]), frozenset([2])]): frozenset([frozenset([frozenset([1,
334 2]),
335 frozenset([0,
336 1,
337 2])]),
338 frozenset([frozenset([1]),
339 frozenset([1,
340 2])]),
341 frozenset([frozenset([2]),
342 frozenset([0,
343 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300344 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000345 frozenset([2])])]),
346 frozenset([frozenset([]), frozenset([0])]): frozenset([frozenset([frozenset([0]),
347 frozenset([0,
348 1])]),
349 frozenset([frozenset([0]),
350 frozenset([0,
351 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300352 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000353 frozenset([1])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300354 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000355 frozenset([2])])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300356 frozenset([frozenset([]), frozenset([1])]): frozenset([frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000357 frozenset([0])]),
358 frozenset([frozenset([1]),
359 frozenset([1,
360 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300361 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000362 frozenset([2])]),
363 frozenset([frozenset([1]),
364 frozenset([0,
365 1])])]),
366 frozenset([frozenset([2]), frozenset([])]): frozenset([frozenset([frozenset([2]),
367 frozenset([1,
368 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300369 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000370 frozenset([0])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300371 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000372 frozenset([1])]),
373 frozenset([frozenset([2]),
374 frozenset([0,
375 2])])]),
376 frozenset([frozenset([0, 1, 2]), frozenset([0, 1])]): frozenset([frozenset([frozenset([1,
377 2]),
378 frozenset([0,
379 1,
380 2])]),
381 frozenset([frozenset([0,
382 2]),
383 frozenset([0,
384 1,
385 2])]),
386 frozenset([frozenset([0]),
387 frozenset([0,
388 1])]),
389 frozenset([frozenset([1]),
390 frozenset([0,
391 1])])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300392 frozenset([frozenset([0]), frozenset([0, 1])]): frozenset([frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000393 frozenset([0])]),
394 frozenset([frozenset([0,
395 1]),
396 frozenset([0,
397 1,
398 2])]),
399 frozenset([frozenset([0]),
400 frozenset([0,
401 2])]),
402 frozenset([frozenset([1]),
403 frozenset([0,
404 1])])]),
405 frozenset([frozenset([2]), frozenset([0, 2])]): frozenset([frozenset([frozenset([0,
406 2]),
407 frozenset([0,
408 1,
409 2])]),
410 frozenset([frozenset([2]),
411 frozenset([1,
412 2])]),
413 frozenset([frozenset([0]),
414 frozenset([0,
415 2])]),
Serhiy Storchakafdda2002013-10-02 11:40:26 +0300416 frozenset([frozenset([]),
Raymond Hettinger5310b692008-01-24 21:47:56 +0000417 frozenset([2])])]),
418 frozenset([frozenset([0, 1, 2]), frozenset([0, 2])]): frozenset([frozenset([frozenset([1,
419 2]),
420 frozenset([0,
421 1,
422 2])]),
423 frozenset([frozenset([0,
424 1]),
425 frozenset([0,
426 1,
427 2])]),
428 frozenset([frozenset([0]),
429 frozenset([0,
430 2])]),
431 frozenset([frozenset([2]),
432 frozenset([0,
433 2])])]),
434 frozenset([frozenset([1, 2]), frozenset([0, 1, 2])]): frozenset([frozenset([frozenset([0,
435 2]),
436 frozenset([0,
437 1,
438 2])]),
439 frozenset([frozenset([0,
440 1]),
441 frozenset([0,
442 1,
443 2])]),
444 frozenset([frozenset([2]),
445 frozenset([1,
446 2])]),
447 frozenset([frozenset([1]),
448 frozenset([1,
449 2])])])}"""
450
451 cubo = test.test_set.linegraph(cube)
452 self.assertEqual(pprint.pformat(cubo), cubo_repr_tgt)
453
Georg Brandl23da6e62008-05-12 16:26:52 +0000454 def test_depth(self):
455 nested_tuple = (1, (2, (3, (4, (5, 6)))))
456 nested_dict = {1: {2: {3: {4: {5: {6: 6}}}}}}
457 nested_list = [1, [2, [3, [4, [5, [6, []]]]]]]
458 self.assertEqual(pprint.pformat(nested_tuple), repr(nested_tuple))
459 self.assertEqual(pprint.pformat(nested_dict), repr(nested_dict))
460 self.assertEqual(pprint.pformat(nested_list), repr(nested_list))
461
462 lv1_tuple = '(1, (...))'
463 lv1_dict = '{1: {...}}'
464 lv1_list = '[1, [...]]'
465 self.assertEqual(pprint.pformat(nested_tuple, depth=1), lv1_tuple)
466 self.assertEqual(pprint.pformat(nested_dict, depth=1), lv1_dict)
467 self.assertEqual(pprint.pformat(nested_list, depth=1), lv1_list)
468
Fred Drakeaee113d2002-04-02 05:08:35 +0000469
470class DottedPrettyPrinter(pprint.PrettyPrinter):
Guido van Rossum32c2ae72002-08-22 19:45:32 +0000471
Fred Drakeaee113d2002-04-02 05:08:35 +0000472 def format(self, object, context, maxlevels, level):
473 if isinstance(object, str):
474 if ' ' in object:
Walter Dörwald70a6b492004-02-12 17:35:32 +0000475 return repr(object), 1, 0
Fred Drakeaee113d2002-04-02 05:08:35 +0000476 else:
477 return object, 0, 0
478 else:
479 return pprint.PrettyPrinter.format(
480 self, object, context, maxlevels, level)
481
482
Fred Drake2e2be372001-09-20 21:33:42 +0000483def test_main():
Fred Drakeb456e4f2002-12-31 07:16:16 +0000484 test.test_support.run_unittest(QueryTestCase)
Fred Drake2e2be372001-09-20 21:33:42 +0000485
486
487if __name__ == "__main__":
488 test_main()