[pypy-svn] rev 2532 - in pypy/trunk/src/pypy/objspace/std: . test
jacob at codespeak.net
jacob at codespeak.net
Thu Dec 18 18:47:08 CET 2003
Author: jacob
Date: Thu Dec 18 18:47:08 2003
New Revision: 2532
Modified:
pypy/trunk/src/pypy/objspace/std/dicttype.py
pypy/trunk/src/pypy/objspace/std/test/test_dictobject.py
Log:
Added fromkeys and tests for fromkeys.
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 Thu Dec 18 18:47:08 2003
@@ -5,25 +5,27 @@
from pypy.objspace.std.objspace import *
from pypy.interpreter import gateway
from typeobject import W_TypeObject
+from listobject import W_ListObject
class W_DictType(W_TypeObject):
typename = 'dict'
- dict_copy = MultiMethod('copy', 1)
- dict_items = MultiMethod('items', 1)
- dict_keys = MultiMethod('keys', 1)
- dict_values = MultiMethod('values', 1)
- dict_has_key = MultiMethod('has_key', 2)
- dict_clear = MultiMethod('clear', 1)
- dict_get = MultiMethod('get', 3, defaults=(None,))
- dict_pop = MultiMethod('pop', 2, varargs=True)
- dict_popitem = MultiMethod('popitem', 1)
- dict_setdefault = MultiMethod('setdefault', 3, defaults=(None,))
- dict_update = MultiMethod('update', 2)
- dict_iteritems = MultiMethod('iteritems', 1)
- dict_iterkeys = MultiMethod('iterkeys', 1)
- dict_itervalues = MultiMethod('itervalues', 1)
+ dict_copy = MultiMethod('copy', 1)
+ dict_items = MultiMethod('items', 1)
+ dict_keys = MultiMethod('keys', 1)
+ dict_values = MultiMethod('values', 1)
+ dict_has_key = MultiMethod('has_key', 2)
+ dict_clear = MultiMethod('clear', 1)
+ dict_get = MultiMethod('get', 3, defaults=(None,))
+ dict_pop = MultiMethod('pop', 2, varargs=True)
+ dict_popitem = MultiMethod('popitem', 1)
+ dict_setdefault = MultiMethod('setdefault', 3, defaults=(None,))
+ dict_update = MultiMethod('update', 2)
+ dict_iteritems = MultiMethod('iteritems', 1)
+ dict_iterkeys = MultiMethod('iterkeys', 1)
+ dict_itervalues = MultiMethod('itervalues', 1)
+ dict_fromkeys = MultiMethod('fromkeys', 2, varargs=True)
# This can return when multimethods have been fixed
#dict_str = StdObjSpace.str
@@ -83,6 +85,16 @@
def app_dict_itervalues__ANY(d):
return iter(d.values())
+def app_dict_fromkeys__ANY_List(d, seq, value):
+ d = {}
+ if value:
+ value = value[0]
+ else:
+ value = None
+ for item in seq:
+ d[item] = value
+ return d
+
# This can return when multimethods have been fixed
"""
def app_dict_str__ANY(d):
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 Thu Dec 18 18:47:08 2003
@@ -339,5 +339,12 @@
except (TypeError, ValueError): pass
else: self.fail("dict([[1,2,3]]) should raise!")
+ def test_fromkeys(self):
+ self.assertEquals({}.fromkeys([1, 2], 1), {1: 1, 2: 1})
+ self.assertEquals({}.fromkeys([1, 2]), {1: None, 2: None})
+ self.assertEquals({}.fromkeys([]), {})
+ self.assertEquals({1: 0, 2: 0, 3: 0}.fromkeys([1, '1'], 'j'),
+ {1: 'j', '1': 'j'})
+
if __name__ == '__main__':
test.main()
More information about the Pypy-commit
mailing list