[Python-checkins] python/dist/src/Lib/test test_enumerate.py,1.4,1.5

rhettinger@users.sourceforge.net rhettinger@users.sourceforge.net
2003年5月28日 07:05:36 -0700


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv25462/Lib/test
Modified Files:
	test_enumerate.py 
Log Message:
* Beefed-up tests
* Allow tuple re-use
* Call tp_iternext directly
Index: test_enumerate.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_enumerate.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** test_enumerate.py	1 May 2003 17:45:37 -0000	1.4
--- test_enumerate.py	28 May 2003 14:05:32 -0000	1.5
***************
*** 1,8 ****
 import unittest
 
 from test import test_support
 
- seq, res = 'abc', [(0,'a'), (1,'b'), (2,'c')]
- 
 class G:
 'Sequence using __getitem__'
--- 1,7 ----
 import unittest
+ from sets import Set
 
 from test import test_support
 
 class G:
 'Sequence using __getitem__'
***************
*** 66,100 ****
 
 enum = enumerate
 
 def test_basicfunction(self):
! self.assertEqual(type(self.enum(seq)), self.enum)
! e = self.enum(seq)
 self.assertEqual(iter(e), e)
! self.assertEqual(list(self.enum(seq)), res)
 self.enum.__doc__
 
 def test_getitemseqn(self):
! self.assertEqual(list(self.enum(G(seq))), res)
 e = self.enum(G(''))
 self.assertRaises(StopIteration, e.next)
 
 def test_iteratorseqn(self):
! self.assertEqual(list(self.enum(I(seq))), res)
 e = self.enum(I(''))
 self.assertRaises(StopIteration, e.next)
 
 def test_iteratorgenerator(self):
! self.assertEqual(list(self.enum(Ig(seq))), res)
 e = self.enum(Ig(''))
 self.assertRaises(StopIteration, e.next)
 
 def test_noniterable(self):
! self.assertRaises(TypeError, self.enum, X(seq))
 
 def test_illformediterable(self):
! self.assertRaises(TypeError, list, self.enum(N(seq)))
 
 def test_exception_propagation(self):
! self.assertRaises(ZeroDivisionError, list, self.enum(E(seq)))
 
 class MyEnum(enumerate):
--- 65,111 ----
 
 enum = enumerate
+ seq, res = 'abc', [(0,'a'), (1,'b'), (2,'c')]
 
 def test_basicfunction(self):
! self.assertEqual(type(self.enum(self.seq)), self.enum)
! e = self.enum(self.seq)
 self.assertEqual(iter(e), e)
! self.assertEqual(list(self.enum(self.seq)), self.res)
 self.enum.__doc__
 
 def test_getitemseqn(self):
! self.assertEqual(list(self.enum(G(self.seq))), self.res)
 e = self.enum(G(''))
 self.assertRaises(StopIteration, e.next)
 
 def test_iteratorseqn(self):
! self.assertEqual(list(self.enum(I(self.seq))), self.res)
 e = self.enum(I(''))
 self.assertRaises(StopIteration, e.next)
 
 def test_iteratorgenerator(self):
! self.assertEqual(list(self.enum(Ig(self.seq))), self.res)
 e = self.enum(Ig(''))
 self.assertRaises(StopIteration, e.next)
 
 def test_noniterable(self):
! self.assertRaises(TypeError, self.enum, X(self.seq))
 
 def test_illformediterable(self):
! self.assertRaises(TypeError, list, self.enum(N(self.seq)))
 
 def test_exception_propagation(self):
! self.assertRaises(ZeroDivisionError, list, self.enum(E(self.seq)))
! 
! def test_argumentcheck(self):
! self.assertRaises(TypeError, self.enum) # no arguments
! self.assertRaises(TypeError, self.enum, 1) # wrong type (not iterable)
! self.assertRaises(TypeError, self.enum, 'abc', 2) # too many arguments
! 
! def test_tuple_reuse(self):
! # Tests an implementation detail where tuple is reused
! # whenever nothing else holds a reference to it
! self.assertEqual(len(Set(map(id, list(self.seq)))), len(self.seq))
! self.assertEqual(len(Set(map(id, enumerate(self.seq)))), min(1,len(self.seq)))
 
 class MyEnum(enumerate):
***************
*** 105,111 ****
 enum = MyEnum
 
! def test_main():
! test_support.run_unittest(EnumerateTestCase, SubclassTestCase)
 
 if __name__ == "__main__":
! test_main()
--- 116,142 ----
 enum = MyEnum
 
! class TestEmpty(EnumerateTestCase):
! 
! seq, res = '', []
! 
! class TestBig(EnumerateTestCase):
! 
! seq = range(10,20000,2)
! res = zip(range(20000), seq)
! 
! 
! def test_main(verbose=None):
! testclasses = (EnumerateTestCase, SubclassTestCase, TestEmpty, TestBig)
! test_support.run_unittest(*testclasses)
! 
! # verify reference counting
! import sys
! if verbose and hasattr(sys, "gettotalrefcount"):
! counts = [None] * 5
! for i in xrange(len(counts)):
! test_support.run_unittest(*testclasses)
! counts[i] = sys.gettotalrefcount()
! print counts
 
 if __name__ == "__main__":
! test_main(verbose=True)

AltStyle によって変換されたページ (->オリジナル) /