on 7f16e39 help sign in
unity8/tests/qmltests/Panel/Indicators/tst_CachedUnityMenuModel.qml
137 lines 5.3 kB history raw
1/*
2 * Copyright 2014 Canonical Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
17import QtQuick 2.0
18import QtTest 1.0
19import Unity.Test 0.1 as UT
20import QMenuModel 0.1
21import Unity.Indicators 0.1 as Indicators
22import "../../../../qml/Panel/Indicators"
24Item {
25 id: root
26 width: units.gu(40)
27 height: units.gu(70)
29 Component {
30 id: model
31 CachedUnityMenuModel {}
32 }
34 UT.UnityTestCase {
35 name: "CachedUnityMenuModel"
36 when: windowShown
38 function cleanup() {
39 doGC();
40 }
42 function doGC() {
43 // need to put some wait cycles here to get gc going properly.
44 wait(10);
45 gc();
46 wait(10);
47 }
49 function test_createDifferent() {
50 var cachedObject = model.createObject(null,
51 {
52 "busName": "com.canonical.test1",
53 "menuObjectPath": "/com/canonical/test1",
54 "actionsObjectPath": "/com/canonical/test1"
55 });
57 var cachedObject2 = model.createObject(null,
58 {
59 "busName": "com.canonical.test2",
60 "menuObjectPath": "/com/canonical/test2",
61 "actionsObjectPath": "/com/canonical/test2"
62 });
64 verify(cachedObject.model !== cachedObject2.model);
65 }
67 function test_createSame() {
68 var cachedObject = model.createObject(null,
69 {
70 "busName": "com.canonical.test3",
71 "menuObjectPath": "/com/canonical/test3",
72 "actionsObjectPath": "/com/canonical/test3"
73 });
75 var cachedObject2 = model.createObject(null,
76 {
77 "busName": "com.canonical.test3",
78 "menuObjectPath": "/com/canonical/test3",
79 "actionsObjectPath": "/com/canonical/test3"
80 });
82 verify(cachedObject.model === cachedObject2.model);
83 }
85 // Tests that changing cached model data does not change the model path of others
86 function test_lp1328646() {
87 var cachedObject = model.createObject(null,
88 {
89 "busName": "com.canonical.test4",
90 "menuObjectPath": "/com/canonical/test4",
91 "actionsObjectPath": "/com/canonical/test4"
92 });
94 var cachedObject2 = model.createObject(null,
95 {
96 "busName": "com.canonical.test4",
97 "menuObjectPath": "/com/canonical/test4",
98 "actionsObjectPath": "/com/canonical/test4"
99 });
101 cachedObject.menuObjectPath = "/com/canonical/test5";
102 compare(cachedObject.model.menuObjectPath, "/com/canonical/test5");
103 compare(cachedObject2.model.menuObjectPath, "/com/canonical/test4");
105 verify(cachedObject.model !== cachedObject2.model);
106 }
108 function createAndDestroy(test) {
109 var cachedObject = model.createObject(null,
110 {
111 "busName": "com.canonical."+test,
112 "menuObjectPath": "/com/canonical/"+test,
113 "actionsObjectPath": "/com/canonical/"+test
114 });
115 var cachedObject2 = model.createObject(null,
116 {
117 "busName": "com.canonical."+test,
118 "menuObjectPath": "/com/canonical/"+test,
119 "actionsObjectPath": "/com/canonical/"+test
120 });
121 cachedObject.destroy();
122 return cachedObject2;
123 }
125 function test_destroyAllDeletesModel() {
126 createAndDestroy("test6");
127 doGC();
128 compare(Indicators.UnityMenuModelCache.contains("/com/canonical/test6"), false);
129 }
131 function test_destroyPartialKeepsModel() {
132 var model = createAndDestroy("test7");
133 doGC();
134 compare(Indicators.UnityMenuModelCache.contains("/com/canonical/test7"), true);
135 }
136 }