[pypy-svn] rev 985 - in pypy/trunk/src/pypy/objspace/std: . test

tismer at codespeak.net tismer at codespeak.net
Mon Jun 23 13:43:07 CEST 2003


Author: tismer
Date: Mon Jun 23 13:43:06 2003
New Revision: 985

Modified:
   pypy/trunk/src/pypy/objspace/std/dictobject.py
   pypy/trunk/src/pypy/objspace/std/dictobject_app.py
   pypy/trunk/src/pypy/objspace/std/dicttype.py
   pypy/trunk/src/pypy/objspace/std/test/test_dictobject.py
Log:
added tests and missing methods, tested, complete (despite order comparison)

Modified: pypy/trunk/src/pypy/objspace/std/dictobject.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/std/dictobject.py	(original)
+++ pypy/trunk/src/pypy/objspace/std/dictobject.py	Mon Jun 23 13:43:06 2003
@@ -1,3 +1,10 @@
+"""
+Reviewed 03-06-22
+All common dictionary methods are correctly implemented,
+tested, and complete. The only missing feature is support
+for order comparisons.
+"""
+
 from pypy.objspace.std.objspace import *
 from dicttype import W_DictType, _no_object
 from stringobject import W_StringObject
@@ -185,6 +192,17 @@
     else:
         w_value = w_self.space.gethelper(applicationfile).call("dict_pop", [w_self, w_key, w_default])
     return w_value
-    
+
+def dict_iteritems__Dict(space, w_self):
+    w_item = w_self.space.gethelper(applicationfile).call("dict_iteritems", [w_self])
+    return w_item
+
+def dict_iterkeys__Dict(space, w_self):
+    w_item = w_self.space.gethelper(applicationfile).call("dict_iterkeys", [w_self])
+    return w_item
+
+def dict_itervalues__Dict(space, w_self):
+    w_item = w_self.space.gethelper(applicationfile).call("dict_itervalues", [w_self])
+    return w_item
 
 register_all(vars(), W_DictType)

Modified: pypy/trunk/src/pypy/objspace/std/dictobject_app.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/std/dictobject_app.py	(original)
+++ pypy/trunk/src/pypy/objspace/std/dictobject_app.py	Mon Jun 23 13:43:06 2003
@@ -1,4 +1,4 @@
-#empty
+
 
 def dict_update(d,o):
     for k in o.keys():
@@ -30,3 +30,13 @@
     if v is __unique:
         raise KeyError, k
     return v
+
+def dict_iteritems(d):
+    return iter(d.items())
+
+def dict_iterkeys(d):
+    return iter(d.keys())
+
+def dict_itervalues(d):
+    return iter(d.values())
+

Modified: pypy/trunk/src/pypy/objspace/std/dicttype.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/std/dicttype.py	(original)
+++ pypy/trunk/src/pypy/objspace/std/dicttype.py	Mon Jun 23 13:43:06 2003
@@ -1,3 +1,7 @@
+"""
+Reviewed 03-06-22
+"""
+
 from pypy.objspace.std.objspace import *
 from typeobject import W_TypeObject
 

Modified: pypy/trunk/src/pypy/objspace/std/test/test_dictobject.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/std/test/test_dictobject.py	(original)
+++ pypy/trunk/src/pypy/objspace/std/test/test_dictobject.py	Mon Jun 23 13:43:06 2003
@@ -83,30 +83,30 @@
     
         
     def test_clear(self):
-        self.d = {1:2, 3:4}
-        self.d.clear()
-        self.assertEqual(len(self.d), 0)
+        d = {1:2, 3:4}
+        d.clear()
+        self.assertEqual(len(d), 0)
                          
     def test_copy(self):
-        self.d = {1:2, 3:4}
-        dd = self.d.copy()
-        self.assertEqual(self.d, dd)
-        self.failIf(self.d is dd)
+        d = {1:2, 3:4}
+        dd = d.copy()
+        self.assertEqual(d, dd)
+        self.failIf(d is dd)
         
     def test_get(self):
-        self.d = {1:2, 3:4}
-        self.assertEqual(self.d.get(1), 2)
-        self.assertEqual(self.d.get(1,44), 2)
-        self.assertEqual(self.d.get(33), None)
-        self.assertEqual(self.d.get(33,44), 44)
+        d = {1:2, 3:4}
+        self.assertEqual(d.get(1), 2)
+        self.assertEqual(d.get(1,44), 2)
+        self.assertEqual(d.get(33), None)
+        self.assertEqual(d.get(33,44), 44)
 
     def test_pop(self):
