aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/tests/QtWidgets/bug_862.py
diff options
context:
space:
mode:
authorAndreas Beckermann <beckermann@monument-software.de>2019-09-12 15:10:46 +0200
committerAndreas Beckermann <beckermann@monument-software.de>2019-10-25 07:37:34 +0200
commite52ebf296e8fcd84fa4055c80a3c489ae1431c9e (patch)
tree106510917095522f07c1f16d57b84f078cbfa9e3 /sources/pyside2/tests/QtWidgets/bug_862.py
parentb332456c38241d663d1eef3636129ea82fd00564 (diff)
Add support for __repr__ in QObject derived classes
Currently shiboken generates classes without __repr__ for QObject derived classes. However for all non-QObject classes that have an operator<<() for QDebug, it *does* add a valid repr implementation. Extend this behavior to QObject classes as well. In order for this to become more useful, also check for the indirection of operator<<(): If operator<<(QDebug, Foo*) is available, use the current non-value-type behavior, (i.e. provide cppSelf to operator<<()), but if operator<<(QDebug, const Foo&) is available instead, use the same behavior as for value-types, i.e. provide *cppSelf. This greatly increases the number of classes where operator<<() provides useful results. Also make sure to check for operator<<() in namespaces (recursively), not just at global scope. Change-Id: Ief9158455a25e332f07169f09692cafb8097078b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside2/tests/QtWidgets/bug_862.py')
-rw-r--r--sources/pyside2/tests/QtWidgets/bug_862.py33
1 files changed, 28 insertions, 5 deletions
diff --git a/sources/pyside2/tests/QtWidgets/bug_862.py b/sources/pyside2/tests/QtWidgets/bug_862.py
index ac0325536..4621fc3b4 100644
--- a/sources/pyside2/tests/QtWidgets/bug_862.py
+++ b/sources/pyside2/tests/QtWidgets/bug_862.py
@@ -26,6 +26,29 @@
##
#############################################################################
+
+#
+# Test for bug 862, original description was:
+#
+# print seems to be broken at least for QGraphicsItems-derived objects. The
+# attached code shows:
+#
+# <__main__.MyQObject object at 0xf99f38>
+# <__main__.MyQWidget object at 0xf99f38>
+# <PySide.QtGui.MyQGraphicsObject (this = 0x11c0d60 , parent = 0x0 , pos =
+# QPointF(0, 0) , z = 0 , flags = ( ) ) at 0xf99f38>
+# <PySide.QtGui.QGraphicsItem (this = 0x11c2e60 , parent = 0x0 , pos = QPointF(0,
+# 0) , z = 0 , flags = ( ) ) at 0xf99f38>
+#
+# Where it should be showing something like:
+#
+# <__main__.MyQObject object at 0x7f55cf226c20>
+# <__main__.MyQWidget object at 0x7f55cf226c20>
+# <__main__.MyQGraphicsObject object at 0x7f55cf226c20>
+# <__main__.MyQGraphicsItem object at 0x7f55cf226c20>
+#
+
+
from PySide2.QtCore import QObject
from PySide2.QtWidgets import *
import PySide2.QtCore
@@ -53,14 +76,14 @@ class TestRepr (unittest.TestCase):
app = QApplication([])
- self.assertEqual("<__main__.MyQObject object at ", repr(MyQObject())[:30])
- self.assertEqual("<__main__.MyQWidget object at ", repr(MyQWidget())[:30])
+ self.assertEqual("<__main__.MyQObject(0x", repr(MyQObject())[:22])
+ self.assertEqual("<__main__.MyQWidget(0x", repr(MyQWidget())[:22])
self.assertEqual("<__main__.MyQGraphicsObject(0x", repr(MyQGraphicsObject())[:30])
self.assertEqual("<__main__.MyQGraphicsItem(0x", repr(MyQGraphicsItem())[:28])
- self.assertEqual("<PySide2.QtCore.QObject object at ", repr(QObject())[:34])
- self.assertEqual("<PySide2.QtCore.QObject object at ", repr(PySide2.QtCore.QObject())[:34])
- self.assertEqual("<PySide2.QtWidgets.QWidget object at ", repr(QWidget())[:37])
+ self.assertEqual("<PySide2.QtCore.QObject(0x", repr(QObject())[:26])
+ self.assertEqual("<PySide2.QtCore.QObject(0x", repr(PySide2.QtCore.QObject())[:26])
+ self.assertEqual("<PySide2.QtWidgets.QWidget(0x", repr(QWidget())[:29])
self.assertEqual("<PySide2.QtWidgets.QGraphicsWidget(0x", repr(QGraphicsWidget())[:37])
if __name__ == "__main__":