[pypy-commit] pypy set-strategies: erasing bug in _intersection_wrapped. added test and fix
l.diekmann
noreply at buildbot.pypy.org
Thu Nov 10 13:52:20 CET 2011
Author: Lukas Diekmann <lukas.diekmann at uni-duesseldorf.de>
Branch: set-strategies
Changeset: r49253:ef85a53cfb2c
Date: 2011-10-18 15:17 +0200
http://bitbucket.org/pypy/pypy/changeset/ef85a53cfb2c/
Log: erasing bug in _intersection_wrapped. added test and fix
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
@@ -584,17 +584,18 @@
storage = strategy._intersect_unwrapped(w_set, w_other)
else:
strategy = self.space.fromcache(ObjectSetStrategy)
- storage = strategy._intersect_wrapped(w_set, w_other)
+ storage = self._intersect_wrapped(w_set, w_other)
return storage, strategy
def _intersect_wrapped(self, w_set, w_other):
result = self.get_empty_dict()
- items = self.unerase(w_set.sstorage).iterkeys()
- for key in items:
+ for key in self.unerase(w_set.sstorage):
w_key = self.wrap(key)
if w_other.has_key(w_key):
result[w_key] = None
- return self.erase(result)
+
+ strategy = self.space.fromcache(ObjectSetStrategy)
+ return strategy.erase(result)
def _intersect_unwrapped(self, w_set, w_other):
result = self.get_empty_dict()
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
@@ -514,6 +514,11 @@
assert s1 == set([1,2,3,4])
assert s2 == set([1,2,3,4])
+ def test_intersection_string(self):
+ s = set([1,2,3])
+ o = 'abc'
+ assert s.intersection(o) == set()
+
def test_difference(self):
assert set([1,2,3]).difference(set([2,3,4])) == set([1])
assert set([1,2,3]).difference(frozenset([2,3,4])) == set([1])
More information about the pypy-commit
mailing list