[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