Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Lib/test/test_enumerate.py

    r2 r391  
    104104        self.assertRaises(TypeError, self.enum, 'abc', 2, 3) # too many arguments
    105105
     106    @test_support.cpython_only
    106107    def test_tuple_reuse(self):
    107108        # Tests an implementation detail where tuple is reused
     
    142143        self.assertRaises(TypeError, reversed, [], a=1)
    143144
     145    def test_classic_class(self):
     146        class A:
     147            def __reversed__(self):
     148                return [2, 1]
     149        self.assertEqual(list(reversed(A())), [2, 1])
     150
    144151    def test_xrange_optimization(self):
    145152        x = xrange(1)
    146153        self.assertEqual(type(reversed(x)), type(iter(x)))
    147154
     155    @test_support.cpython_only
    148156    def test_len(self):
    149157        # This is an implementation detail, not an interface requirement
     
    199207        self.assertEqual(rc, sys.getrefcount(r))
    200208
    201 
    202 class TestStart(EnumerateTestCase):
    203 
    204     enum = lambda i: enumerate(i, start=11)
    205     seq, res = 'abc', [(1, 'a'), (2, 'b'), (3, 'c')]
    206 
    207 
    208 class TestLongStart(EnumerateTestCase):
    209 
    210     enum = lambda i: enumerate(i, start=sys.maxint+1)
     209    def test_objmethods(self):
     210        # Objects must have __len__() and __getitem__() implemented.
     211        class NoLen(object):
     212            def __getitem__(self): return 1
     213        nl = NoLen()
     214        self.assertRaises(TypeError, reversed, nl)
     215
     216        class NoGetItem(object):
     217            def __len__(self): return 2
     218        ngi = NoGetItem()
     219        self.assertRaises(TypeError, reversed, ngi)
     220
     221
     222class EnumerateStartTestCase(EnumerateTestCase):
     223
     224    def test_basicfunction(self):
     225        e = self.enum(self.seq)
     226        self.assertEqual(iter(e), e)
     227        self.assertEqual(list(self.enum(self.seq)), self.res)
     228
     229
     230class TestStart(EnumerateStartTestCase):
     231
     232    enum = lambda self, i: enumerate(i, start=11)
     233    seq, res = 'abc', [(11, 'a'), (12, 'b'), (13, 'c')]
     234
     235
     236class TestLongStart(EnumerateStartTestCase):
     237
     238    enum = lambda self, i: enumerate(i, start=sys.maxint+1)
    211239    seq, res = 'abc', [(sys.maxint+1,'a'), (sys.maxint+2,'b'),
    212240                       (sys.maxint+3,'c')]
     
    214242
    215243def test_main(verbose=None):
    216     testclasses = (EnumerateTestCase, SubclassTestCase, TestEmpty, TestBig,
    217                    TestReversed)
    218     test_support.run_unittest(*testclasses)
     244    test_support.run_unittest(__name__)
    219245
    220246    # verify reference counting
    221     import sys
    222247    if verbose and hasattr(sys, "gettotalrefcount"):
    223248        counts = [None] * 5
    224249        for i in xrange(len(counts)):
    225             test_support.run_unittest(*testclasses)
     250            test_support.run_unittest(__name__)
    226251            counts[i] = sys.gettotalrefcount()
    227252        print counts
Note: See TracChangeset for help on using the changeset viewer.