[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)