[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

AltStyle によって変換されたページ (->オリジナル) /