14adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport pprint 24adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport test.test_support 34adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport unittest 44adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport test.test_set 54adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 64adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaotry: 74adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao uni = unicode 84adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoexcept NameError: 94adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def uni(x): 104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return x 114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao# list, tuple and dict subclasses that do or don't overwrite __repr__ 134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass list2(list): 144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pass 154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass list3(list): 174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __repr__(self): 184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return list.__repr__(self) 194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass tuple2(tuple): 214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pass 224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass tuple3(tuple): 244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __repr__(self): 254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return tuple.__repr__(self) 264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass dict2(dict): 284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pass 294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass dict3(dict): 314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __repr__(self): 324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return dict.__repr__(self) 334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass QueryTestCase(unittest.TestCase): 354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def setUp(self): 374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.a = range(100) 384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.b = range(200) 394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.a[-12] = self.b 404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_basic(self): 424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Verify .isrecursive() and .isreadable() w/o recursion 434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pp = pprint.PrettyPrinter() 444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, uni("yaddayadda"), 454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.a, self.b): 464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # module-level convenience functions 474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(pprint.isrecursive(safe), 484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected not isrecursive for %r" % (safe,)) 494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue(pprint.isreadable(safe), 504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected isreadable for %r" % (safe,)) 514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # PrettyPrinter methods 524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(pp.isrecursive(safe), 534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected not isrecursive for %r" % (safe,)) 544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue(pp.isreadable(safe), 554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected isreadable for %r" % (safe,)) 564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_knotted(self): 584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Verify .isrecursive() and .isreadable() w/ recursion 594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Tie a knot. 604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.b[67] = self.a 614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Messy dict. 624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.d = {} 634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.d[0] = self.d[1] = self.d[2] = self.d 644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pp = pprint.PrettyPrinter() 664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for icky in self.a, self.b, self.d, (self.d, self.d): 684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue(pprint.isrecursive(icky), "expected isrecursive") 694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(pprint.isreadable(icky), "expected not isreadable") 704adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue(pp.isrecursive(icky), "expected isrecursive") 714adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(pp.isreadable(icky), "expected not isreadable") 724adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 734adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Break the cycles. 744adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.d.clear() 754adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao del self.a[:] 764adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao del self.b[:] 774adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 784adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for safe in self.a, self.b, self.d, (self.d, self.d): 794adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # module-level convenience functions 804adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(pprint.isrecursive(safe), 814adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected not isrecursive for %r" % (safe,)) 824adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue(pprint.isreadable(safe), 834adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected isreadable for %r" % (safe,)) 844adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # PrettyPrinter methods 854adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(pp.isrecursive(safe), 864adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected not isrecursive for %r" % (safe,)) 874adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue(pp.isreadable(safe), 884adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected isreadable for %r" % (safe,)) 894adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 904adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_unreadable(self): 914adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Not recursive but not readable anyway 924adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pp = pprint.PrettyPrinter() 934adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for unreadable in type(3), pprint, pprint.isrecursive: 944adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # module-level convenience functions 954adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(pprint.isrecursive(unreadable), 964adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected not isrecursive for %r" % (unreadable,)) 974adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(pprint.isreadable(unreadable), 984adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected not isreadable for %r" % (unreadable,)) 994adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # PrettyPrinter methods 1004adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(pp.isrecursive(unreadable), 1014adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected not isrecursive for %r" % (unreadable,)) 1024adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertFalse(pp.isreadable(unreadable), 1034adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected not isreadable for %r" % (unreadable,)) 1044adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1054adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_same_as_repr(self): 1064adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Simple objects, small containers and classes that overwrite __repr__ 1074adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # For those the result should be the same as repr(). 1084adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Ahem. The docs don't say anything about that -- this appears to 1094adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # be testing an implementation quirk. Starting in Python 2.5, it's 1104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # not true for dicts: pprint always sorts dicts by key now; before, 1114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # it sorted a dict display if and only if the display required 1124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # multiple lines. For that reason, dicts with more than one element 1134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # aren't tested here. 1144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for simple in (0, 0L, 0+0j, 0.0, "", uni(""), 1154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao (), tuple2(), tuple3(), 1164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao [], list2(), list3(), 1174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao {}, dict2(), dict3(), 1184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertTrue, pprint, 1194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao -6, -6L, -6-6j, -1.5, "x", uni("x"), (3,), [3], {3: 6}, 1204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao (1,2), [3,4], {5: 6}, 1214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao tuple2((1,2)), tuple3((1,2)), tuple3(range(100)), 1224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao [3,4], list2([3,4]), list3([3,4]), list3(range(100)), 1234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao dict2({5: 6}), dict3({5: 6}), 1244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao range(10, -11, -1) 1254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ): 1264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao native = repr(simple) 1274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for function in "pformat", "saferepr": 1284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao f = getattr(pprint, function) 1294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao got = f(simple) 1304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(native, got, 1314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "expected %s got %s from pprint.%s" % 1324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao (native, got, function)) 1334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_basic_line_wrap(self): 1354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # verify basic line-wrapping operation 1364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao o = {'RPM_cal': 0, 1374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'RPM_cal2': 48059, 1384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'Speed_cal': 0, 1394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'controldesk_runtime_us': 0, 1404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'main_code_runtime_us': 0, 1414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'read_io_runtime_us': 0, 1424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'write_io_runtime_us': 43690} 1434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao exp = """\ 1444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao{'RPM_cal': 0, 1454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'RPM_cal2': 48059, 1464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'Speed_cal': 0, 1474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'controldesk_runtime_us': 0, 1484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'main_code_runtime_us': 0, 1494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'read_io_runtime_us': 0, 1504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'write_io_runtime_us': 43690}""" 1514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for type in [dict, dict2]: 1524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(type(o)), exp) 1534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao o = range(100) 1554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao exp = '[%s]' % ',\n '.join(map(str, o)) 1564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for type in [list, list2]: 1574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(type(o)), exp) 1584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao o = tuple(range(100)) 1604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao exp = '(%s)' % ',\n '.join(map(str, o)) 1614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for type in [tuple, tuple2]: 1624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(type(o)), exp) 1634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # indent parameter 1654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao o = range(100) 1664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao exp = '[ %s]' % ',\n '.join(map(str, o)) 1674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for type in [list, list2]: 1684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(type(o), indent=4), exp) 1694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1704adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_nested_indentations(self): 1714adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao o1 = list(range(10)) 1724adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao o2 = dict(first=1, second=2, third=3) 1734adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao o = [o1, o2] 1744adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao expected = """\ 1754adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao[ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 1764adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao { 'first': 1, 1774adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'second': 2, 1784adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'third': 3}]""" 1794adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(o, indent=4, width=42), expected) 1804adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1814adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_sorted_dict(self): 1824adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Starting in Python 2.5, pprint sorts dict displays by key regardless 1834adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # of how small the dictionary may be. 1844adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Before the change, on 32-bit Windows pformat() gave order 1854adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # 'a', 'c', 'b' here, so this test failed. 1864adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao d = {'a': 1, 'b': 1, 'c': 1} 1874adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(d), "{'a': 1, 'b': 1, 'c': 1}") 1884adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat([d, d]), 1894adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao "[{'a': 1, 'b': 1, 'c': 1}, {'a': 1, 'b': 1, 'c': 1}]") 1904adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1914adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # The next one is kind of goofy. The sorted order depends on the 1924adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # alphabetic order of type names: "int" < "str" < "tuple". Before 1934adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Python 2.5, this was in the test_same_as_repr() test. It's worth 1944adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # keeping around for now because it's one of few tests of pprint 1954adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # against a crazy mix of types. 1964adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat({"xy\tab\n": (3,), 5: [[]], (): {}}), 1974adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao r"{5: [[]], 'xy\tab\n': (3,), (): {}}") 1984adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1994adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_subclassing(self): 2004adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao o = {'names with spaces': 'should be presented using repr()', 2014adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'others.should.not.be': 'like.this'} 2024adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao exp = """\ 2034adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao{'names with spaces': 'should be presented using repr()', 2044adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao others.should.not.be: like.this}""" 2054adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(DottedPrettyPrinter().pformat(o), exp) 2064adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2074adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_set_reprs(self): 2084adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(set()), 'set()') 2094adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(set(range(3))), 'set([0, 1, 2])') 2104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(frozenset()), 'frozenset()') 2114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(frozenset(range(3))), 'frozenset([0, 1, 2])') 2124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao cube_repr_tgt = """\ 2134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao{frozenset([]): frozenset([frozenset([2]), frozenset([0]), frozenset([1])]), 2144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0]): frozenset([frozenset(), 2154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2]), 2164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 1])]), 2174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1]): frozenset([frozenset(), 2184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 2]), 2194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 1])]), 2204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([2]): frozenset([frozenset(), 2214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 2]), 2224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2])]), 2234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 2]): frozenset([frozenset([2]), 2244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1]), 2254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 1, 2])]), 2264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2]): frozenset([frozenset([2]), 2274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0]), 2284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 1, 2])]), 2294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 1]): frozenset([frozenset([0]), 2304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1]), 2314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 1, 2])]), 2324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 1, 2]): frozenset([frozenset([1, 2]), 2334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2]), 2344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 1])])}""" 2354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao cube = test.test_set.cube(3) 2364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(cube), cube_repr_tgt) 2374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao cubo_repr_tgt = """\ 2384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao{frozenset([frozenset([0, 2]), frozenset([0])]): frozenset([frozenset([frozenset([0, 2394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2]), 2404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 2424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 2434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0]), 2444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1])]), 2464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset(), 2474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0])]), 2484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([2]), 2494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])])]), 2514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0, 1]), frozenset([1])]): frozenset([frozenset([frozenset([0, 2524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1]), 2534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 2554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 2564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0]), 2574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1])]), 2594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1]), 2604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 2614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 2624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset(), 2634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1])])]), 2644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1, 2]), frozenset([1])]): frozenset([frozenset([frozenset([1, 2654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2]), 2664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 2684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 2694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([2]), 2704adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 2714adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 2724adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset(), 2734adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1])]), 2744adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1]), 2754adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2764adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1])])]), 2774adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1, 2]), frozenset([2])]): frozenset([frozenset([frozenset([1, 2784adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2]), 2794adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2804adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 2814adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 2824adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1]), 2834adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 2844adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 2854adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([2]), 2864adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2874adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 2884adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset(), 2894adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([2])])]), 2904adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([]), frozenset([0])]): frozenset([frozenset([frozenset([0]), 2914adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2924adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1])]), 2934adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0]), 2944adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 2954adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 2964adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset(), 2974adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1])]), 2984adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset(), 2994adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([2])])]), 3004adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([]), frozenset([1])]): frozenset([frozenset([frozenset(), 3014adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0])]), 3024adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1]), 3034adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 3044adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3054adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset(), 3064adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([2])]), 3074adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1]), 3084adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3094adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1])])]), 3104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([2]), frozenset([])]): frozenset([frozenset([frozenset([2]), 3114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 3124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset(), 3144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0])]), 3154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset(), 3164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1])]), 3174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([2]), 3184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])])]), 3204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0, 1, 2]), frozenset([0, 1])]): frozenset([frozenset([frozenset([1, 3214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2]), 3224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 3244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0, 3264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2]), 3274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 3294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0]), 3314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1])]), 3334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1]), 3344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1])])]), 3364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0]), frozenset([0, 1])]): frozenset([frozenset([frozenset(), 3374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0])]), 3384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0, 3394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1]), 3404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 3424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0]), 3444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1]), 3474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1])])]), 3494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([2]), frozenset([0, 2])]): frozenset([frozenset([frozenset([0, 3504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2]), 3514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 3534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([2]), 3554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 3564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0]), 3584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset(), 3614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([2])])]), 3624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0, 1, 2]), frozenset([0, 2])]): frozenset([frozenset([frozenset([1, 3634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2]), 3644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 3664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0, 3684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1]), 3694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3704adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 3714adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3724adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0]), 3734adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3744adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3754adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([2]), 3764adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3774adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])])]), 3784adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1, 2]), frozenset([0, 1, 2])]): frozenset([frozenset([frozenset([0, 3794adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2]), 3804adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3814adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 3824adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3834adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([0, 3844adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1]), 3854adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([0, 3864adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1, 3874adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3884adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([2]), 3894adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 3904adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])]), 3914adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([frozenset([1]), 3924adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao frozenset([1, 3934adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2])])])}""" 3944adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 3954adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao cubo = test.test_set.linegraph(cube) 3964adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(cubo), cubo_repr_tgt) 3974adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 3984adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_depth(self): 3994adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao nested_tuple = (1, (2, (3, (4, (5, 6))))) 4004adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao nested_dict = {1: {2: {3: {4: {5: {6: 6}}}}}} 4014adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao nested_list = [1, [2, [3, [4, [5, [6, []]]]]]] 4024adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(nested_tuple), repr(nested_tuple)) 4034adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(nested_dict), repr(nested_dict)) 4044adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(nested_list), repr(nested_list)) 4054adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 4064adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao lv1_tuple = '(1, (...))' 4074adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao lv1_dict = '{1: {...}}' 4084adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao lv1_list = '[1, [...]]' 4094adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(nested_tuple, depth=1), lv1_tuple) 4104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(nested_dict, depth=1), lv1_dict) 4114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(pprint.pformat(nested_list, depth=1), lv1_list) 4124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 4134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 4144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass DottedPrettyPrinter(pprint.PrettyPrinter): 4154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 4164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def format(self, object, context, maxlevels, level): 4174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if isinstance(object, str): 4184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if ' ' in object: 4194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return repr(object), 1, 0 4204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao else: 4214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return object, 0, 0 4224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao else: 4234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return pprint.PrettyPrinter.format( 4244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self, object, context, maxlevels, level) 4254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 4264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 4274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaodef test_main(): 4284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao test.test_support.run_unittest(QueryTestCase) 4294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 4304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 4314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoif __name__ == "__main__": 4324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao test_main() 433