|
1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 #include <QGraphicsWidget> |
|
20 #include <QSqlDatabase> |
|
21 #include <HbInstance> |
|
22 #include <HbPanGesture> |
|
23 |
|
24 #include "t_hsdomainmodel.h" |
|
25 #include "hsdomainmodeldatastructures.h" |
|
26 #include "hswidgethost.h" |
|
27 #include "hswidgethostvisual.h" |
|
28 #include "hspage.h" |
|
29 #include "hsscene.h" |
|
30 #include "hswidgettoucharea.h" |
|
31 |
|
32 void TestHsDomainModel::testHsWidgetHostConstruction() |
|
33 { |
|
34 HsWidgetData data; |
|
35 data.pageId = 0; |
|
36 data.uri = "mockwidgetplugin"; |
|
37 HsWidgetHost *host = HsWidgetHost::createInstance(data); |
|
38 |
|
39 QVERIFY(host); |
|
40 QVERIFY(!host->mPage); |
|
41 QVERIFY(!host->page()); |
|
42 QVERIFY(!host->mWidget); |
|
43 QVERIFY(!host->mIsFinishing); |
|
44 QVERIFY(!host->mComponent); |
|
45 QCOMPARE(host->mDatabaseId, 1); |
|
46 QCOMPARE(host->databaseId(), 1); |
|
47 QVERIFY(host->mStateMachine); |
|
48 QVERIFY(!host->mStateMachine->isRunning()); |
|
49 |
|
50 delete host; |
|
51 } |
|
52 |
|
53 void TestHsDomainModel::testHsWidgetHostStateMachine() |
|
54 { |
|
55 HsWidgetData data; |
|
56 data.pageId = 0; |
|
57 data.uri = "mockwidgetplugin"; |
|
58 HsWidgetHost *host = HsWidgetHost::createInstance(data); |
|
59 QVERIFY(host); |
|
60 |
|
61 // State machine events. |
|
62 QSignalSpy event_startAndShowSpy(host, SIGNAL(event_startAndShow())); |
|
63 QSignalSpy event_startAndHideSpy(host, SIGNAL(event_startAndHide())); |
|
64 QSignalSpy event_unloadSpy(host, SIGNAL(event_unload())); |
|
65 QSignalSpy event_showSpy(host, SIGNAL(event_show())); |
|
66 QSignalSpy event_hideSpy(host, SIGNAL(event_hide())); |
|
67 QSignalSpy event_removeSpy(host, SIGNAL(event_remove())); |
|
68 QSignalSpy event_closeSpy(host, SIGNAL(event_close())); |
|
69 QSignalSpy event_finishedSpy(host, SIGNAL(event_finished())); |
|
70 QSignalSpy event_faultedSpy(host, SIGNAL(event_faulted())); |
|
71 |
|
72 QSignalSpy sm_finished(host->mStateMachine, SIGNAL(finished())); |
|
73 |
|
74 // Host events. |
|
75 QSignalSpy faultedSpy(host, SIGNAL(faulted())); |
|
76 QSignalSpy finishedSpy(host, SIGNAL(finished())); |
|
77 |
|
78 |
|
79 host->startWidget(); |
|
80 |
|
81 QCOMPARE(event_startAndShowSpy.count(), 1); |
|
82 event_startAndShowSpy.clear(); |
|
83 |
|
84 QCOMPARE(faultedSpy.count(), 0); |
|
85 QCOMPARE(finishedSpy.count(), 0); |
|
86 |
|
87 QVERIFY(!host->mIsFinishing); |
|
88 QVERIFY(host->mComponent); |
|
89 QVERIFY(host->mWidget); |
|
90 |
|
91 host->hideWidget(); |
|
92 |
|
93 QCOMPARE(event_hideSpy.count(), 1); |
|
94 event_hideSpy.clear(); |
|
95 |
|
96 host->showWidget(); |
|
97 |
|
98 QCOMPARE(event_showSpy.count(), 1); |
|
99 event_showSpy.clear(); |
|
100 |
|
101 host->remove(); // Calls deleteLater() |
|
102 |
|
103 QCOMPARE(event_removeSpy.count(), 1); |
|
104 event_removeSpy.clear(); |
|
105 |
|
106 QCOMPARE(sm_finished.count(), 1); |
|
107 sm_finished.clear(); |
|
108 } |
|
109 |
|
110 void TestHsDomainModel::testHsWidgetHostCloseAndRemove() |
|
111 { |
|
112 HsWidgetData widgetData; |
|
113 widgetData.pageId = 0; |
|
114 widgetData.uri = "mockwidgetplugin"; |
|
115 |
|
116 { |
|
117 HsWidgetHost *host = HsWidgetHost::createInstance(widgetData); |
|
118 QVERIFY(host); |
|
119 QSignalSpy event_removeSpy(host, SIGNAL(event_remove())); |
|
120 QSignalSpy event_closeSpy(host, SIGNAL(event_close())); |
|
121 |
|
122 host->close(); |
|
123 QCOMPARE(event_removeSpy.count(), 0); |
|
124 QCOMPARE(event_closeSpy.count(), 0); |
|
125 } |
|
126 |
|
127 { |
|
128 HsWidgetHost *host = HsWidgetHost::createInstance(widgetData); |
|
129 QVERIFY(host); |
|
130 QSignalSpy event_removeSpy(host, SIGNAL(event_remove())); |
|
131 QSignalSpy event_closeSpy(host, SIGNAL(event_close())); |
|
132 |
|
133 host->remove(); |
|
134 QCOMPARE(event_removeSpy.count(), 0); |
|
135 QCOMPARE(event_closeSpy.count(), 0); |
|
136 } |
|
137 |
|
138 { |
|
139 HsWidgetHost *host = HsWidgetHost::createInstance(widgetData); |
|
140 QVERIFY(host); |
|
141 QSignalSpy event_removeSpy(host, SIGNAL(event_remove())); |
|
142 QSignalSpy event_closeSpy(host, SIGNAL(event_close())); |
|
143 |
|
144 host->startWidget(false); |
|
145 host->close(); |
|
146 QCOMPARE(event_removeSpy.count(), 0); |
|
147 QCOMPARE(event_closeSpy.count(), 1); |
|
148 } |
|
149 |
|
150 { |
|
151 HsWidgetHost *host = HsWidgetHost::createInstance(widgetData); |
|
152 QVERIFY(host); |
|
153 QSignalSpy event_removeSpy(host, SIGNAL(event_remove())); |
|
154 QSignalSpy event_closeSpy(host, SIGNAL(event_close())); |
|
155 |
|
156 host->startWidget(); |
|
157 host->startWidget(); |
|
158 host->remove(); |
|
159 QCOMPARE(event_removeSpy.count(), 1); |
|
160 QCOMPARE(event_closeSpy.count(), 0); |
|
161 } |
|
162 } |
|
163 |
|
164 void TestHsDomainModel::testHsWidgetHostPage() |
|
165 { |
|
166 HsWidgetData widgetData; |
|
167 widgetData.pageId = 0; |
|
168 widgetData.uri = "mockwidgetplugin"; |
|
169 HsWidgetHost *host = HsWidgetHost::createInstance(widgetData); |
|
170 QVERIFY(host); |
|
171 |
|
172 QVERIFY(!host->page()); |
|
173 |
|
174 HsPageData pageData; |
|
175 pageData.indexPosition = 0; |
|
176 HsPage *page = HsPage::createInstance(pageData); |
|
177 QVERIFY(page); |
|
178 |
|
179 QVERIFY(host->setPage(page)); |
|
180 QVERIFY(host->mPage == page); |
|
181 QVERIFY(host->page() == page); |
|
182 |
|
183 QVERIFY(host->setPage(0)); |
|
184 QVERIFY(!host->mPage); |
|
185 QVERIFY(!host->page()); |
|
186 |
|
187 host->mDatabaseId = -1; |
|
188 QVERIFY(!host->setPage(page)); |
|
189 QVERIFY(!host->mPage); |
|
190 QVERIFY(!host->page()); |
|
191 |
|
192 delete page; |
|
193 |
|
194 delete host; |
|
195 } |
|
196 |
|
197 void TestHsDomainModel::testHsWidgetHostEffects() |
|
198 { |
|
199 HsWidgetHost *host = new HsWidgetHost(-1); |
|
200 host->startDragEffect(); |
|
201 host->startDropEffect(); |
|
202 } |
|
203 |
|
204 void TestHsDomainModel::testHsWidgetHostShowAndHideActions() |
|
205 { |
|
206 HsWidgetHost *host = new HsWidgetHost(-1); |
|
207 host->action_show(); |
|
208 host->action_hide(); |
|
209 host->mIsFinishing = true; |
|
210 host->action_show(); |
|
211 host->action_hide(); |
|
212 delete host; |
|
213 } |
|
214 |
|
215 void TestHsDomainModel::testHsWidgetHostPresentation() |
|
216 { |
|
217 HsWidgetData widgetData; |
|
218 widgetData.pageId = 0; |
|
219 widgetData.uri = "mockwidgetplugin"; |
|
220 HsWidgetHost *host = HsWidgetHost::createInstance(widgetData); |
|
221 QVERIFY(host); |
|
222 host->startWidget(); |
|
223 |
|
224 HsWidgetPresentationData data; |
|
225 data.orientation = Qt::Vertical; |
|
226 data.x = data.y = data.zValue = 0; |
|
227 |
|
228 QVERIFY(host->savePresentation(data)); |
|
229 QVERIFY(host->getPresentation(data)); |
|
230 |
|
231 host->removePresentation(Qt::Vertical); |
|
232 |
|
233 QVERIFY(!host->getPresentation(data)); |
|
234 |
|
235 host->remove(); |
|
236 } |
|
237 |
|
238 void TestHsDomainModel::testHsWidgetHostOnError() |
|
239 { |
|
240 HsWidgetHost *host = new HsWidgetHost(-1); |
|
241 QSignalSpy event_faultedSpy(host, SIGNAL(event_faulted())); |
|
242 host->onError(); |
|
243 QCOMPARE(event_faultedSpy.count(), 1); |
|
244 QVERIFY(host->mIsFinishing); |
|
245 delete host; |
|
246 } |
|
247 |
|
248 void TestHsDomainModel::testHsWidgetHostOnSetPreferences() |
|
249 { |
|
250 HsWidgetData widgetData; |
|
251 widgetData.pageId = 0; |
|
252 widgetData.uri = "mockwidgetplugin"; |
|
253 HsWidgetHost *host = HsWidgetHost::createInstance(widgetData); |
|
254 QVERIFY(host); |
|
255 host->startWidget(); |
|
256 host->onSetPreferences(QStringList()); |
|
257 host->onSetPreferences(QStringList() << "mypref"); |
|
258 host->remove(); |
|
259 } |
|
260 |
|
261 void TestHsDomainModel::testHsWidgetHostShape() |
|
262 { |
|
263 HsWidgetData widgetData; |
|
264 widgetData.pageId = 0; |
|
265 widgetData.uri = "mockwidgetplugin"; |
|
266 HsWidgetHost *host = HsWidgetHost::createInstance(widgetData); |
|
267 QVERIFY(host); |
|
268 host->startWidget(); |
|
269 host->remove(); |
|
270 } |
|
271 |
|
272 void TestHsDomainModel::testHsWidgetHostShapeInvalidValues() |
|
273 { |
|
274 HsWidgetData widgetData; |
|
275 widgetData.pageId = 0; |
|
276 widgetData.uri = "mockwidgetplugincheater"; |
|
277 HsWidgetHost *host = HsWidgetHost::createInstance(widgetData); |
|
278 QVERIFY(host); |
|
279 host->startWidget(); |
|
280 host->remove(); |
|
281 } |
|
282 |
|
283 void TestHsDomainModel::testHsWidgetHostGestureEvent() |
|
284 { |
|
285 HsWidgetHost *host = new HsWidgetHost(-1); |
|
286 QList<QGesture*> gestureList; |
|
287 |
|
288 // test pan |
|
289 HbPanGesture *panGesture = new HbPanGesture(); |
|
290 gestureList << panGesture; |
|
291 QGestureEvent *gestureEvent = new QGestureEvent(gestureList); |
|
292 Qt::GestureState state = panGesture->state(); |
|
293 host->visual()->gestureEvent(gestureEvent); |
|
294 |
|
295 delete panGesture; |
|
296 delete host; |
|
297 } |
|
298 |