aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/tests
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2024-01-09 08:01:46 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2024-01-09 10:00:44 +0100
commita572450463cd6cf43b2c64a1486239d9cc464778 (patch)
tree61caad8c2aeddfa9cb1cadeaf39bb14ffa75af05 /sources/pyside6/tests
parent3c1a129bd45cf3a16b9ab6d9599d059b986cf8c9 (diff)
PySide6: Add QQmlEgine.singletonInstance()
[ChangeLog][PySide6] QQmlEgine.singletonInstance() has been added. Pick-to: 6.6 Change-Id: Ib1b48df49ca8a183dba415a04f414903f58e435c Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/pyside6/tests')
-rw-r--r--sources/pyside6/tests/QtQml/registersingletontype.py54
1 files changed, 42 insertions, 12 deletions
diff --git a/sources/pyside6/tests/QtQml/registersingletontype.py b/sources/pyside6/tests/QtQml/registersingletontype.py
index eb973b6e6..6beca1131 100644
--- a/sources/pyside6/tests/QtQml/registersingletontype.py
+++ b/sources/pyside6/tests/QtQml/registersingletontype.py
@@ -12,13 +12,18 @@ init_test_paths(False)
from helper.helper import quickview_errorstring
-from PySide6.QtCore import Property, Signal, QTimer, QUrl, QObject
+from PySide6.QtCore import Property, Signal, QTimer, QUrl, QObject, Slot
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import (qmlRegisterSingletonType, qmlRegisterSingletonInstance,
- QmlElement, QmlSingleton)
+ QmlElement, QmlSingleton, QJSValue)
from PySide6.QtQuick import QQuickView
+
+URI = "Singletons"
+
+
finalResult = 0
+qObjectQmlTypeId = 0
class SingletonQObject(QObject):
@@ -46,7 +51,7 @@ def singletonQJSValueCallback(engine):
return engine.evaluate("new Object({data: 50})")
-QML_IMPORT_NAME = "Singletons"
+QML_IMPORT_NAME = URI
QML_IMPORT_MAJOR_VERSION = 1
@@ -86,37 +91,62 @@ class DecoratedSingletonWithCreate(QObject):
data = Property(int, getData, setData)
+class TestQuickView(QQuickView):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._singleton_instance_qobject_int = False
+ self._singleton_instance_qobject_str = False
+ self._singleton_instance_jsvalue_int = False
+
+ @Slot()
+ def testSlot(self):
+ engine = self.engine()
+ instance = engine.singletonInstance(qObjectQmlTypeId)
+ if instance is not None and isinstance(instance, QObject):
+ self._singleton_instance_qobject_int = True
+ instance = engine.singletonInstance(URI, 'SingletonQObjectNoCallback')
+ if instance is not None and isinstance(instance, QObject):
+ self._singleton_instance_qobject_str = True
+ instance = engine.singletonInstance(URI, 'SingletonQJSValue')
+ if instance is not None and isinstance(instance, QJSValue):
+ self._singleton_instance_jsvalue_int = True
+ self.close()
+
+
class TestQmlSupport(unittest.TestCase):
def testIt(self):
app = QGuiApplication([])
- qmlRegisterSingletonType(SingletonQObject, 'Singletons', 1, 0, 'SingletonQObjectNoCallback')
- qmlRegisterSingletonType(SingletonQObject, 'Singletons', 1, 0, 'SingletonQObjectCallback',
+ qObjectQmlTypeId = qmlRegisterSingletonType(SingletonQObject, URI, 1, 0,
+ 'SingletonQObjectNoCallback')
+ qmlRegisterSingletonType(SingletonQObject, URI, 1, 0, 'SingletonQObjectCallback',
singletonQObjectCallback)
- qmlRegisterSingletonType('Singletons', 1, 0, 'SingletonQJSValue', singletonQJSValueCallback)
+ qmlRegisterSingletonType(URI, 1, 0, 'SingletonQJSValue', singletonQJSValueCallback)
# Accepts only QObject derived types
l = [1, 2]
with self.assertRaises(TypeError):
- qmlRegisterSingletonInstance(SingletonQObject, 'Singletons', 1, 0, 'SingletonInstance', l)
+ qmlRegisterSingletonInstance(SingletonQObject, URI, 1, 0, 'SingletonInstance', l)
# Modify value on the instance
s = SingletonQObject()
s.setData(99)
- qmlRegisterSingletonInstance(SingletonQObject, 'Singletons', 1, 0, 'SingletonInstance', s)
+ qmlRegisterSingletonInstance(SingletonQObject, URI, 1, 0, 'SingletonInstance', s)
- view = QQuickView()
+ view = TestQuickView()
file = Path(__file__).resolve().parent / 'registersingletontype.qml'
self.assertTrue(file.is_file())
view.setSource(QUrl.fromLocalFile(file))
self.assertTrue(view.rootObject(), quickview_errorstring(view))
view.resize(200, 200)
view.show()
- QTimer.singleShot(250, view.close)
+ QTimer.singleShot(250, view.testSlot)
app.exec()
self.assertEqual(finalResult, 899)
+ self.assertTrue(view._singleton_instance_qobject_int)
+ self.assertTrue(view._singleton_instance_qobject_str)
+ self.assertTrue(view._singleton_instance_jsvalue_int)
-if __name__ == '__main__':
- unittest.main()
+if __name__ == '__main__': unittest.main()