diff options
author | Bernd Weimer <bernd.weimer@pelagicore.com> | 2017-11-24 16:51:33 +0100 |
---|---|---|
committer | Robert Griebl <robert.griebl@pelagicore.com> | 2017-11-28 13:39:34 +0000 |
commit | 00dc4841db72d2065193fcc7f078f001ab071cff (patch) | |
tree | 735b955fc6779004eb1d2989e80edd9a0092ad39 | |
parent | 75c32dd0f21913b4777a12cc1d5d9fd805a58d17 (diff) | |
download | qtapplicationmanager-00dc4841db72d2065193fcc7f078f001ab071cff.tar.gz |
Add window property tests
Also added tests for windowClosing signal and revised the test code.
Change-Id: I7f89a56ebe09ab42390e201bb4b389009a7da2b7
Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
-rw-r--r-- | tests/qml/windowmapping/apps/test.winmap.amwin/amwin.qml | 4 | ||||
-rw-r--r-- | tests/qml/windowmapping/tst_windowmapping.qml | 94 |
2 files changed, 64 insertions, 34 deletions
diff --git a/tests/qml/windowmapping/apps/test.winmap.amwin/amwin.qml b/tests/qml/windowmapping/apps/test.winmap.amwin/amwin.qml index fc8e2181..266b971d 100644 --- a/tests/qml/windowmapping/apps/test.winmap.amwin/amwin.qml +++ b/tests/qml/windowmapping/apps/test.winmap.amwin/amwin.qml @@ -55,11 +55,13 @@ ApplicationManagerWindow { target: ApplicationInterface onOpenDocument: { switch (documentUrl) { - case "show-main": root.visible = true; break; + case "show-main": root.visible = true; root.setWindowProperty("key1", "val1"); break; case "hide-main": root.visible = false; break; case "show-sub": sub.visible = true; break; case "hide-sub": sub.visible = false; break; } } } + + Component.onCompleted: setWindowProperty("objectName", 42); } diff --git a/tests/qml/windowmapping/tst_windowmapping.qml b/tests/qml/windowmapping/tst_windowmapping.qml index 6964fb09..fc826ebf 100644 --- a/tests/qml/windowmapping/tst_windowmapping.qml +++ b/tests/qml/windowmapping/tst_windowmapping.qml @@ -49,6 +49,9 @@ TestCase { name: "WindowMapping" visible: true + property string appId; + property Item lastWindowReady; + Item { id: chrome anchors.fill: parent @@ -61,7 +64,10 @@ TestCase { Connections { target: WindowManager - onWindowReady: window.parent = WindowManager.windowProperty(window, "type") === "sub" ? subChrome : chrome; + onWindowReady: { + window.parent = WindowManager.windowProperty(window, "type") === "sub" ? subChrome : chrome; + lastWindowReady = window; + } onWindowLost: WindowManager.releaseWindow(window); } @@ -73,27 +79,42 @@ TestCase { } SignalSpy { + id: windowClosingSpy + target: WindowManager + signalName: "windowClosing" + } + + SignalSpy { id: windowLostSpy target: WindowManager signalName: "windowLost" } + SignalSpy { + id: windowPropertyChangedSpy + target: WindowManager + signalName: "windowPropertyChanged" + } + SignalSpy { id: runStateChangedSpy target: ApplicationManager signalName: "applicationRunStateChanged" } - function ensureAppTerminated(id) { + function cleanup() { runStateChangedSpy.clear(); - while (ApplicationManager.applicationRunState(id) !== ApplicationManager.NotRunning) { + ApplicationManager.stopApplication(appId); + while (ApplicationManager.applicationRunState(appId) !== ApplicationManager.NotRunning) runStateChangedSpy.wait(3000); - verify(runStateChangedSpy.count) - } + windowReadySpy.clear(); + windowClosingSpy.clear(); + windowLostSpy.clear(); } + function test_amwin_advanced() { - var appId = "test.winmap.amwin2"; + appId = "test.winmap.amwin2"; ApplicationManager.startApplication(appId, "show-sub"); wait(2000); compare(windowReadySpy.count, 0); @@ -101,18 +122,13 @@ TestCase { ApplicationManager.startApplication(appId, "show-main"); windowReadySpy.wait(3000); compare(windowReadySpy.count, 2); - windowReadySpy.clear(); - - ApplicationManager.stopApplication(appId); - ensureAppTerminated(appId); - windowLostSpy.clear(); } function test_amwin_loader() { if (!ApplicationManager.singleProcess) skip("Sporadically crashes in QtWaylandClient::QWaylandDisplay::flushRequests()"); - var appId = "test.winmap.loader"; + appId = "test.winmap.loader"; ApplicationManager.startApplication(appId, "show-sub"); windowReadySpy.wait(3000); compare(windowReadySpy.count, 2); @@ -121,20 +137,14 @@ TestCase { ApplicationManager.startApplication(appId, "hide-sub"); windowLostSpy.wait(2000); compare(windowLostSpy.count, 1); - windowLostSpy.clear(); ApplicationManager.startApplication(appId, "show-sub"); windowReadySpy.wait(3000); compare(windowReadySpy.count, 1); - windowReadySpy.clear(); - - ApplicationManager.stopApplication(appId); - ensureAppTerminated(appId); - windowLostSpy.clear(); } function test_amwin_peculiarities() { - var appId = "test.winmap.amwin2"; + appId = "test.winmap.amwin2"; ApplicationManager.startApplication(appId, "show-main"); windowReadySpy.wait(3000); compare(windowReadySpy.count, 1); @@ -151,7 +161,7 @@ TestCase { // Sub-window 2 has an invisible Rectangle as parent and hence the effective // visible state is false. Consequently no windowReady signal will be emitted. wait(2000); - compare(windowLostSpy.count, 0); + compare(windowReadySpy.count, 0); } else { // A Window's effective visible state solely depends on Window hierarchy. windowReadySpy.wait(3000); @@ -168,7 +178,6 @@ TestCase { ApplicationManager.startApplication(appId, "show-sub"); windowReadySpy.wait(3000); compare(windowReadySpy.count, 1); - windowReadySpy.clear(); // This is weird Window behavior: a child window becomes only visible, when the parent // window is visible, but when you change the parent window back to invisible, the child @@ -183,17 +192,12 @@ TestCase { if (ApplicationManager.singleProcess) { windowLostSpy.wait(2000); compare(windowLostSpy.count, 1); - windowLostSpy.clear(); } else { // This is even more weird Window behavior: when the parent window is invisible, it is // not possible any more to explicitly set the child window to invisible. wait(2000); compare(windowLostSpy.count, 0); } - - ApplicationManager.stopApplication(appId); - ensureAppTerminated(appId); - windowLostSpy.clear(); } function test_default_data() { @@ -207,19 +211,16 @@ TestCase { if (ApplicationManager.singleProcess && data.tag === "Window") skip("Window root element is not properly supported in single process mode."); - var appId = data.appId; + appId = data.appId; compare(chrome.children.length, 1); ApplicationManager.startApplication(appId); windowReadySpy.wait(2000); compare(windowReadySpy.count, 1); - windowReadySpy.clear(); compare(chrome.children.length, 2); ApplicationManager.stopApplication(appId); windowLostSpy.wait(2000); compare(windowLostSpy.count, 1); - windowLostSpy.clear(); - ensureAppTerminated(appId); } function test_mapping_data() { @@ -233,7 +234,7 @@ TestCase { if (ApplicationManager.singleProcess && data.tag === "Window") skip("Window root element is not properly supported in single process mode."); - var appId = data.appId; + appId = data.appId; compare(chrome.children.length, 1); ApplicationManager.startApplication(appId, "show-main"); windowReadySpy.wait(2000); @@ -249,15 +250,42 @@ TestCase { compare(subChrome.children.length, 1); ApplicationManager.startApplication(appId, "hide-sub"); + windowClosingSpy.wait(2000); + compare(windowClosingSpy.count, 1); + windowClosingSpy.clear(); windowLostSpy.wait(2000); compare(windowLostSpy.count, 1); windowLostSpy.clear(); compare(subChrome.children.length, 0); ApplicationManager.stopApplication(appId); + windowClosingSpy.wait(2000); + compare(windowClosingSpy.count, 1); windowLostSpy.wait(2000); compare(windowLostSpy.count, 1); - windowLostSpy.clear(); - ensureAppTerminated(appId); + } + + function test_window_properties() { + appId = "test.winmap.amwin"; + ApplicationManager.startApplication(appId); + windowReadySpy.wait(2000); + compare(windowReadySpy.count, 1); + + ApplicationManager.startApplication(appId, "show-main"); + windowPropertyChangedSpy.wait(2000); + compare(windowPropertyChangedSpy.count, 1); + + compare(WindowManager.windowProperty(lastWindowReady, "key1"), "val1"); + compare(WindowManager.windowProperty(lastWindowReady, "objectName"), 42); + + WindowManager.setWindowProperty(lastWindowReady, "key2", "val2"); + windowPropertyChangedSpy.wait(2000); + compare(windowPropertyChangedSpy.count, 2); + + var allProps = WindowManager.windowProperties(lastWindowReady) + compare(Object.keys(allProps).length, 3); + compare(allProps.key1, "val1"); + compare(allProps.key2, "val2"); + compare(allProps.objectName, 42); } } |