[Python-checkins] python/nondist/sandbox/setobj setobject.c, 1.6, 1.7 test_set.py, 1.6, 1.7

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Thu Nov 13 14:21:24 EST 2003


Update of /cvsroot/python/python/nondist/sandbox/setobj
In directory sc8-pr-cvs1:/tmp/cvs-serv25102

Modified Files:
	setobject.c test_set.py 
Log Message:
Add __repr__().  Enable test for sets of frozen sets.  Fix richcompare.  Use Py_True over Py_None.

Index: setobject.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/setobj/setobject.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** setobject.c	13 Nov 2003 17:47:28 -0000	1.6
--- setobject.c	13 Nov 2003 19:21:22 -0000	1.7
***************
*** 54,58 ****
                  if (item == NULL)
                          break;          // XXX add error checking
!                 if (PyDict_SetItem(data, item, Py_None) == -1) {
  			Py_DECREF(it);
  			Py_DECREF(data);
--- 54,58 ----
                  if (item == NULL)
                          break;          // XXX add error checking
!                 if (PyDict_SetItem(data, item, Py_True) == -1) {
  			Py_DECREF(it);
  			Py_DECREF(data);
***************
*** 154,158 ****
  	data = result->data;
  	while ((item = PyIter_Next(it)) != NULL) {
!                 if (PyDict_SetItem(data, item, Py_None) == -1) {
  			Py_DECREF(it);
  			Py_DECREF(result);
--- 154,158 ----
  	data = result->data;
  	while ((item = PyIter_Next(it)) != NULL) {
!                 if (PyDict_SetItem(data, item, Py_True) == -1) {
  			Py_DECREF(it);
  			Py_DECREF(result);
***************
*** 191,195 ****
  	while ((item = PyIter_Next(it)) != NULL) {
  		if (DICT_CONTAINS(selfdata, item)) {
! 			if (PyDict_SetItem(tgtdata, item, Py_None) == -1) {
  				Py_DECREF(it);
  				Py_DECREF(result);
--- 191,195 ----
  	while ((item = PyIter_Next(it)) != NULL) {
  		if (DICT_CONTAINS(selfdata, item)) {
! 			if (PyDict_SetItem(tgtdata, item, Py_True) == -1) {
  				Py_DECREF(it);
  				Py_DECREF(result);
***************
*** 272,276 ****
  		if (PyDict_DelItem(tgtdata, item) == -1) {
  			PyErr_Clear();
! 			if (PyDict_SetItem(tgtdata, item, Py_None) == -1) {
  				Py_DECREF(it);
  				Py_DECREF(otherset);
--- 272,276 ----
  		if (PyDict_DelItem(tgtdata, item) == -1) {
  			PyErr_Clear();
! 			if (PyDict_SetItem(tgtdata, item, Py_True) == -1) {
  				Py_DECREF(it);
  				Py_DECREF(otherset);
***************
*** 323,332 ****
  	PyObject *res;
  		
! 	if (op == Py_EQ && ! IS_SET(w))
  		res = Py_False;
! 	else if (op == Py_NE && ! IS_SET(w))
  		res = Py_True;
! 	else if (op == Py_EQ || op == Py_NE) 
! 		res = PyObject_RichCompare(((setobject *)v)->data, 
  			((setobject *)w)->data, op);
  	else
--- 323,332 ----
  	PyObject *res;
  		
! 	if (op == Py_EQ && !IS_SET(w))
  		res = Py_False;
! 	else if (op == Py_NE && !IS_SET(w))
  		res = Py_True;
! 	else if (op == Py_EQ || op == Py_NE)
! 		return PyObject_RichCompare(((setobject *)v)->data, 
  			((setobject *)w)->data, op);
  	else
***************
*** 334,338 ****
  	Py_INCREF(res);
  	return res;
!  }
  
  static PySequenceMethods set_as_sequence = {
--- 334,353 ----
  	Py_INCREF(res);
  	return res;
! }
! 
! static PyObject *
! set_repr(setobject *so)
! {
! 	PyObject *keys, *result, *listrepr;
! 
! 	keys = PyDict_Keys(so->data);
! 	listrepr = PyObject_Repr(keys);
! 	Py_DECREF(keys);
! 
! 	result = PyString_FromFormat("%s(%s)", so->ob_type->tp_name,
! 		PyString_AS_STRING(listrepr));
! 	Py_DECREF(listrepr);
! 	return result;
! }
  
  static PySequenceMethods set_as_sequence = {
***************
*** 382,386 ****
  	0,				/* tp_setattr */
  	0,				/* tp_compare */
! 	0,				/* tp_repr */
  	0,				/* tp_as_number */
  	&set_as_sequence,		/* tp_as_sequence */
--- 397,401 ----
  	0,				/* tp_setattr */
  	0,				/* tp_compare */
! 	(reprfunc)set_repr,		/* tp_repr */
  	0,				/* tp_as_number */
  	&set_as_sequence,		/* tp_as_sequence */
***************
*** 451,455 ****
  	0,				/* tp_setattr */
  	0,				/* tp_compare */
! 	0,				/* tp_repr */
  	0,				/* tp_as_number */
  	&set_as_sequence,		/* tp_as_sequence */
--- 466,470 ----
  	0,				/* tp_setattr */
  	0,				/* tp_compare */
! 	(reprfunc)set_repr,		/* tp_repr */
  	0,				/* tp_as_number */
  	&set_as_sequence,		/* tp_as_sequence */
***************
*** 466,470 ****
  	(traverseproc)set_traverse,	/* tp_traverse */
  	0,				/* tp_clear */
! 	0,				/* tp_richcompare */
  	0,				/* tp_weaklistoffset */
  	(getiterfunc)set_iter,		/* tp_iter */
--- 481,485 ----
  	(traverseproc)set_traverse,	/* tp_traverse */
  	0,				/* tp_clear */
! 	(richcmpfunc)set_richcompare,	/* tp_richcompare */
  	0,				/* tp_weaklistoffset */
  	(getiterfunc)set_iter,		/* tp_iter */

Index: test_set.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/setobj/test_set.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** test_set.py	13 Nov 2003 17:47:28 -0000	1.6
--- test_set.py	13 Nov 2003 19:21:22 -0000	1.7
***************
*** 49,52 ****
--- 49,63 ----
          self.assertEqual(type(i), self.thetype)
  
+     def test_equality(self):
+         self.assertEqual(self.thetype('abcb'), set('bcac'))
+         self.assertEqual(self.thetype('abcb'), frozenset('bcac'))
+         self.assertNotEqual(self.thetype('abc'), set('def'))
+         self.assertNotEqual(self.thetype('abc'), frozenset('def'))
+ 
+     def test_setOfFrozensets(self):
+         t = map(frozenset, ['abcdef', 'bcd', 'bdcb', 'fed', 'fedccba'])
+         s = self.thetype(t)
+         self.assertEqual(len(s), 3)
+ 
  class TestSet(TestJointOps):
      thetype = set
***************
*** 61,70 ****
          self.assertEqual(hash(frozenset('abcdeb')), hash(frozenset('ebecda')))
  
- class TestSetsOfSets(unittest.TestCase):
- 
-     def testSetOfFrozensets(set):
-         t = map(frozenset, ['abcdef', 'bcd', 'bdcb', 'fed', 'fedccba'])
-         s = set(t)
-         self.assertEqual(len(s), 3)
  
  def test_main(verbose=None):
--- 72,75 ----





More information about the Python-checkins mailing list