on xenial help sign in
Added tests for model delete
commit0adb603b8aef6f88e38c6655c39334a44b5d6ea9 authorNick Dedekind <nicholas.dedekind@gmail.com> dateWed 20 Aug 2014, 10:16 (12 years ago) parent4edfe5e
4 files changed+73−32
plugins/Unity/Indicators/unitymenumodelcache.cpp+2−2 plugins/Unity/Indicators/unitymenumodelcache.h+1−1 tests/mocks/QMenuModel/unitymenumodel.cpp+4−4 tests/qmltests/Panel/Indicators/tst_CachedUnityMenuModel.qml+66−25
plugins/Unity/Indicators/unitymenumodelcache.cpp+2−2
@@ -51,7 +51,7 @@ UnityMenuModel* UnityMenuModelCache::model(const QByteArray& bus,
5151 return menuModel;
5252}
5353
54−bool UnityMenuModelCache::contains(UnityMenuModel* menuModel)
54+bool UnityMenuModelCache::contains(const QByteArray& path)
5555{
56− return !m_registry.keys(menuModel).isEmpty();
56+ return m_registry.contains(path);
5757}
plugins/Unity/Indicators/unitymenumodelcache.h+1−1
@@ -37,7 +37,7 @@ public:
3737 Q_INVOKABLE UnityMenuModel* model(const QByteArray& bus,
3838 const QByteArray& path,
3939 const QVariantMap& actions);
40− Q_INVOKABLE bool contains(UnityMenuModel* menuModel);
40+ Q_INVOKABLE bool contains(const QByteArray& path);
4141
4242private:
4343 QHash<QByteArray, UnityMenuModel*> m_registry;
tests/mocks/QMenuModel/unitymenumodel.cpp+4−4
@@ -37,6 +37,10 @@ UnityMenuModel::UnityMenuModel(QObject *parent)
3737{
3838}
3939
40+UnityMenuModel::~UnityMenuModel()
41+{
42+}
43+
4044QVariant UnityMenuModel::modelData() const
4145{
4246 return m_modelData;
@@ -82,10 +86,6 @@ void UnityMenuModel::removeRow(int row)
8286 endRemoveRows();
8387}
8488
85−UnityMenuModel::~UnityMenuModel()
86−{
87−}
88−
8989QByteArray UnityMenuModel::busName() const
9090{
9191 return m_busName;
tests/qmltests/Panel/Indicators/tst_CachedUnityMenuModel.qml+66−25
@@ -18,6 +18,7 @@ import QtQuick 2.0
1818import QtTest 1.0
1919import Unity.Test 0.1 as UT
2020import QMenuModel 0.1
21+import Unity.Indicators 0.1 as Indicators
2122import "../../../../qml/Panel/Indicators"
2223
2324Item {
@@ -34,37 +35,48 @@ Item {
3435 name: "CachedUnityMenuModel"
3536 when: windowShown
3637
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+
3749 function test_createDifferent() {
38− var cachedObject = model.createObject(root,
50+ var cachedObject = model.createObject(null,
3951 {
4052 "busName": "com.canonical.test1",
41− "menuObjectPath": "com/canonical/test1",
42− "actionsObjectPath": "com/canonical/test1/actions"
53+ "menuObjectPath": "/com/canonical/test1",
54+ "actionsObjectPath": "/com/canonical/test1"
4355 });
4456
45− var cachedObject2 = model.createObject(root,
57+ var cachedObject2 = model.createObject(null,
4658 {
4759 "busName": "com.canonical.test2",
48− "menuObjectPath": "com/canonical/test2",
49− "actionsObjectPath": "com/canonical/test2/actions"
60+ "menuObjectPath": "/com/canonical/test2",
61+ "actionsObjectPath": "/com/canonical/test2"
5062 });
5163
5264 verify(cachedObject.model !== cachedObject2.model);
5365 }
5466
5567 function test_createSame() {
56− var cachedObject = model.createObject(root,
68+ var cachedObject = model.createObject(null,
5769 {
58− "busName": "com.canonical.test1",
59− "menuObjectPath": "com/canonical/test1",
60− "actionsObjectPath": "com/canonical/test1/actions"
70+ "busName": "com.canonical.test3",
71+ "menuObjectPath": "/com/canonical/test3",
72+ "actionsObjectPath": "/com/canonical/test3"
6173 });
6274
63− var cachedObject2 = model.createObject(root,
75+ var cachedObject2 = model.createObject(null,
6476 {
65− "busName": "com.canonical.test1",
66− "menuObjectPath": "com/canonical/test1",
67− "actionsObjectPath": "com/canonical/test1/actions"
77+ "busName": "com.canonical.test3",
78+ "menuObjectPath": "/com/canonical/test3",
79+ "actionsObjectPath": "/com/canonical/test3"
6880 });
6981
7082 verify(cachedObject.model === cachedObject2.model);
@@ -72,25 +84,54 @@ Item {
7284
7385 // Tests that changing cached model data does not change the model path of others
7486 function test_lp1328646() {
75− var cachedObject = model.createObject(root,
87+ var cachedObject = model.createObject(null,
7688 {
77− "busName": "com.canonical.test1",
78− "menuObjectPath": "com/canonical/test1",
79− "actionsObjectPath": "com/canonical/test1/actions"
89+ "busName": "com.canonical.test4",
90+ "menuObjectPath": "/com/canonical/test4",
91+ "actionsObjectPath": "/com/canonical/test4"
8092 });
8193
82− var cachedObject2 = model.createObject(root,
94+ var cachedObject2 = model.createObject(null,
8395 {
84− "busName": "com.canonical.test1",
85− "menuObjectPath": "com/canonical/test1",
86− "actionsObjectPath": "com/canonical/test1/actions"
96+ "busName": "com.canonical.test4",
97+ "menuObjectPath": "/com/canonical/test4",
98+ "actionsObjectPath": "/com/canonical/test4"
8799 });
88100
89− cachedObject.menuObjectPath = "com/canonical/test2";
90− compare(cachedObject.model.menuObjectPath, "com/canonical/test2");
91− compare(cachedObject2.model.menuObjectPath, "com/canonical/test1");
101+ cachedObject.menuObjectPath = "/com/canonical/test5";
102+ compare(cachedObject.model.menuObjectPath, "/com/canonical/test5");
103+ compare(cachedObject2.model.menuObjectPath, "/com/canonical/test4");
92104
93105 verify(cachedObject.model !== cachedObject2.model);
94106 }
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_destroyAllDeletesModel() {
126+ createAndDestroy("test6");
127+ doGC();
128+ compare(Indicators.UnityMenuModelCache.contains("/com/canonical/test6"), false);
129+ }
130+
131+ function test_destroyPartialKeepsModel() {
132+ var model = createAndDestroy("test7");
133+ doGC();
134+ compare(Indicators.UnityMenuModelCache.contains("/com/canonical/test7"), true);
135+ }
95136 }
96137}