Author: Ronan Lamy <[email protected]>
Branch: py2-mappingproxy
Changeset: r86108:50212a6235fd
Date: 2016-08-03 04:59 +0100
http://bitbucket.org/pypy/pypy/changeset/50212a6235fd/

Log:    Fix test_dictproxy.py to actually match the expected behaviour

diff --git a/pypy/objspace/std/test/test_dictproxy.py 
b/pypy/objspace/std/test/test_dictproxy.py
--- a/pypy/objspace/std/test/test_dictproxy.py
+++ b/pypy/objspace/std/test/test_dictproxy.py
@@ -9,37 +9,19 @@
         assert 'a' in NotEmpty.__dict__
         assert 'a' in NotEmpty.__dict__.keys()
         assert 'b' not in NotEmpty.__dict__
-        NotEmpty.__dict__['b'] = 4
-        assert NotEmpty.b == 4
-        del NotEmpty.__dict__['b']
         assert NotEmpty.__dict__.get("b") is None
+        raises(TypeError, "NotEmpty.__dict__['b'] = 4")
         raises(TypeError, 'NotEmpty.__dict__[15] = "y"')
-        raises(KeyError, 'del NotEmpty.__dict__[15]')
+        raises(TypeError, 'del NotEmpty.__dict__[15]')
 
-        assert NotEmpty.__dict__.setdefault("string", 1) == 1
-        assert NotEmpty.__dict__.setdefault("string", 2) == 1
-        assert NotEmpty.string == 1
-        raises(TypeError, 'NotEmpty.__dict__.setdefault(15, 1)')
-
-    def test_dictproxy_popitem(self):
-        class A(object):
-            a = 42
-        seen = 0
-        try:
-            while True:
-                key, value = A.__dict__.popitem()
-                if key == 'a':
-                    assert value == 42
-                    seen += 1
-        except KeyError:
-            pass
-        assert seen == 1
+        raises(AttributeError, 'NotEmpty.__dict__.setdefault')
 
     def test_dictproxy_getitem(self):
         class NotEmpty(object):
             a = 1
         assert 'a' in NotEmpty.__dict__
-        class substr(str): pass
+        class substr(str):
+            pass
         assert substr('a') in NotEmpty.__dict__
         assert u'a' in NotEmpty.__dict__
         assert NotEmpty.__dict__[u'a'] == 1
@@ -62,15 +44,37 @@
         class a(object):
             pass
         s1 = repr(a.__dict__)
+        assert s1.startswith('dict_proxy({') and s1.endswith('})')
         s2 = str(a.__dict__)
-        assert s1 == s2
-        assert s1.startswith('{') and s1.endswith('}')
+        assert s1 == 'dict_proxy(%s)' % s2
 
     def test_immutable_dict_on_builtin_type(self):
         raises(TypeError, "int.__dict__['a'] = 1")
-        raises(TypeError, int.__dict__.popitem)
-        raises(TypeError, int.__dict__.clear)
+        raises((AttributeError, TypeError), "int.__dict__.popitem()")
+        raises((AttributeError, TypeError), "int.__dict__.clear()")
+
+    def test_dictproxy(self):
+        dictproxy = type(int.__dict__)
+        assert dictproxy is not dict
+        assert dictproxy.__name__ == 'dictproxy'
+        raises(TypeError, dictproxy)
+
+        mapping = {'a': 1}
+        raises(TypeError, dictproxy, mapping)
+
+        class A(object):
+            a = 1
+
+        proxy = A.__dict__
+        mapping = dict(proxy)
+        assert proxy['a'] == 1
+        assert 'a' in proxy
+        assert 'z' not in proxy
+        assert repr(proxy) == 'dict_proxy(%r)' % mapping
+        assert proxy.keys() == mapping.keys()
+        raises(TypeError, "proxy['a'] = 4")
+        raises(TypeError, "del proxy['a']")
+        raises(AttributeError, "proxy.clear()")
 
 class AppTestUserObjectMethodCache(AppTestUserObject):
     spaceconfig = {"objspace.std.withmethodcachecounter": True}
-
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to