[Python-checkins] CVS: python/dist/src/Lib/test test_iter.py,NONE,1.1.2.1
Guido van Rossum
gvanrossum@usw-pr-cvs1.sourceforge.net
Wed, 14 Mar 2001 08:28:19 -0800
Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv31753
Added Files:
Tag: iter-branch
test_iter.py
Log Message:
Minimal test suite for iterators
--- NEW FILE: test_iter.py ---
from test_support import verify
class iter_filter:
def __init__(self, pred, it):
self.pred = pred
self.it = it
def __iter__(self):
return self
def next(self):
while 1:
value = self.it.next()
if self.pred(value):
return value
class iter_map:
def __init__(self, func, *its):
assert len(its) >= 1 # We're not testing this, it's just a requirement
self.func = func
self.its = its
def __iter__(self):
return self
def next(self):
# This doesn't emulate map() exactly, it stops with the shortest
return self.func(*[it.next() for it in self.its])
def test_iter_filter():
a = "The quick brown fox jumps over the lazy dog"
def pred(x): return x != ' '
expected = list(filter(pred, a))
outcome = [x for x in iter_filter(pred, iter(a))]
verify(outcome==expected, outcome)
print "iter_filter() works"
def test_iter_map():
a = "The quick brown fox jumps over the lazy dog"
def func(x): return x.upper()
expected = list(map(func, a))
outcome = [x for x in iter_map(func, iter(a))]
verify(outcome==expected, outcome)
print "iter_map() works"
def test_dict_iter():
a = {}
for i in range(20):
for j in range(20):
verify((i+j in a) == a.has_key(i+j))
if i+j not in a:
a[i+j] = i+j
print "if key in dict works"
keys = []
for k in a:
keys.append(k)
verify(keys == a.keys())
print "for key in dict works"
def test_file_iter():
f = open("test_iter.py")
data = f.readlines()
f.seek(0)
L = [line for line in f]
f.close()
verify(L == data, L)
print "for line in file works"
test_iter_filter()
test_iter_map()
test_dict_iter()
test_file_iter()