[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

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