on xenial help sign in
Refactor tst_PhysicalKeysMapper.qml

Make the code clearer, run faster (by reducing wait times) and have cleaner output (no superfulous prints).

commitd5108b40123dec9262e18d214c12b57e9cc39a57 authorDaniel d'Andrada <daniel.dandrada@canonical.com> dateMon 13 Apr 2015, 12:51 (12 years ago) parentd638819
2 files changed+45−33
qml/Components/PhysicalKeysMapper.qml+3−3 tests/qmltests/Components/tst_PhysicalKeysMapper.qml+42−30
qml/Components/PhysicalKeysMapper.qml+3−3
@@ -41,6 +41,8 @@ Item {
4141 signal volumeUpTriggered;
4242 signal screenshotTriggered;
4343
44+ property int powerKeyLongPressTime: 2000
45+
4446 QtObject {
4547 id: d
4648
@@ -51,12 +53,10 @@ Item {
5153
5254 Timer {
5355 id: powerKeyLongPressTimer
54−
55− interval: 2000
56+ interval: root.powerKeyLongPressTime
5657 onTriggered: root.powerKeyLongPressed();
5758 }
5859
59−
6060 function onKeyPressed(event) {
6161 if ((event.key == Qt.Key_PowerDown || event.key == Qt.Key_PowerOff)
6262 && !event.isAutoRepeat) {
tests/qmltests/Components/tst_PhysicalKeysMapper.qml+42−30
@@ -21,6 +21,8 @@ import "../../../qml/Components"
2121TestCase {
2222 name: "PhysicalKeysMapper"
2323
24+ property var physicalKeysMapper: loader.item
25+
2426 Loader {
2527 // Using a Loader here to make sure mapper state is coherent
2628 // regardless of unmatched KeyPress and KeyRelease events
@@ -31,25 +33,25 @@ TestCase {
3133
3234 SignalSpy {
3335 id: powerSpy
34− target: loader.item
36+ target: physicalKeysMapper
3537 signalName: "powerKeyLongPressed"
3638 }
3739
3840 SignalSpy {
3941 id: volumeDownSpy
40− target: loader.item
42+ target: physicalKeysMapper
4143 signalName: "volumeDownTriggered"
4244 }
4345
4446 SignalSpy {
4547 id: volumeUpSpy
46− target: loader.item
48+ target: physicalKeysMapper
4749 signalName: "volumeUpTriggered"
4850 }
4951
5052 SignalSpy {
5153 id: screenshotSpy
52− target: loader.item
54+ target: physicalKeysMapper
5355 signalName: "screenshotTriggered"
5456 }
5557
@@ -66,54 +68,64 @@ TestCase {
6668 screenshotSpy.clear();
6769 }
6870
69− function test_LongPressPowerButton() {
70− loader.item.onKeyPressed({ key: Qt.Key_PowerDown });
71+ function test_powerKeyLongPressed() {
72+ physicalKeysMapper.powerKeyLongPressTime = 500;
7173
72− expectFailContinue("", "Power signal should not be emitted within a second");
73− powerSpy.wait(1000);
74− powerSpy.clear();
74+ physicalKeysMapper.onKeyPressed({ key: Qt.Key_PowerDown, isAutoRepeat: false });
75+
76+ for (var i = 0; i < 3; ++i) {
77+ wait(10);
78+ physicalKeysMapper.onKeyPressed({ key: Qt.Key_PowerDown, isAutoRepeat: true});
79+ }
80+
81+ // powerKeyLongPressed should not have been emitted yet.
82+ compare(powerSpy.count, 0);
7583
76− loader.item.onKeyPressed({ key: Qt.Key_PowerDown, isAutoRepeat: true });
77− powerSpy.wait(1500);
84+ for (var i = 0; i < 10; ++i) {
85+ wait(50);
86+ physicalKeysMapper.onKeyPressed({ key: Qt.Key_PowerDown, isAutoRepeat: true});
87+ }
88+
89+ compare(powerSpy.count, 1);
7890 }
7991
80− function test_ScreenshotButtons_data() {
92+ function test_screenshotButtons_data() {
8193 return [
8294 { tag: "UpFirst", first: Qt.Key_VolumeUp, second: Qt.Key_VolumeDown },
8395 { tag: "DownFirst", first: Qt.Key_VolumeDown, second: Qt.Key_VolumeUp },
8496 ];
8597 }
8698
87− function test_ScreenshotButtons(data) {
88− loader.item.onKeyPressed({ key: data.first });
89− loader.item.onKeyPressed({ key: data.second });
99+ function test_screenshotButtons(data) {
100+ physicalKeysMapper.onKeyPressed({ key: data.first });
101+ physicalKeysMapper.onKeyPressed({ key: data.second });
90102 screenshotSpy.wait();
91− loader.item.onKeyReleased({ key: data.first });
92− loader.item.onKeyReleased({ key: data.second });
93− expectFailContinue("", "VolumeUp signal should not fire");
94− volumeUpSpy.wait(100);
95− expectFailContinue("", "VolumeDown signal should not fire");
96− volumeDownSpy.wait(100);
103+ physicalKeysMapper.onKeyReleased({ key: data.first });
104+ physicalKeysMapper.onKeyReleased({ key: data.second });
105+
106+ wait(100);
107+ compare(volumeUpSpy.count, 0);
108+ compare(volumeDownSpy.count, 0);
97109 }
98110
99− function test_VolumeButton_data() {
111+ function test_volumeButton_data() {
100112 return [
101113 { tag: "Down", key: Qt.Key_VolumeDown, spy: volumeDownSpy },
102114 { tag: "Up", key: Qt.Key_VolumeUp, spy: volumeUpSpy },
103115 ];
104116 }
105117
106− function test_VolumeButton(data) {
107− loader.item.onKeyPressed({ key: data.key });
108− expectFailContinue("", "Signal should not fire on press");
109− data.spy.wait(100);
110− data.spy.clear();
118+ function test_volumeButton(data) {
119+ physicalKeysMapper.onKeyPressed({ key: data.key });
120+
121+ wait(100);
122+ compare(data.spy.count, 0);
111123
112− loader.item.onKeyReleased({ key: data.key });
124+ physicalKeysMapper.onKeyReleased({ key: data.key });
113125 data.spy.wait();
114126
115− loader.item.onKeyPressed({ key: data.key });
116− loader.item.onKeyPressed({ key: data.key, isAutoRepeat: true });
127+ physicalKeysMapper.onKeyPressed({ key: data.key });
128+ physicalKeysMapper.onKeyPressed({ key: data.key, isAutoRepeat: true });
117129 data.spy.wait();
118130 }
119131}