-        self.d = {1:2, 3:4}
-        dd = self.d.copy()
+        d = {1:2, 3:4}
+        dd = d.copy()
         result = dd.pop(1)
         self.assertEqual(result, 2)
         self.assertEqual(len(dd), 1)
-        dd = self.d.copy()
+        dd = d.copy()
         result = dd.pop(1, 44)
         self.assertEqual(result, 2)
         self.assertEqual(len(dd), 1)
@@ -116,68 +116,77 @@
         self.assertRaises(KeyError, dd.pop, 33)
     
     def test_has_key(self):
-        self.d = {1:2, 3:4}
-        self.failUnless(self.d.has_key(1))
-        self.failIf(self.d.has_key(33))
+        d = {1:2, 3:4}
+        self.failUnless(d.has_key(1))
+        self.failIf(d.has_key(33))
     
     def test_items(self):
-        self.d = {1:2, 3:4}
-        its = self.d.items()
+        d = {1:2, 3:4}
+        its = d.items()
         its.sort()
         self.assertEqual(its, [(1,2),(3,4)])
     
-    def notyet_test_iteritems(self):
-        pass
-    
-    def notyet_test_iterkeys(self):
-        pass
-    
-    def notyet_test_itervalues(self):
-        pass
+    def test_iteritems(self):
+        d = {1:2, 3:4}
+        dd = d.copy()
+        for k, v in d.iteritems():
+            self.assertEqual(v, dd[k])
+            del dd[k]
+        self.failIf(dd)
+    
+    def test_iterkeys(self):
+        d = {1:2, 3:4}
+        dd = d.copy()
+        for k in d.iterkeys():
+            del dd[k]
+        self.failIf(dd)
+    
+    def test_itervalues(self):
+        d = {1:2, 3:4}
+        values = []
+        for k in d.itervalues():
+            values.append(k)
+        self.assertEqual(values, d.values())
     
     def test_keys(self):
-        self.d = {1:2, 3:4}
-        kys = self.d.keys()
+        d = {1:2, 3:4}
+        kys = d.keys()
         kys.sort()
         self.assertEqual(kys, [1,3])
     
     def test_popitem(self):
-        self.d = {1:2, 3:4}
-        it = self.d.popitem()
-        self.assertEqual(len(self.d), 1)
+        d = {1:2, 3:4}
+        it = d.popitem()
+        self.assertEqual(len(d), 1)
         self.failUnless(it==(1,2) or it==(3,4))
-        it1 = self.d.popitem()
-        self.assertEqual(len(self.d), 0)
+        it1 = d.popitem()
+        self.assertEqual(len(d), 0)
         self.failUnless((it!=it1) and (it1==(1,2) or it1==(3,4)))
     
     def test_setdefault(self):
-        self.d = {1:2, 3:4}
-        dd = self.d.copy()
+        d = {1:2, 3:4}
+        dd = d.copy()
         x = dd.setdefault(1, 99)
-        self.assertEqual(self.d, dd)
+        self.assertEqual(d, dd)
         self.assertEqual(x, 2)
         x = dd.setdefault(33, 99)
-        self.d[33] = 99
-        self.assertEqual(self.d, dd)
+        d[33] = 99
+        self.assertEqual(d, dd)
         self.assertEqual(x, 99)
     
     def test_update(self):
-        self.d = {1:2, 3:4}
-        dd = self.d.copy()
-        self.d.update({})
-        self.assertEqual(self.d, dd)
-        self.d.update({3:5, 6:7})
-        self.assertEqual(self.d, {1:2, 3:5, 6:7})
+        d = {1:2, 3:4}
+        dd = d.copy()
+        d.update({})
+        self.assertEqual(d, dd)
+        d.update({3:5, 6:7})
+        self.assertEqual(d, {1:2, 3:5, 6:7})
     
     def test_values(self):
-        self.d = {1:2, 3:4}
-        vals = self.d.values()
+        d = {1:2, 3:4}
+        vals = d.values()
         vals.sort()
         self.assertEqual(vals, [2,4])
 
-    
-
-        
-                                 
 if __name__ == '__main__':
     test.main()


More information about the Pypy-commit mailing list