summaryrefslogtreecommitdiff
path: root/lib/python2.7/test/test_list.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/test/test_list.py')
-rw-r--r--lib/python2.7/test/test_list.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/lib/python2.7/test/test_list.py b/lib/python2.7/test/test_list.py
new file mode 100644
index 0000000..6e080dc
--- /dev/null
+++ b/lib/python2.7/test/test_list.py
@@ -0,0 +1,78 @@
+import sys
+from test import test_support, list_tests
+
+class ListTest(list_tests.CommonTest):
+ type2test = list
+
+ def test_basic(self):
+ self.assertEqual(list([]), [])
+ l0_3 = [0, 1, 2, 3]
+ l0_3_bis = list(l0_3)
+ self.assertEqual(l0_3, l0_3_bis)
+ self.assertTrue(l0_3 is not l0_3_bis)
+ self.assertEqual(list(()), [])
+ self.assertEqual(list((0, 1, 2, 3)), [0, 1, 2, 3])
+ self.assertEqual(list(''), [])
+ self.assertEqual(list('spam'), ['s', 'p', 'a', 'm'])
+
+ if sys.maxsize == 0x7fffffff:
+ # This test can currently only work on 32-bit machines.
+ # XXX If/when PySequence_Length() returns a ssize_t, it should be
+ # XXX re-enabled.
+ # Verify clearing of bug #556025.
+ # This assumes that the max data size (sys.maxint) == max
+ # address size this also assumes that the address size is at
+ # least 4 bytes with 8 byte addresses, the bug is not well
+ # tested
+ #
+ # Note: This test is expected to SEGV under Cygwin 1.3.12 or
+ # earlier due to a newlib bug. See the following mailing list
+ # thread for the details:
+
+ # http://sources.redhat.com/ml/newlib/2002/msg00369.html
+ self.assertRaises(MemoryError, list, xrange(sys.maxint // 2))
+
+ # This code used to segfault in Py2.4a3
+ x = []
+ x.extend(-y for y in x)
+ self.assertEqual(x, [])
+
+ def test_truth(self):
+ super(ListTest, self).test_truth()
+ self.assertTrue(not [])
+ self.assertTrue([42])
+
+ def test_identity(self):
+ self.assertTrue([] is not [])
+
+ def test_len(self):
+ super(ListTest, self).test_len()
+ self.assertEqual(len([]), 0)
+ self.assertEqual(len([0]), 1)
+ self.assertEqual(len([0, 1, 2]), 3)
+
+ def test_overflow(self):
+ lst = [4, 5, 6, 7]
+ n = int((sys.maxint*2+2) // len(lst))
+ def mul(a, b): return a * b
+ def imul(a, b): a *= b
+ self.assertRaises((MemoryError, OverflowError), mul, lst, n)
+ self.assertRaises((MemoryError, OverflowError), imul, lst, n)
+
+def test_main(verbose=None):
+ test_support.run_unittest(ListTest)
+
+ # verify reference counting
+ import sys
+ if verbose and hasattr(sys, "gettotalrefcount"):
+ import gc
+ counts = [None] * 5
+ for i in xrange(len(counts)):
+ test_support.run_unittest(ListTest)
+ gc.collect()
+ counts[i] = sys.gettotalrefcount()
+ print counts
+
+
+if __name__ == "__main__":
+ test_main(verbose=True)