[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