[pypy-svn] r68562 - in pypy/trunk/pypy/objspace/std: . test
cfbolz at codespeak.net
cfbolz at codespeak.net
Sat Oct 17 01:54:19 CEST 2009
Author: cfbolz
Date: Sat Oct 17 01:54:19 2009
New Revision: 68562
Modified:
pypy/trunk/pypy/objspace/std/setobject.py
pypy/trunk/pypy/objspace/std/test/test_setobject.py
Log:
clean up == and != implementation of sets
Modified: pypy/trunk/pypy/objspace/std/setobject.py
==============================================================================
--- pypy/trunk/pypy/objspace/std/setobject.py (original)
+++ pypy/trunk/pypy/objspace/std/setobject.py Sat Oct 17 01:54:19 2009
@@ -87,13 +87,6 @@
w_setiter.content = None
raise OperationError(space.w_StopIteration, space.w_None)
-# XXX __length_hint__()
-##def len__SetIterObject(space, w_setiter):
-## content = w_setiter.content
-## if content is None or w_setiter.len == -1:
-## return space.wrap(0)
-## return space.wrap(w_setiter.len - w_setiter.pos)
-
# some helper functions
def make_setdata_from_w_iterable(space, w_iterable=None):
@@ -294,20 +287,11 @@
inplace_sub__Set_Frozenset = inplace_sub__Set_Set
def eq__Set_Set(space, w_left, w_other):
- # optimization only (the general case is eq__Set_settypedef)
- return space.wrap(_is_eq(w_left.setdata, w_other.setdata))
+ return space.newbool(_is_eq(w_left.setdata, w_other.setdata))
eq__Set_Frozenset = eq__Set_Set
-eq__Frozenset_Frozenset = eq__Set_Set
eq__Frozenset_Set = eq__Set_Set
-
-def eq__Set_settypedef(space, w_left, w_other):
- rd = make_setdata_from_w_iterable(space, w_other)
- return space.wrap(_is_eq(w_left.setdata, rd))
-
-eq__Set_frozensettypedef = eq__Set_settypedef
-eq__Frozenset_settypedef = eq__Set_settypedef
-eq__Frozenset_frozensettypedef = eq__Set_settypedef
+eq__Frozenset_Frozenset = eq__Set_Set
def eq__Set_ANY(space, w_left, w_other):
# workaround to have "set() == 42" return False instead of falling
@@ -316,6 +300,13 @@
eq__Frozenset_ANY = eq__Set_ANY
+def ne__Set_Set(space, w_left, w_other):
+ return space.newbool(not _is_eq(w_left.setdata, w_other.setdata))
+
+ne__Set_Frozenset = ne__Set_Set
+ne__Frozenset_Set = ne__Set_Set
+ne__Frozenset_Frozenset = ne__Set_Set
+
def ne__Set_ANY(space, w_left, w_other):
# more workarounds
return space.w_True
Modified: pypy/trunk/pypy/objspace/std/test/test_setobject.py
==============================================================================
--- pypy/trunk/pypy/objspace/std/test/test_setobject.py (original)
+++ pypy/trunk/pypy/objspace/std/test/test_setobject.py Sat Oct 17 01:54:19 2009
@@ -71,6 +71,24 @@
assert set('abc') > frozenset('ab')
assert not (set('abc') < frozenset('abc'))
assert not (set('abc') > frozenset('abc'))
+ assert not set() == 42
+ assert set() != 42
+ assert (set('abc') == frozenset('abc'))
+ assert (set('abc') == set('abc'))
+ assert (frozenset('abc') == frozenset('abc'))
+ assert (frozenset('abc') == set('abc'))
+ assert not (set('abc') != frozenset('abc'))
+ assert not (set('abc') != set('abc'))
+ assert not (frozenset('abc') != frozenset('abc'))
+ assert not (frozenset('abc') != set('abc'))
+ assert not (set('abc') == frozenset('abcd'))
+ assert not (set('abc') == set('abcd'))
+ assert not (frozenset('abc') == frozenset('abcd'))
+ assert not (frozenset('abc') == set('abcd'))
+ assert (set('abc') != frozenset('abcd'))
+ assert (set('abc') != set('abcd'))
+ assert (frozenset('abc') != frozenset('abcd'))
+ assert (frozenset('abc') != set('abcd'))
def test_recursive_repr(self):
class A(object):
More information about the Pypy-commit
mailing list