[pypy-commit] pypy py3k: move the older py2 range tests (adapted to py3) into test_functional, they were

pjenvey noreply at buildbot.pypy.org
Thu Oct 11 23:33:49 CEST 2012


Author: Philip Jenvey <pjenvey at underboss.org>
Branch: py3k
Changeset: r58019:86c7aad53f10
Date: 2012-10-11 14:32 -0700
http://bitbucket.org/pypy/pypy/changeset/86c7aad53f10/

Log:	move the older py2 range tests (adapted to py3) into
	test_functional, they were misplaced into test__functools instead of
	reduce's tests. restore those too

diff --git a/pypy/module/__builtin__/test/test_functional.py b/pypy/module/__builtin__/test/test_functional.py
--- a/pypy/module/__builtin__/test/test_functional.py
+++ b/pypy/module/__builtin__/test/test_functional.py
@@ -168,6 +168,66 @@
       # test again, to make sure that range() is not its own iterator
       assert list(x) == [2, 5, 8]
 
+   def test_range_toofew(self):
+       raises(TypeError, range)
+
+   def test_range_toomany(self):
+       raises(TypeError, range,  1, 2, 3, 4)
+
+   def test_range_one(self):
+       assert list(range(1)) == [0]
+
+   def test_range_posstartisstop(self):
+       assert list(range(1, 1)) == []
+
+   def test_range_negstartisstop(self):
+       assert list(range(-1, -1)) == []
+
+   def test_range_zero(self):
+       assert list(range(0)) == []
+
+   def test_range_twoargs(self):
+       assert list(range(1, 2)) == [1]
+
+   def test_range_decreasingtwoargs(self):
+       assert list(range(3, 1)) == []
+
+   def test_range_negatives(self):
+       assert list(range(-3)) == []
+
+   def test_range_decreasing_negativestep(self):
+       assert list(range(5, -2, -1)) == [5, 4, 3, 2, 1, 0 , -1]
+
+   def test_range_posfencepost1(self):
+       assert list(range(1, 10, 3)) == [1, 4, 7]
+
+   def test_range_posfencepost2(self):
+       assert list(range(1, 11, 3)) == [1, 4, 7, 10]
+
+   def test_range_posfencepost3(self):
+       assert list(range(1, 12, 3)) == [1, 4, 7, 10]
+
+   def test_range_negfencepost1(self):
+       assert list(range(-1, -10, -3)) == [-1, -4, -7]
+
+   def test_range_negfencepost2(self):
+       assert list(range(-1, -11, -3)) == [-1, -4, -7, -10]
+
+   def test_range_negfencepost3(self):
+       assert list(range(-1, -12, -3)) == [-1, -4, -7, -10]
+
+   def test_range_decreasing_negativelargestep(self):
+       assert list(range(5, -2, -3)) == [5, 2, -1]
+
+   def test_range_increasing_positivelargestep(self):
+       assert list(range(-5, 2, 3)) == [-5, -2, 1]
+
+   def test_range_zerostep(self):
+       raises(ValueError, range, 1, 5, 0)
+
+   def test_range_wrong_type(self):
+       raises(TypeError, range, "42")
+
    def test_range_iter(self):
       x = range(2, 9, 3)
       it = iter(x)
@@ -194,14 +254,93 @@
        raises(TypeError, range, A2())
 
    def test_range_float(self):
-      raises(TypeError, "range(0.1, 2.0, 1.1)")
+       raises(TypeError, range, 0.1)
+       raises(TypeError, range, 0.1, 0)
+       raises(TypeError, range, 0, 0.1)
+       raises(TypeError, range, 0.1, 0, 0)
+       raises(TypeError, range, 0, 0.1, 0)
+       raises(TypeError, range, 0, 0, 0.1)
+       raises(TypeError, range, 0.1, 2.0, 1.1)
 
    def test_range_long(self):
        import sys
+       assert list(range(-2**100)) == []
+       assert list(range(0, -2**100)) == []
+       assert list(range(0, 2**100, -1)) == []
+       assert list(range(0, 2**100, -1)) == []
+
        a = 10 * sys.maxsize
        assert range(a)[-1] == a-1
        assert range(0, a)[-1] == a-1
        assert range(0, 1, a)[-1] == 0
