on xenial help sign in
Better visibility tests for indicators
commit118426654dd9ca3c5e007ac1d3619d581ce10f62 authorNick Dedekind <nicholas.dedekind@gmail.com> dateMon 13 Jan 2014, 16:25 (13 years ago) parentea717a0
6 files changed+68−18
tests/mocks/Unity/Indicators/IndicatorsModel.qml+2−5 tests/mocks/Unity/Indicators/qml/fake_menu_widget2.qml+1−3 tests/mocks/Unity/Indicators/qml/fake_menu_widget3.qml+1−1 tests/qmltests/Panel/tst_IndicatorRow.qml+2−1 tests/qmltests/Panel/tst_Indicators.qml+60−8 tests/qmltests/Panel/tst_Panel.qml+2
tests/mocks/Unity/Indicators/IndicatorsModel.qml+2−5
@@ -21,12 +21,9 @@ ListModel {
2121
2222 property var indicatorData : undefined
2323
24− function load() {}
24+ function load() {
25+ clear();
2526
26− // Need to do this dynamically.
27− // Apparently ListModels dont order roles visually when using ListElement
28− // which throws off the filter for non-visible indicators.
29− Component.onCompleted: {
3027 append({ "identifier": "indicator-fake1",
3128 "position": 0,
3229 "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget1.qml",
tests/mocks/Unity/Indicators/qml/fake_menu_widget2.qml+1−3
@@ -19,7 +19,5 @@ import QtQuick 2.0
1919Rectangle {
2020 width: 40
2121 height: 40
22− color : "yellow"
23−
24− enabled: false
22+ color : "blue"
2523}
tests/mocks/Unity/Indicators/qml/fake_menu_widget3.qml+1−1
@@ -19,5 +19,5 @@ import QtQuick 2.0
1919Rectangle {
2020 width: 40
2121 height: 40
22− color : "blue"
22+ color : "yellow"
2323}
tests/qmltests/Panel/tst_IndicatorRow.qml+2−1
@@ -32,6 +32,8 @@ Item {
3232
3333 function init_test()
3434 {
35+ indicatorModel.load();
36+
3537 indicatorRow.state = "initial";
3638 indicatorRow.currentItem = null;
3739 indicatorRow.unitProgress = 0.0;
@@ -53,7 +55,6 @@ Item {
5355
5456 Indicators.IndicatorsModel {
5557 id: indicatorModel
56− Component.onCompleted: load()
5758 }
5859
5960 UT.UnityTestCase {
tests/qmltests/Panel/tst_Indicators.qml+60−8
@@ -83,6 +83,8 @@ Item {
8383 when: windowShown
8484
8585 function init() {
86+ indicators.initialise();
87+
8688 indicators.hide();
8789 tryCompare(indicators.hideAnimation, "running", false);
8890 tryCompare(indicators, "state", "initial");
@@ -161,21 +163,71 @@ Item {
161163 compare(indicators.fullyOpened, true);
162164 }
163165
166+ function init_invisible_indicator(identifier) {
167+ tryCompareFunction(function() { return findChild(indicators, identifier+"-widget") !== undefined }, true);
168+ var item = findChild(indicators, identifier+"-widget");
169+
170+ item.enabled = false;
171+ }
172+
164173 function test_row_visible_menuContent_visible_data() { return [
165− {tag: "visible", index: 0, name: "indicator-fake1", visible: true },
166− {tag: "invisible", index: 1, name: "indicator-fake2", visible: false }]
174+ {tag: "first", visible: [false, true, true, true, true] },
175+ {tag: "adjacent", visible: [true, false, false, true, true] },
176+ {tag: "bounds", visible: [false, true, true, true, false] },
177+ {tag: "disjoint", visible: [true, false, true, false, true] },
178+ {tag: "last", visible: [true, true, true, true, false] }];
167179 }
168180
169181 function test_row_visible_menuContent_visible(data) {
182+
183+ indicators.show();
184+
185+ var indicatorTabs = findChild(indicators, "tabs");
186+ var rowRepeater = findChild(indicators, "rowRepeater")
187+
188+
189+ for (var i = 0; i< data.visible.length; i++) {
190+ if (data.visible[i] === false)
191+ init_invisible_indicator("indicator-fake" + (i + 1));
192+ }
193+
194+ for (i = 0; i < data.visible.length; i++) {
195+ var shouldBeVisible = data.visible[i];
196+
197+ // check item visibility
198+ var indicatorItem = rowRepeater.itemAt(i);
199+ tryCompare(indicatorItem, "visible", shouldBeVisible);
200+ // check tab visibility
201+ tryCompareFunction(function() { return findChild(indicatorTabs, "indicator-fake" + (i + 1)) !== undefined }, shouldBeVisible);
202+ }
203+ }
204+
205+ function test_indicator_visible_correct_tabs_data() { return [
206+ {tag: "current-first", currentIndex: 0, visible: [false, true, true, true, true], expected: 1 },
207+ {tag: "current-last", currentIndex: 4, visible: [true, true, true, true, false], expected: 3 },
208+ {tag: "after", currentIndex: 0, visible: [true, false, true, true, true], expected: 0 },
209+ {tag: "before", currentIndex: 1, visible: [false, true, true, true, true], expected: 1 }];
210+ }
211+
212+ function test_indicator_visible_correct_tabs(data) {
213+
170214 var indicatorTabs = findChild(indicators, "tabs");
171− var rowRepeater = findChild(indicators, "rowRepeater");
215+ var indicatorRow = findChild(indicators, "indicatorRow");
216+
217+ indicators.show();
218+ indicatorRow.setCurrentItem(data.currentIndex);
219+ tryCompare(indicators, "fullyOpened", true);
220+
221+ for (var i = 0; i< data.visible.length; i++) {
222+ if (data.visible[i] === false)
223+ init_invisible_indicator("indicator-fake" + (i + 1));
224+ }
172225
173− var indicatorItem = rowRepeater.itemAt(data.index);
174− tryCompareFunction(function() { return indicatorItem.width > 0}, true);
175− tryCompare(indicatorItem, "visible", data.visible);
226+ // check for current selected item
227+ tryCompare(indicatorRow, "currentItemIndex", data.expected);
228+ // check for current selected tab
229+ tryCompareFunction(function() { return findChild(indicatorTabs, "indicator-fake" + (data.expected + 1)) === indicatorTabs.selectedTab }, true);
176230
177− var indicatorTab = findChild(indicatorTabs, data.name)
178− tryCompareFunction(function() { return indicatorTab !== undefined }, data.visible);
179231 }
180232 }
181233}
tests/qmltests/Panel/tst_Panel.qml+2
@@ -56,6 +56,8 @@ Item {
5656 }
5757
5858 function init() {
59+ panel.indicators.initialise();
60+
5961 searchClicked = false;
6062 panel.indicators.hide();
6163 tryCompare(panel.indicators.hideAnimation, "running", false);