aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauro Neto <lauro.neto@openbossa.org>2011-10-20 19:42:28 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:18:23 -0300
commit47c50216cc722fa88fffd14539e101bffb9ebea6 (patch)
treeb4bbb04ea4168d774dd8ca0b71d4e1f27d97e9c5
parent84f15f4239715a0cb8c3c61bb3819db5e0285483 (diff)
Fix regression with enums.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org> Reviewer: Hugo Lima <hugo.lima@openbossa.org>
-rw-r--r--libshiboken/sbkenum.cpp48
-rw-r--r--tests/samplebinding/enum_test.py6
2 files changed, 28 insertions, 26 deletions
diff --git a/libshiboken/sbkenum.cpp b/libshiboken/sbkenum.cpp
index c372f0b7a..e65cbd7a6 100644
--- a/libshiboken/sbkenum.cpp
+++ b/libshiboken/sbkenum.cpp
@@ -192,32 +192,28 @@ static PyObject* enum_richcompare(PyObject* self, PyObject* other, int op)
long valA = SBK_ENUM(self)->ob_value;
long valB = getNumberValue(other);
- if (self == other) {
- result = 1;
- } else {
- switch (op) {
- case Py_EQ:
- result = (valA == valB);
- break;
- case Py_NE:
- result = (valA != valB);
- break;
- case Py_LE:
- result = (valA <= valB);
- break;
- case Py_GE:
- result = (valA >= valB);
- break;
- case Py_LT:
- result = (valA < valB);
- break;
- case Py_GT:
- result = (valA > valB);
- break;
- default:
- PyErr_BadArgument();
- return NULL;
- }
+ switch (op) {
+ case Py_EQ:
+ result = (valA == valB);
+ break;
+ case Py_NE:
+ result = (valA != valB);
+ break;
+ case Py_LE:
+ result = (valA <= valB);
+ break;
+ case Py_GE:
+ result = (valA >= valB);
+ break;
+ case Py_LT:
+ result = (valA < valB);
+ break;
+ case Py_GT:
+ result = (valA > valB);
+ break;
+ default:
+ PyErr_BadArgument();
+ return NULL;
}
if (result)
Py_RETURN_TRUE;
diff --git a/tests/samplebinding/enum_test.py b/tests/samplebinding/enum_test.py
index 6b3609a39..8346f39d7 100644
--- a/tests/samplebinding/enum_test.py
+++ b/tests/samplebinding/enum_test.py
@@ -141,6 +141,12 @@ class EnumOverloadTest(unittest.TestCase):
self.assertEqual(o.callWithEnum('', Event.ANY_EVENT, 9), 81)
self.assertEqual(o.callWithEnum('', 9), 9)
+class EnumOperators(unittest.TestCase):
+ '''Test case for operations on enums'''
+
+ def testInequalitySameObject(self):
+ self.assertFalse(Event.ANY_EVENT != Event.ANY_EVENT)
+
if __name__ == '__main__':
unittest.main()