+       assert list(range(a, a+2)) == [a, a+1]
+       assert list(range(a+2, a, -1)) == [a+2, a+1]
+       assert list(range(a+4, a, -2)) == [a+4, a+2]
+       assert list(range(a, a*5, a)) == [a, 2*a, 3*a, 4*a]
+
+   def test_range_cases(self):
+       import sys
+       for start in [10, 10 * sys.maxsize]:
+           for stop in [start-4, start-1, start, start+1, start+4]:
+              for step in [1, 2, 3, 4]:
+                  lst = list(range(start, stop, step))
+                  expected = []
+                  a = start
+                  while a < stop:
+                      expected.append(a)
+                      a += step
+                  assert lst == expected
+              for step in [-1, -2, -3, -4]:
+                  lst = list(range(start, stop, step))
+                  expected = []
+                  a = start
+                  while a > stop:
+                      expected.append(a)
+                      a += step
+                  assert lst == expected
+
+   def test_range_contains(self):
+       assert 3 in range(5)
+       assert 3 not in range(3)
+       assert 3 not in range(4, 5)
+       assert 3 in range(1, 5, 2)
+       assert 3 not in range(0, 5, 2)
+       assert '3' not in range(5)
+
+   def test_range_count(self):
+       assert range(5).count(3) == 1
+       assert type(range(5).count(3)) is int
+       assert range(0, 5, 2).count(3) == 0
+       assert range(5).count(3.0) == 1
+       assert range(5).count('3') == 0
+
+   def test_range_getitem(self):
+       assert range(6)[3] == 3
+       assert range(6)[-1] == 5
+       raises(IndexError, range(6).__getitem__, 6)
+
+   def test_range_slice(self):
+       # range objects don't implement equality in 3.2, use the repr
+       assert repr(range(6)[2:5]) == 'range(2, 5)'
+       assert repr(range(6)[-1:-3:-2]) == 'range(5, 3, -2)'
+
+   def test_large_range(self):
+       import sys
+       def _range_len(x):
+          try:
+             length = len(x)
+          except OverflowError:
+             step = x[1] - x[0]
+             length = 1 + ((x[-1] - x[0]) // step)
+             return length
+          a = -sys.maxsize
+          b = sys.maxsize
+          expected_len = b - a
+          x = range(a, b)
+          assert a in x
+          assert b not in x
+          raises(OverflowError, len, x)
+          assert _range_len(x) == expected_len
 
    def test_range_reduce(self):
       x = range(2, 9, 3)
diff --git a/pypy/module/test_lib_pypy/test__functools.py b/pypy/module/test_lib_pypy/test__functools.py
--- a/pypy/module/test_lib_pypy/test__functools.py
+++ b/pypy/module/test_lib_pypy/test__functools.py
@@ -1,157 +1,37 @@
-from _functools import reduce
+class AppTestReduce:
 
-class TestRange:
+    def test_None(self):
+        from _functools import reduce
+        raises(TypeError, reduce, lambda x, y: x+y, [1,2,3], None)
 
-   def test_range_toofew(self):
-      raises(TypeError, range)
+    def test_sum(self):
+        from _functools import reduce
+        assert reduce(lambda x, y: x+y, [1,2,3,4], 0) == 10
+        assert reduce(lambda x, y: x+y, [1,2,3,4]) == 10
 
-   def test_range_toomany(self):
-      raises(TypeError, range,  1, 2, 3, 4)
+    def test_minus(self):
+        from _functools import reduce
+        assert reduce(lambda x, y: x-y, [10, 2, 8]) == 0
+        assert reduce(lambda x, y: x-y, [2, 8], 10) == 0
 
-   def test_range_one(self):
-      assert list(range(1)) == [0]
+    def test_from_cpython(self):
+        from _functools import reduce
+        class SequenceClass(object):
+            def __init__(self, n):
+                self.n = n
+            def __getitem__(self, i):
+                if 0 <= i < self.n:
+                    return i
+                else:
+                    raise IndexError
 
-   def test_range_posstartisstop(self):
-      assert list(range(1, 1)) == []
+        from operator import add
+        assert reduce(add, SequenceClass(5)) == 10
+        assert reduce(add, SequenceClass(5), 42) == 52
+        raises(TypeError, reduce, add, SequenceClass(0))
+        assert reduce(add, SequenceClass(0), 42) == 42
+        assert reduce(add, SequenceClass(1)) == 0
+        assert reduce(add, SequenceClass(1), 42) == 42
 
-   def test_range_negstartisstop(self):
-      assert list(range(-1, -1)) == []
-
-   def test_range_zero(self):
-      assert list(range(0)) == []
-
-   def test_range_twoargs(self):
-      assert list(range(1, 2)) == [1]
-
-   def test_range_decreasingtwoargs(self):
-      assert list(range(3, 1)) == []
-
-   def test_range_negatives(self):
-      assert list(range(-3)) == []
-
-   def test_range_decreasing_negativestep(self):
-      assert list(range(5, -2, -1)) == [5, 4, 3, 2, 1, 0 , -1]
-
-   def test_range_posfencepost1(self):
-       assert list(range(1, 10, 3)) == [1, 4, 7]
-
-   def test_range_posfencepost2(self):
-       assert list(range(1, 11, 3)) == [1, 4, 7, 10]
-
-   def test_range_posfencepost3(self):
-       assert list(range(1, 12, 3)) == [1, 4, 7, 10]
-
-   def test_range_negfencepost1(self):
-       assert list(range(-1, -10, -3)) == [-1, -4, -7]
-
-   def test_range_negfencepost2(self):
-       assert list(range(-1, -11, -3)) == [-1, -4, -7, -10]
-
-   def test_range_negfencepost3(self):
-       assert list(range(-1, -12, -3)) == [-1, -4, -7, -10]
-
-   def test_range_decreasing_negativelargestep(self):
-       assert list(range(5, -2, -3)) == [5, 2, -1]
-
-   def test_range_increasing_positivelargestep(self):
-       assert list(range(-5, 2, 3)) == [-5, -2, 1]
-
-   def test_range_zerostep(self):
-       raises(ValueError, range, 1, 5, 0)
-
-   def test_range_float(self):
-       raises(TypeError, range, 0.1)
-       raises(TypeError, range, 0.1, 0)
-       raises(TypeError, range, 0, 0.1)
-       raises(TypeError, range, 0.1, 0, 0)
-       raises(TypeError, range, 0, 0.1, 0)
-       raises(TypeError, range, 0, 0, 0.1)
-
-   def test_range_wrong_type(self):
-       raises(TypeError, range, "42")
-
-   def test_range_object_with___index__(self):
-       class A(object):
-           def __index__(self):
-               return 5
-
-       assert list(range(A())) == [0, 1, 2, 3, 4]
-       assert list(range(0, A())) == [0, 1, 2, 3, 4]
-       assert list(range(0, 10, A())) == [0, 5]
-
-   def test_range_long(self):
-       import sys
-       assert list(range(-2**100)) == []
-       assert list(range(0, -2**100)) == []
-       assert list(range(0, 2**100, -1)) == []
-       assert list(range(0, 2**100, -1)) == []
-
-       a = 10 * sys.maxsize
-       assert list(range(a, a+2)) == [a, a+1]
-       assert list(range(a+2, a, -1)) == [a+2, a+1]
-       assert list(range(a+4, a, -2)) == [a+4, a+2]
-       assert list(range(a, a*5, a)) == [a, 2*a, 3*a, 4*a]
-
-   def test_range_cases(self):
-       import sys
-       for start in [10, 10 * sys.maxsize]:
-           for stop in [start-4, start-1, start, start+1, start+4]:
-              for step in [1, 2, 3, 4]:
-                  lst = list(range(start, stop, step))
-                  expected = []
-                  a = start
-                  while a < stop:
-                      expected.append(a)
-                      a += step
-                  assert lst == expected
-              for step in [-1, -2, -3, -4]:
-                  lst = list(range(start, stop, step))
-                  expected = []
-                  a = start
-                  while a > stop:
-                      expected.append(a)
-                      a += step
-                  assert lst == expected
-
-   def test_range_contains(self):
-      assert 3 in range(5)
-      assert 3 not in range(3)
-      assert 3 not in range(4, 5)
-      assert 3 in range(1, 5, 2)
-      assert 3 not in range(0, 5, 2)
-      assert '3' not in range(5)
-
-   def test_range_count(self):
-      assert range(5).count(3) == 1
-      assert type(range(5).count(3)) is int
-      assert range(0, 5, 2).count(3) == 0
-      assert range(5).count(3.0) == 1
-      assert range(5).count('3') == 0
-
-   def test_range_getitem(self):
-      assert range(6)[3] == 3
-      assert range(6)[-1] == 5
-      raises(IndexError, range(6).__getitem__, 6)
-
-   def test_range_slice(self):
-      # range objects don't implement equality in 3.2, use the repr
-      assert repr(range(6)[2:5]) == 'range(2, 5)'
-      assert repr(range(6)[-1:-3:-2]) == 'range(5, 3, -2)'
-
-   def test_large_range(self):
-      import sys
-      def _range_len(x):
-         try:
-            length = len(x)
-         except OverflowError:
-            step = x[1] - x[0]
-            length = 1 + ((x[-1] - x[0]) // step)
-            return length
-         a = -sys.maxsize
-         b = sys.maxsize
-         expected_len = b - a
-         x = range(a, b)
-         assert a in x
-         assert b not in x
-         raises(OverflowError, len, x)
-         assert _range_len(x) == expected_len
+        d = {"one": 1, "two": 2, "three": 3}
+        assert reduce(add, d) == "".join(d.keys())


More information about the pypy-commit mailing list