diff options
| author | Andreas Beckermann <beckermann@monument-software.de> | 2019-09-12 15:10:46 +0200 |
|---|---|---|
| committer | Andreas Beckermann <beckermann@monument-software.de> | 2019-10-25 07:37:34 +0200 |
| commit | e52ebf296e8fcd84fa4055c80a3c489ae1431c9e (patch) | |
| tree | 106510917095522f07c1f16d57b84f078cbfa9e3 /sources/pyside2/tests/QtWidgets/bug_862.py | |
| parent | b332456c38241d663d1eef3636129ea82fd00564 (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.py | 33 |
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__": |
