14adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport unittest 24adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport sys 34adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 44adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaofrom test import test_support 54adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 64adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass G: 74adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'Sequence using __getitem__' 84adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __init__(self, seqn): 94adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.seqn = seqn 104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __getitem__(self, i): 114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return self.seqn[i] 124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass I: 144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'Sequence using iterator protocol' 154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __init__(self, seqn): 164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.seqn = seqn 174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.i = 0 184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __iter__(self): 194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return self 204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def next(self): 214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if self.i >= len(self.seqn): raise StopIteration 224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao v = self.seqn[self.i] 234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.i += 1 244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return v 254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass Ig: 274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'Sequence using iterator protocol defined with a generator' 284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __init__(self, seqn): 294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.seqn = seqn 304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.i = 0 314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __iter__(self): 324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for val in self.seqn: 334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao yield val 344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass X: 364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'Missing __getitem__ and __iter__' 374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __init__(self, seqn): 384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.seqn = seqn 394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.i = 0 404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def next(self): 414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if self.i >= len(self.seqn): raise StopIteration 424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao v = self.seqn[self.i] 434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.i += 1 444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return v 454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass E: 474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'Test propagation of exceptions' 484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __init__(self, seqn): 494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.seqn = seqn 504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.i = 0 514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __iter__(self): 524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return self 534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def next(self): 544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 3 // 0 554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass N: 574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 'Iterator missing next()' 584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __init__(self, seqn): 594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.seqn = seqn 604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.i = 0 614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __iter__(self): 624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return self 634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass EnumerateTestCase(unittest.TestCase): 654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao enum = enumerate 674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao seq, res = 'abc', [(0,'a'), (1,'b'), (2,'c')] 684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_basicfunction(self): 704adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(type(self.enum(self.seq)), self.enum) 714adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao e = self.enum(self.seq) 724adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(iter(e), e) 734adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(list(self.enum(self.seq)), self.res) 744adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.enum.__doc__ 754adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 764adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_getitemseqn(self): 774adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(list(self.enum(G(self.seq))), self.res) 784adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao e = self.enum(G('')) 794adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(StopIteration, e.next) 804adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 814adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_iteratorseqn(self): 824adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(list(self.enum(I(self.seq))), self.res) 834adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao e = self.enum(I('')) 844adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(StopIteration, e.next) 854adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 864adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_iteratorgenerator(self): 874adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(list(self.enum(Ig(self.seq))), self.res) 884adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao e = self.enum(Ig('')) 894adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(StopIteration, e.next) 904adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 914adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_noniterable(self): 924adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, self.enum, X(self.seq)) 934adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 944adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_illformediterable(self): 954adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, list, self.enum(N(self.seq))) 964adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 974adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_exception_propagation(self): 984adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(ZeroDivisionError, list, self.enum(E(self.seq))) 994adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1004adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_argumentcheck(self): 1014adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, self.enum) # no arguments 1024adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, self.enum, 1) # wrong type (not iterable) 1034adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, self.enum, 'abc', 'a') # wrong type 1044adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, self.enum, 'abc', 2, 3) # too many arguments 1054adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1064adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao @test_support.cpython_only 1074adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_tuple_reuse(self): 1084adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Tests an implementation detail where tuple is reused 1094adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # whenever nothing else holds a reference to it 1104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(len(set(map(id, list(enumerate(self.seq))))), len(self.seq)) 1114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(len(set(map(id, enumerate(self.seq)))), min(1,len(self.seq))) 1124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass MyEnum(enumerate): 1144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pass 1154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass SubclassTestCase(EnumerateTestCase): 1174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao enum = MyEnum 1194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass TestEmpty(EnumerateTestCase): 1214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao seq, res = '', [] 1234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass TestBig(EnumerateTestCase): 1254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao seq = range(10,20000,2) 1274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao res = zip(range(20000), seq) 1284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass TestReversed(unittest.TestCase): 1304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_simple(self): 1324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao class A: 1334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __getitem__(self, i): 1344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if i < 5: 1354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return str(i) 1364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao raise StopIteration 1374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __len__(self): 1384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return 5 1394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for data in 'abc', range(5), tuple(enumerate('abc')), A(), xrange(1,17,5): 1404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(list(data)[::-1], list(reversed(data))) 1414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, reversed, {}) 1424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # don't allow keyword arguments 1434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, reversed, [], a=1) 1444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_classic_class(self): 1464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao class A: 1474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __reversed__(self): 1484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return [2, 1] 1494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(list(reversed(A())), [2, 1]) 1504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_xrange_optimization(self): 1524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao x = xrange(1) 1534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(type(reversed(x)), type(iter(x))) 1544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao @test_support.cpython_only 1564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_len(self): 1574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # This is an implementation detail, not an interface requirement 1584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao from test.test_iterlen import len 1594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for s in ('hello', tuple('hello'), list('hello'), xrange(5)): 1604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(len(reversed(s)), len(s)) 1614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao r = reversed(s) 1624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao list(r) 1634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(len(r), 0) 1644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao class SeqWithWeirdLen: 1654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao called = False 1664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __len__(self): 1674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if not self.called: 1684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.called = True 1694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return 10 1704adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao raise ZeroDivisionError 1714adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __getitem__(self, index): 1724adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return index 1734adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao r = reversed(SeqWithWeirdLen()) 1744adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(ZeroDivisionError, len, r) 1754adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1764adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1774adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_gc(self): 1784adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao class Seq: 1794adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __len__(self): 1804adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return 10 1814adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __getitem__(self, index): 1824adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return index 1834adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao s = Seq() 1844adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao r = reversed(s) 1854adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao s.r = r 1864adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1874adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_args(self): 1884adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, reversed) 1894adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, reversed, [], 'extra') 1904adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 1914adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_bug1229429(self): 1924adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # this bug was never in reversed, it was in 1934adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # PyObject_CallMethod, and reversed_new calls that sometimes. 1944adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if not hasattr(sys, "getrefcount"): 1954adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao return 1964adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def f(): 1974adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pass 1984adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao r = f.__reversed__ = object() 1994adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao rc = sys.getrefcount(r) 2004adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for i in range(10): 2014adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao try: 2024adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao reversed(f) 2034adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao except TypeError: 2044adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao pass 2054adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao else: 2064adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.fail("non-callable __reversed__ didn't raise!") 2074adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(rc, sys.getrefcount(r)) 2084adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2094adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_objmethods(self): 2104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # Objects must have __len__() and __getitem__() implemented. 2114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao class NoLen(object): 2124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __getitem__(self): return 1 2134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao nl = NoLen() 2144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, reversed, nl) 2154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao class NoGetItem(object): 2174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def __len__(self): return 2 2184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao ngi = NoGetItem() 2194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertRaises(TypeError, reversed, ngi) 2204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass EnumerateStartTestCase(EnumerateTestCase): 2234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao def test_basicfunction(self): 2254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao e = self.enum(self.seq) 2264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(iter(e), e) 2274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao self.assertEqual(list(self.enum(self.seq)), self.res) 2284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass TestStart(EnumerateStartTestCase): 2314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao enum = lambda self, i: enumerate(i, start=11) 2334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao seq, res = 'abc', [(11, 'a'), (12, 'b'), (13, 'c')] 2344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass TestLongStart(EnumerateStartTestCase): 2374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao enum = lambda self, i: enumerate(i, start=sys.maxint+1) 2394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao seq, res = 'abc', [(sys.maxint+1,'a'), (sys.maxint+2,'b'), 2404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao (sys.maxint+3,'c')] 2414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaodef test_main(verbose=None): 2444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao test_support.run_unittest(__name__) 2454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao # verify reference counting 2474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao if verbose and hasattr(sys, "gettotalrefcount"): 2484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao counts = [None] * 5 2494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao for i in xrange(len(counts)): 2504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao test_support.run_unittest(__name__) 2514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao counts[i] = sys.gettotalrefcount() 2524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao print counts 2534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao 2544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoif __name__ == "__main__": 2554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao test_main(verbose=True) 256