[pypy-commit] pypy set-strategies: added test for user generated subclass of setobject
l.diekmann
noreply at buildbot.pypy.org
Thu Nov 10 13:49:55 CET 2011
Author: Lukas Diekmann <lukas.diekmann at uni-duesseldorf.de>
Branch: set-strategies
Changeset: r49168:d23ca90396d5
Date: 2011-05-18 18:24 +0200
http://bitbucket.org/pypy/pypy/changeset/d23ca90396d5/
Log: added test for user generated subclass of setobject
diff --git a/pypy/objspace/std/setobject.py b/pypy/objspace/std/setobject.py
--- a/pypy/objspace/std/setobject.py
+++ b/pypy/objspace/std/setobject.py
@@ -65,8 +65,7 @@
elif objtype is W_FrozensetObject:
obj = instantiate(W_FrozensetObject)
else:
- itemiterator = w_self.space.iter(W_SetIterObject(newset(w_self.space)))
- obj = w_self.space.call_function(w_self.space.type(w_self),itemiterator)
+ obj = w_self.space.call_function(w_self.space.type(w_self), None)
obj.space = w_self.space
obj.strategy = strategy
obj.sstorage = storage
@@ -81,8 +80,7 @@
elif objtype is W_FrozensetObject:
obj = W_FrozensetObject(space, w_iterable)
else:
- itemiterator = space.iter(W_SetIterObject(w_iterable))
- obj = space.call_function(space.type(w_self), itemiterator)
+ obj = space.call_function(space.type(w_self), w_iterable)
return obj
_lifeline_ = None
diff --git a/pypy/objspace/std/test/test_setobject.py b/pypy/objspace/std/test/test_setobject.py
--- a/pypy/objspace/std/test/test_setobject.py
+++ b/pypy/objspace/std/test/test_setobject.py
@@ -75,6 +75,16 @@
a = set(x for x in [1,2,3])
assert a == set([1,2,3])
+ def test_generator2(self):
+ def foo():
+ for i in [1,2,3]:
+ yield i
+ class A(set):
+ pass
+ a = A([1,2,3,4,5])
+ b = a.difference(foo())
+ assert b == set([4,5])
+
def test_or(self):
a = set([0,1,2])
b = a | set([1,2,3])
More information about the pypy-commit
mailing list