[pypy-svn] r10023 - in pypy/dist/pypy/lib: . test2

hpk at codespeak.net hpk at codespeak.net
Mon Mar 21 21:31:40 CET 2005


Author: hpk
Date: Mon Mar 21 21:31:40 2005
New Revision: 10023

Modified:
   pypy/dist/pypy/lib/itertools.py
   pypy/dist/pypy/lib/test2/test_itertools.py
Log:
use the plain test_itertools but with slower contants 


Modified: pypy/dist/pypy/lib/itertools.py
==============================================================================
--- pypy/dist/pypy/lib/itertools.py	(original)
+++ pypy/dist/pypy/lib/itertools.py	Mon Mar 21 21:31:40 2005
@@ -356,20 +356,20 @@
         s = slice(*args)
         self.start, self.stop, self.step = s.start or 0, s.stop, s.step or 1
         self.donext = iter(iterable).next
+        self.cnt = 0
 
     def __iter__(self):
-        cnt = 0
-        while cnt < self.start:
+        return self
+
+    def next(self): 
+        while self.cnt < self.start:
             self.donext()
-            cnt += 1
-        while self.stop is None or cnt < self.stop:
-            yield self.donext()
-            cnt += 1
-            skip = self.step - 1
-            while skip:
-                self.donext()
-                cnt += 1
-                skip -= 1
+            self.cnt += 1
+        if self.stop is None or self.cnt < self.stop:
+            self.start += self.step 
+            self.cnt += 1
+            return self.donext()
+        raise StopIteration 
 
 class izip:
     """Make an iterator that aggregates elements from each of the

Modified: pypy/dist/pypy/lib/test2/test_itertools.py
==============================================================================
--- pypy/dist/pypy/lib/test2/test_itertools.py	(original)
+++ pypy/dist/pypy/lib/test2/test_itertools.py	Mon Mar 21 21:31:40 2005
@@ -95,9 +95,8 @@
                          zip('abc', 'def'))
         self.assertEqual([pair for pair in izip('abc', 'def')],
                          zip('abc', 'def'))
-
-        # ids = map(id, izip('abc', 'def'))
-        # self.assertEqual(min(ids), max(ids)) ## NOT FEASIBLE IN PYPY
+        ids = map(id, izip('abc', 'def'))
+        self.assertEqual(min(ids), max(ids))
         ids = map(id, list(izip('abc', 'def')))
         self.assertEqual(len(dict.fromkeys(ids)), len(ids))
 
@@ -334,7 +333,7 @@
 class TestVariousIteratorArgs(unittest.TestCase):
 
     def test_chain(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
+        for s in ("123", "", range(6), ('do', 1.2), xrange(2000,2030,5)):
             for g in (G, I, Ig, S, L, R):
                 self.assertEqual(list(chain(g(s))), list(g(s)))
                 self.assertEqual(list(chain(g(s), g(s))), list(g(s))+list(g(s)))
@@ -343,7 +342,7 @@
             self.assertRaises(ZeroDivisionError, list, chain(E(s)))
 
     def test_cycle(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
+        for s in ("123", "", range(6), ('do', 1.2), xrange(2000,2030,5)):
             for g in (G, I, Ig, S, L, R):
                 tgtlen = len(s) * 3
                 expected = list(g(s))*3
@@ -354,7 +353,7 @@
             self.assertRaises(ZeroDivisionError, list, cycle(E(s)))
 
     def test_ifilter(self):
-        for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)):
+        for s in (range(10), range(0), range(6), (7,11), xrange(2000,2030,5)):
             for g in (G, I, Ig, S, L, R):
                 self.assertEqual(list(ifilter(isEven, g(s))), filter(isEven, g(s)))
             self.assertRaises(TypeError, ifilter, isEven, X(s))
@@ -362,7 +361,7 @@
             self.assertRaises(ZeroDivisionError, list, ifilter(isEven, E(s)))
 
     def test_ifilterfalse(self):
-        for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)):
+        for s in (range(10), range(0), range(10), (7,11), xrange(2000,2030,5)):
             for g in (G, I, Ig, S, L, R):
                 self.assertEqual(list(ifilterfalse(isEven, g(s))), filter(isOdd, g(s)))
             self.assertRaises(TypeError, ifilterfalse, isEven, X(s))
@@ -370,7 +369,7 @@
             self.assertRaises(ZeroDivisionError, list, ifilterfalse(isEven, E(s)))
 
     def test_izip(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
+        for s in ("123", "", range(10), ('do', 1.2), xrange(2000,2030,5)):
             for g in (G, I, Ig, S, L, R):
                 self.assertEqual(list(izip(g(s))), zip(g(s)))
                 self.assertEqual(list(izip(g(s), g(s))), zip(g(s), g(s)))
@@ -388,7 +387,7 @@
             self.assertRaises(ZeroDivisionError, list, imap(onearg, E(s)))
 
     def test_islice(self):
-        for s in ("12345", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
+        for s in ("12345", "", range(10), ('do', 1.2), xrange(2000,2030,5)):
             for g in (G, I, Ig, S, L, R):
                 self.assertEqual(list(islice(g(s),1,None,2)), list(g(s))[1::2])
             self.assertRaises(TypeError, islice, X(s), 10)
@@ -405,7 +404,7 @@
             self.assertRaises(ZeroDivisionError, list, starmap(operator.pow, E(ss)))
 
     def test_takewhile(self):
-        for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)):
+        for s in (range(10), range(0), range(10), (7,11), xrange(2000,2030,5)):
             for g in (G, I, Ig, S, L, R):
                 tgt = []
                 for elem in g(s):
@@ -417,7 +416,7 @@
             self.assertRaises(ZeroDivisionError, list, takewhile(isEven, E(s)))
 
     def test_dropwhile(self):
-        for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)):
+        for s in (range(10), range(0), range(10), (7,11), xrange(2000,2030,5)):
             for g in (G, I, Ig, S, L, R):
                 tgt = []
                 for elem in g(s):



More information about the Pypy-commit mailing list