symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_list.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 import sys
       
     2 from test import test_support, list_tests
       
     3 
       
     4 class ListTest(list_tests.CommonTest):
       
     5     type2test = list
       
     6 
       
     7     def test_basic(self):
       
     8         self.assertEqual(list([]), [])
       
     9         l0_3 = [0, 1, 2, 3]
       
    10         l0_3_bis = list(l0_3)
       
    11         self.assertEqual(l0_3, l0_3_bis)
       
    12         self.assert_(l0_3 is not l0_3_bis)
       
    13         self.assertEqual(list(()), [])
       
    14         self.assertEqual(list((0, 1, 2, 3)), [0, 1, 2, 3])
       
    15         self.assertEqual(list(''), [])
       
    16         self.assertEqual(list('spam'), ['s', 'p', 'a', 'm'])
       
    17 
       
    18         if sys.maxsize == 0x7fffffff:
       
    19             # This test can currently only work on 32-bit machines.
       
    20             # XXX If/when PySequence_Length() returns a ssize_t, it should be
       
    21             # XXX re-enabled.
       
    22             # Verify clearing of bug #556025.
       
    23             # This assumes that the max data size (sys.maxint) == max
       
    24             # address size this also assumes that the address size is at
       
    25             # least 4 bytes with 8 byte addresses, the bug is not well
       
    26             # tested
       
    27             #
       
    28             # Note: This test is expected to SEGV under Cygwin 1.3.12 or
       
    29             # earlier due to a newlib bug.  See the following mailing list
       
    30             # thread for the details:
       
    31 
       
    32             #     http://sources.redhat.com/ml/newlib/2002/msg00369.html
       
    33             self.assertRaises(MemoryError, list, xrange(sys.maxint // 2))
       
    34 
       
    35         # This code used to segfault in Py2.4a3
       
    36         x = []
       
    37         x.extend(-y for y in x)
       
    38         self.assertEqual(x, [])
       
    39 
       
    40     def test_truth(self):
       
    41         super(ListTest, self).test_truth()
       
    42         self.assert_(not [])
       
    43         self.assert_([42])
       
    44 
       
    45     def test_identity(self):
       
    46         self.assert_([] is not [])
       
    47 
       
    48     def test_len(self):
       
    49         super(ListTest, self).test_len()
       
    50         self.assertEqual(len([]), 0)
       
    51         self.assertEqual(len([0]), 1)
       
    52         self.assertEqual(len([0, 1, 2]), 3)
       
    53 
       
    54     def test_overflow(self):
       
    55         lst = [4, 5, 6, 7]
       
    56         n = int((sys.maxint*2+2) // len(lst))
       
    57         def mul(a, b): return a * b
       
    58         def imul(a, b): a *= b
       
    59         self.assertRaises((MemoryError, OverflowError), mul, lst, n)
       
    60         self.assertRaises((MemoryError, OverflowError), imul, lst, n)
       
    61 
       
    62 def test_main(verbose=None):
       
    63     test_support.run_unittest(ListTest)
       
    64 
       
    65     # verify reference counting
       
    66     import sys
       
    67     if verbose and hasattr(sys, "gettotalrefcount"):
       
    68         import gc
       
    69         counts = [None] * 5
       
    70         for i in xrange(len(counts)):
       
    71             test_support.run_unittest(ListTest)
       
    72             gc.collect()
       
    73             counts[i] = sys.gettotalrefcount()
       
    74         print counts
       
    75 
       
    76 
       
    77 if __name__ == "__main__":
       
    78     test_main(verbose=True)