[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