[Python-checkins] python/nondist/sandbox/setobj setobject.c, 1.23,
1.24 test_set.py, 1.21, 1.22
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Sat Nov 15 22:04:34 EST 2003
Update of /cvsroot/python/python/nondist/sandbox/setobj
In directory sc8-pr-cvs1:/tmp/cvs-serv28567
Modified Files:
setobject.c test_set.py
Log Message:
* Added test for frozensets as dictionary keys.
* Improve dict_pop() by grabbing the reference prior to item deletion.
Index: setobject.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/setobj/setobject.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** setobject.c 16 Nov 2003 02:33:54 -0000 1.23
--- setobject.c 16 Nov 2003 03:04:32 -0000 1.24
***************
*** 134,138 ****
return NULL;
-
newso = (setobject *)(so->ob_type->tp_alloc(so->ob_type, 0));
if (newso == NULL) {
--- 134,137 ----
***************
*** 786,792 ****
return NULL;
}
- if (PyDict_DelItem(so->data, key) == -1)
- PyErr_Clear();
Py_INCREF(key);
return key;
}
--- 785,791 ----
return NULL;
}
Py_INCREF(key);
+ if (PyDict_DelItem(so->data, key) == -1)
+ PyErr_Clear();
return key;
}
Index: test_set.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/setobj/test_set.py,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -d -r1.21 -r1.22
*** test_set.py 15 Nov 2003 22:54:03 -0000 1.21
--- test_set.py 16 Nov 2003 03:04:32 -0000 1.22
***************
*** 265,270 ****
self.assertEqual(hash(frozenset('abcdeb')), hash(frozenset('ebecda')))
! # Tests takes from test_sets.py =============================================
empty_set = set()
--- 265,283 ----
self.assertEqual(hash(frozenset('abcdeb')), hash(frozenset('ebecda')))
+ def test_frozen_as_dictkey(self):
+ seq = range(10) + list('abcdefg') + ['apple']
+ key1 = frozenset(seq)
+ key2 = frozenset(reversed(seq))
+ self.assertEqual(key1, key2)
+ self.assertNotEqual(id(key1), id(key2))
+ d = {}
+ d[key1] = 42
+ self.assertEqual(d[key2], 42)
! def test_hash_caching(self):
! f = frozenset('abcdcda')
! self.assertEqual(hash(f), hash(f))
!
! # Tests taken from test_sets.py =============================================
empty_set = set()
More information about the Python-checkins
mailing list