~mterry/+junk/u8.2

« back to all changes in this revision

Viewing changes to tests/qmltests/Panel/Indicators/tst_CachedUnityMenuModel.qml

  • Committer: Michael Terry
  • Date: 2014-11-17 14:56:04 UTC
  • mfrom: (1317.1.118 unity8)
  • Revision ID: michael.terry@canonical.com-20141117145604-96dn9p5nwkifq2f4
MergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
 */
16
 
 
17
 
import QtQuick 2.0
18
 
import QtTest 1.0
19
 
import Unity.Test 0.1 as UT
20
 
import QMenuModel 0.1
21
 
import Unity.Indicators 0.1 as Indicators
22
 
import "../../../../qml/Panel/Indicators"
23
 
 
24
 
Item {
25
 
    id: root
26
 
    width: units.gu(40)
27
 
    height: units.gu(70)
28
 
 
29
 
    Component {
30
 
        id: model
31
 
        CachedUnityMenuModel {}
32
 
    }
33
 
 
34
 
    UT.UnityTestCase {
35
 
        name: "CachedUnityMenuModel"
36
 
        when: windowShown
37
 
 
38
 
        function cleanup() {
39
 
            doGC();
40
 
        }
41
 
 
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
 
        }
48
 
 
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
 
                               });
56
 
 
57
 
            var cachedObject2 = model.createObject(null,
58
 
                               {
59
 
                                   "busName": "com.canonical.test2",
60
 
                                   "menuObjectPath": "/com/canonical/test2",
61
 
                                   "actionsObjectPath": "/com/canonical/test2"
62
 
                               });
63
 
 
64
 
            verify(cachedObject.model !== cachedObject2.model);
65
 
        }
66
 
 
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
 
                               });
74
 
 
75
 
            var cachedObject2 = model.createObject(null,
76
 
                               {
77
 
                                   "busName": "com.canonical.test3",
78
 
                                   "menuObjectPath": "/com/canonical/test3",
79
 
                                   "actionsObjectPath": "/com/canonical/test3"
80
 
                               });
81
 
 
82
 
            verify(cachedObject.model === cachedObject2.model);
83
 
        }
84
 
 
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
 
                               });
93
 
 
94
 
            var cachedObject2 = model.createObject(null,
95
 
                               {
96
 
                                   "busName": "com.canonical.test4",
97
 
                                   "menuObjectPath": "/com/canonical/test4",
98
 
                                   "actionsObjectPath": "/com/canonical/test4"
99
 
                               });
100
 
 
101
 
            cachedObject.menuObjectPath = "/com/canonical/test5";
102
 
            compare(cachedObject.model.menuObjectPath, "/com/canonical/test5");
103
 
            compare(cachedObject2.model.menuObjectPath, "/com/canonical/test4");
104
 
 
105
 
            verify(cachedObject.model !== cachedObject2.model);
106
 
        }
107
 
 
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
 
        }
124
 
 
125
 
        function test_destroyAllKeepsModel() {
126
 
            createAndDestroy("test6");
127
 
            doGC();
128
 
            compare(Indicators.UnityMenuModelCache.contains("/com/canonical/test6"), true);
129
 
        }
130
 
 
131
 
        function test_destroyPartialKeepsModel() {
132
 
            var model = createAndDestroy("test7");
133
 
            doGC();
134
 
            compare(Indicators.UnityMenuModelCache.contains("/com/canonical/test7"), true);
135
 
        }
136
 
    }
137
 
}