[Python-checkins] python/dist/src/Lib/test test_builtin.py,1.14,1.15

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
Fri, 11 Apr 2003 11:43:08 -0700


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv28123/Lib/test

Modified Files:
	test_builtin.py 
Log Message:
Patch by Chad Netzer (with significant change):
- range() now works even if the arguments are longs with magnitude
  larger than sys.maxint, as long as the total length of the sequence
  fits.  E.g., range(2**100, 2**101, 2**100) is the following list:
  [1267650600228229401496703205376L].  (SF patch #707427.)


Index: test_builtin.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_builtin.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** test_builtin.py	19 Feb 2003 02:35:05 -0000	1.14
--- test_builtin.py	11 Apr 2003 18:43:05 -0000	1.15
***************
*** 7,10 ****
--- 7,12 ----
  warnings.filterwarnings("ignore", "hex../oct.. of negative int",
                          FutureWarning, __name__)
+ warnings.filterwarnings("ignore", "integer argument expected",
+                         DeprecationWarning, "unittest")
  
  class Squares:
***************
*** 926,932 ****
--- 928,967 ----
          self.assertEqual(range(5, -5, -3), [5, 2, -1, -4])
  
+         # Now test range() with longs
+         self.assertEqual(range(-2**100), [])
+         self.assertEqual(range(0, -2**100), [])
+         self.assertEqual(range(0, 2**100, -1), [])
+         self.assertEqual(range(0, 2**100, -1), [])
+ 
+         a = long(10 * sys.maxint)
+         b = long(100 * sys.maxint)
+         c = long(50 * sys.maxint)
+ 
+         self.assertEqual(range(a, a+2), [a, a+1])
+         self.assertEqual(range(a+2, a, -1L), [a+2, a+1])
+         self.assertEqual(range(a+4, a, -2), [a+4, a+2])
+ 
+         seq = range(a, b, c)
+         self.assert_(a in seq)
+         self.assert_(b not in seq)
+         self.assertEqual(len(seq), 2)
+ 
+         seq = range(b, a, -c)
+         self.assert_(b in seq)
+         self.assert_(a not in seq)
+         self.assertEqual(len(seq), 2)
+ 
+         seq = range(-a, -b, -c)
+         self.assert_(-a in seq)
+         self.assert_(-b not in seq)
+         self.assertEqual(len(seq), 2)
+ 
          self.assertRaises(TypeError, range)
          self.assertRaises(TypeError, range, 1, 2, 3, 4)
          self.assertRaises(ValueError, range, 1, 2, 0)
+ 
+         # Reject floats when it would require PyLongs to represent.
+         # (smaller floats still accepted, but deprecated)
+         self.assertRaises(ValueError, range, 1e100, 1e101, 1e101)
  
      def test_input_and_raw_input(self):