[pypy-svn] r10837 - in pypy/dist/pypy: module/test objspace/std objspace/std/test

arigo at codespeak.net arigo at codespeak.net
Mon Apr 18 23:34:39 CEST 2005


Author: arigo
Date: Mon Apr 18 23:34:39 2005
New Revision: 10837

Modified:
   pypy/dist/pypy/module/test/test_vars.py
   pypy/dist/pypy/objspace/std/dictproxytype.py
   pypy/dist/pypy/objspace/std/test/test_dictproxy.py
Log:
Fixed dictproxy comparison.  Re-enabled old test_vars.


Modified: pypy/dist/pypy/module/test/test_vars.py
==============================================================================
--- pypy/dist/pypy/module/test/test_vars.py	(original)
+++ pypy/dist/pypy/module/test/test_vars.py	Mon Apr 18 23:34:39 2005
@@ -2,13 +2,13 @@
 
 class AppTestVars:
 
-    def _test_vars_no_arguments(self):
+    def test_vars_no_arguments(self):
         assert vars() == locals()
 
-    def _test_vars_too_many_arguments(self):
+    def test_vars_too_many_arguments(self):
         raises(TypeError, vars,  0, 1)
 
-    def _test_vars_correct_arguments(self):
+    def test_vars_correct_arguments(self):
         class a:
             def __init__(self):
                 self.res = 42

Modified: pypy/dist/pypy/objspace/std/dictproxytype.py
==============================================================================
--- pypy/dist/pypy/objspace/std/dictproxytype.py	(original)
+++ pypy/dist/pypy/objspace/std/dictproxytype.py	Mon Apr 18 23:34:39 2005
@@ -13,6 +13,15 @@
         return space.getattr(w_obj.w_dict, space.wrap(name))
     return GetSetProperty(fget)
 
+def _compareproxymethod(opname):
+    def compare(space, w_obj1, w_obj2):
+        from pypy.objspace.std.dictproxyobject import W_DictProxyObject
+        if not isinstance(w_obj1, W_DictProxyObject):
+            raise OperationError(space.w_TypeError,
+                                 space.wrap("expected dictproxy"))
+        return getattr(space, opname)(w_obj1.w_dict, w_obj2)
+    return gateway.interp2app(compare)
+
 # ____________________________________________________________
 
 dictproxy_typedef = StdTypeDef("dictproxy",
@@ -32,11 +41,11 @@
     __iter__ = _proxymethod('__iter__'),
     #__cmp__ = _proxymethod('__cmp__'),
     # you cannot have it here if it is not in dict
-    __lt__ = _proxymethod('__lt__'),
-    __le__ = _proxymethod('__le__'),
-    __eq__ = _proxymethod('__eq__'),
-    __ne__ = _proxymethod('__ne__'),
-    __gt__ = _proxymethod('__gt__'),
-    __ge__ = _proxymethod('__ge__'),
+    __lt__ = _compareproxymethod('lt'),
+    __le__ = _compareproxymethod('le'),
+    __eq__ = _compareproxymethod('eq'),
+    __ne__ = _compareproxymethod('ne'),
+    __gt__ = _compareproxymethod('gt'),
+    __ge__ = _compareproxymethod('ge'),
 )
 dictproxy_typedef.registermethods(globals())

Modified: pypy/dist/pypy/objspace/std/test/test_dictproxy.py
==============================================================================
--- pypy/dist/pypy/objspace/std/test/test_dictproxy.py	(original)
+++ pypy/dist/pypy/objspace/std/test/test_dictproxy.py	Mon Apr 18 23:34:39 2005
@@ -18,3 +18,16 @@
             pass
         else:
             raise AssertionError, 'this should not have been writable'
+
+    def test_dictproxyeq(self):
+        class a(object):
+            pass
+        class b(object):
+            stuff = 42
+        class c(object):
+            stuff = 42
+        assert a.__dict__ == a.__dict__
+        assert a.__dict__ != b.__dict__
+        assert a.__dict__ != {'123': '456'}
+        assert {'123': '456'} != a.__dict__
+        assert b.__dict__ == c.__dict__



More information about the Pypy-commit mailing list