diff options
-rw-r--r-- | sources/pyside6/libpyside/pysideqflags.cpp | 10 | ||||
-rw-r--r-- | sources/pyside6/tests/QtCore/qflags_test.py | 19 |
2 files changed, 27 insertions, 2 deletions
diff --git a/sources/pyside6/libpyside/pysideqflags.cpp b/sources/pyside6/libpyside/pysideqflags.cpp index 8cc6b0b30..197119ec3 100644 --- a/sources/pyside6/libpyside/pysideqflags.cpp +++ b/sources/pyside6/libpyside/pysideqflags.cpp @@ -100,8 +100,14 @@ extern "C" { { int result = 0; if (!PyNumber_Check(other)) { - PyErr_BadArgument(); - return nullptr; + switch (op) { + case Py_EQ: + Py_RETURN_FALSE; + case Py_NE: + Py_RETURN_TRUE; + default: + Py_RETURN_NOTIMPLEMENTED; + } } if (self == other) { diff --git a/sources/pyside6/tests/QtCore/qflags_test.py b/sources/pyside6/tests/QtCore/qflags_test.py index 8cc0b36c0..77e61560f 100644 --- a/sources/pyside6/tests/QtCore/qflags_test.py +++ b/sources/pyside6/tests/QtCore/qflags_test.py @@ -111,6 +111,25 @@ class QFlagOperatorTest(unittest.TestCase): flags = Qt.NoItemFlags | Qt.ItemIsUserCheckable self.assertEqual(flags | Qt.ItemIsEnabled, Qt.ItemIsEnabled | flags) + def testEqualNonNumericalObject(self): + '''QFlags ==,!= non-numerical object ''' + flags = Qt.NoItemFlags | Qt.ItemIsUserCheckable + + self.assertTrue(flags != None) # noqa: E711 + self.assertFalse(flags == None) # noqa: E711 + + self.assertTrue(flags != "tomato") + self.assertFalse(flags == "tomato") + + with self.assertRaises(TypeError): + flags > None + with self.assertRaises(TypeError): + flags >= None + with self.assertRaises(TypeError): + flags < None + with self.assertRaises(TypeError): + flags <= None + class QFlagsOnQVariant(unittest.TestCase): def testQFlagsOnQVariant(self): |