aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/tests/signals/signal_newenum_test.py
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-10-21 10:48:46 +0200
committerChristian Tismer <tismer@stackless.com>2022-10-28 14:28:08 +0200
commitdf87bd0d6c55e0ab11aa68f7db99337860134510 (patch)
treea26bd7594a472691ae5506362c5911545ac2c327 /sources/pyside6/tests/signals/signal_newenum_test.py
parentcef14671536d23b45661cdb203c8da50aed149f1 (diff)
fix signals with new enums on Python 3.11
Signals were not aware of new enums. Worse, the name of the metatype was changed in Python. Added a test that simulates the example. Change-Id: I80e1f220c387ab39e918bfc63d6bb5cab6025590 Fixes: PYSIDE-2095 Pick-to: 6.3 6.4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/tests/signals/signal_newenum_test.py')
-rw-r--r--sources/pyside6/tests/signals/signal_newenum_test.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/sources/pyside6/tests/signals/signal_newenum_test.py b/sources/pyside6/tests/signals/signal_newenum_test.py
new file mode 100644
index 000000000..0027ede40
--- /dev/null
+++ b/sources/pyside6/tests/signals/signal_newenum_test.py
@@ -0,0 +1,61 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import os
+import sys
+import unittest
+
+from pathlib import Path
+sys.path.append(os.fspath(Path(__file__).resolve().parents[1]))
+from init_paths import init_test_paths
+init_test_paths(False)
+
+from PySide6.QtCore import QCoreApplication, QTimer, QEvent, Qt, Signal
+from PySide6.QtWidgets import QApplication, QWidget
+from PySide6.QtGui import QKeyEvent
+
+
+class Window(QWidget):
+ test_sig1 = Signal(Qt.AlignmentFlag)
+ test_sig2 = Signal(Qt.AlignmentFlag, str)
+
+ def __init__(self):
+ super().__init__()
+
+ def keyPressEvent(self, e):
+ self.test_sig1.emit(Qt.AlignLeft)
+ self.test_sig2.emit(Qt.AlignLeft, "bla")
+
+ def handler1(self, e):
+ print('\nhandler1', e, "type=", type(e).__name__)
+ self.result += 1
+
+ def handler2(self, e, s):
+ print('handler2', e, "type=", type(e).__name__, s)
+ self.result += 2
+
+
+class TestSignalNewEnum(unittest.TestCase):
+
+ def testIt(self):
+ app = QApplication()
+ self.window = window = Window()
+ window.result = 0
+ window.show()
+
+ window.test_sig1.connect(window.handler1)
+ window.test_sig2.connect(window.handler2)
+
+ QTimer.singleShot(0, self.sendKbdEvent)
+ QTimer.singleShot(100, app.quit)
+ app.exec()
+
+ self.assertEqual(window.result, 3)
+
+ def sendKbdEvent(self):
+ ev = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier, 'a')
+ QCoreApplication.sendEvent(self.window, ev)
+
+
+if __name__ == '__main__':
+ unittest.main()