on 16fa310 help sign in
unity8/tests/plugins/Dash/organicgridtest.cpp
530 lines 22 kB history raw
1/*
2 * Copyright (C) 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 */
17#include <QQuickView>
18#include <QtTestGui>
19#include <QDebug>
20#include <QGuiApplication>
21#include <QQuickView>
22#include <QtQml/qqml.h>
23#include <QStringListModel>
24#include <QQmlContext>
25#include <QQmlEngine>
26#include <private/qquickitem_p.h>
28#include "organicgrid.h"
30class DummyModel : public QAbstractListModel {
31public:
32 DummyModel() : m_count(0) {}
34 int rowCount(const QModelIndex & /*parent*/) const override
35 {
36 return m_count;
37 }
39 QVariant data(const QModelIndex & /*index*/, int /*role*/) const override
40 {
41 return QVariant();
42 }
44 void setCount(int count)
45 {
46 beginResetModel();
47 m_count = count;
48 endResetModel();
49 }
51 void addItem()
52 {
53 beginInsertRows(QModelIndex(), m_count, m_count);
54 m_count++;
55 endInsertRows();
56 }
58 void removeLast()
59 {
60 beginRemoveRows(QModelIndex(), m_count - 1, m_count - 1);
61 m_count--;
62 endRemoveRows();
63 }
65private:
66 int m_count;
67};
69class OrganicGridTest : public QObject
71 Q_OBJECT
73private:
74 void verifyItem(const QQuickItem *item, int modelIndex, qreal x, qreal y, bool visible)
75 {
76 QTRY_COMPARE(item->x(), x);
77 QTRY_COMPARE(item->y(), y);
78 QTRY_COMPARE(QQuickItemPrivate::get(item)->culled, !visible);
79 const int inModuleIndex = modelIndex % 6;
80 if (inModuleIndex == 0 || inModuleIndex == 1 || inModuleIndex == 3 || inModuleIndex == 5) {
81 QTRY_COMPARE(item->height(), grid->smallDelegateSize().height());
82 QTRY_COMPARE(item->width(), grid->smallDelegateSize().width());
83 } else {
84 QTRY_COMPARE(item->height(), grid->bigDelegateSize().height());
85 QTRY_COMPARE(item->width(), grid->bigDelegateSize().width());
86 }
87 }
89 void checkInitialPositions()
90 {
91 QTRY_COMPARE(grid->m_visibleItems.count(), 18);
92 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
93 QTRY_COMPARE(grid->m_numberOfModulesPerRow, 1);
94 verifyItem(grid->m_visibleItems[ 0], 0, 0, 0, true);
95 verifyItem(grid->m_visibleItems[ 1], 1, 100, 0, true);
96 verifyItem(grid->m_visibleItems[ 2], 2, 0, 100, true);
97 verifyItem(grid->m_visibleItems[ 3], 3, 190, 190, true);
98 verifyItem(grid->m_visibleItems[ 4], 4, 200, 0, true);
99 verifyItem(grid->m_visibleItems[ 5], 5, 290, 190, true);
100 verifyItem(grid->m_visibleItems[ 6], 6, 0, 290, true);
101 verifyItem(grid->m_visibleItems[ 7], 7, 100, 290, true);
102 verifyItem(grid->m_visibleItems[ 8], 8, 0, 390, true);
103 verifyItem(grid->m_visibleItems[ 9], 9, 190, 480, false);
104 verifyItem(grid->m_visibleItems[10], 10, 200, 290, true);
105 verifyItem(grid->m_visibleItems[11], 11, 290, 480, false);
106 verifyItem(grid->m_visibleItems[12], 12, 0, 580, false);
107 verifyItem(grid->m_visibleItems[13], 13, 100, 580, false);
108 verifyItem(grid->m_visibleItems[14], 14, 0, 680, false);
109 verifyItem(grid->m_visibleItems[15], 15, 190, 770, false);
110 verifyItem(grid->m_visibleItems[16], 16, 200, 580, false);
111 verifyItem(grid->m_visibleItems[17], 17, 290, 770, false);
112 checkImplicitHeight(1150);
113 }
115 void checkImplicitHeight(qreal implicitHeight)
116 {
117 QTRY_COMPARE(grid->m_implicitHeightDirty, false);
118 QCOMPARE(grid->implicitHeight(), implicitHeight);
119 }
121private Q_SLOTS:
122 void init()
123 {
124 view = new QQuickView();
125 view->setResizeMode(QQuickView::SizeRootObjectToView);
127 model = new DummyModel();
128 model->setCount(21);
130 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/organicgridtest.qml"));
132 view->show();
133 QTest::qWaitForWindowExposed(view);
134 view->resize(470, 400);
136 grid = static_cast<OrganicGrid*>(view->rootObject()->findChild<QObject*>("grid"));
137 grid->setModel(model);
138 QTRY_COMPARE(grid->width(), 470.);
140 checkInitialPositions();
141 }
143 void cleanup()
144 {
145 delete view;
146 delete model;
147 }
149 void testInitialPosition()
150 {
151 }
153 void testWidthResize()
154 {
155 view->resize(770, 400);
156 QTRY_COMPARE(grid->width(), 770.);
158 QTRY_COMPARE(grid->m_visibleItems.count(), 21);
159 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
160 QTRY_COMPARE(grid->m_numberOfModulesPerRow, 2);
161 verifyItem(grid->m_visibleItems[ 0], 0, 0, 0, true);
162 verifyItem(grid->m_visibleItems[ 1], 1, 100, 0, true);
163 verifyItem(grid->m_visibleItems[ 2], 2, 0, 100, true);
164 verifyItem(grid->m_visibleItems[ 3], 3, 190, 190, true);
165 verifyItem(grid->m_visibleItems[ 4], 4, 200, 0, true);
166 verifyItem(grid->m_visibleItems[ 5], 5, 290, 190, true);
168 verifyItem(grid->m_visibleItems[ 6], 6, 390, 0, true);
169 verifyItem(grid->m_visibleItems[ 7], 7, 490, 0, true);
170 verifyItem(grid->m_visibleItems[ 8], 8, 390, 100, true);
171 verifyItem(grid->m_visibleItems[ 9], 9, 580, 190, true);
172 verifyItem(grid->m_visibleItems[10], 10, 590, 0, true);
173 verifyItem(grid->m_visibleItems[11], 11, 680, 190, true);
175 verifyItem(grid->m_visibleItems[12], 12, 0, 290, true);
176 verifyItem(grid->m_visibleItems[13], 13, 100, 290, true);
177 verifyItem(grid->m_visibleItems[14], 14, 0, 390, true);
178 verifyItem(grid->m_visibleItems[15], 15, 190, 480, false);
179 verifyItem(grid->m_visibleItems[16], 16, 200, 290, true);
180 verifyItem(grid->m_visibleItems[17], 17, 290, 480, false);
182 verifyItem(grid->m_visibleItems[18], 18, 390, 290, true);
183 verifyItem(grid->m_visibleItems[19], 19, 490, 290, true);
184 verifyItem(grid->m_visibleItems[20], 20, 390, 390, true);
186 checkImplicitHeight(570);
188 view->resize(769, 400);
190 // This is exactly the same block as the first again
191 checkInitialPositions();
192 }
194 void testColumnSpacing()
195 {
196 grid->setColumnSpacing(11);
198 QTRY_COMPARE(grid->m_needsRelayout, false);
199 QTRY_COMPARE(grid->m_visibleItems.count(), 18);
200 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
201 QTRY_COMPARE(grid->m_numberOfModulesPerRow, 1);
202 verifyItem(grid->m_visibleItems[ 0], 0, 0, 0, true);
203 verifyItem(grid->m_visibleItems[ 1], 1, 101, 0, true);
204 verifyItem(grid->m_visibleItems[ 2], 2, 0, 100, true);
205 verifyItem(grid->m_visibleItems[ 3], 3, 191, 190, true);
206 verifyItem(grid->m_visibleItems[ 4], 4, 202, 0, true);
207 verifyItem(grid->m_visibleItems[ 5], 5, 292, 190, true);
208 verifyItem(grid->m_visibleItems[ 6], 6, 0, 290, true);
209 verifyItem(grid->m_visibleItems[ 7], 7, 101, 290, true);
210 verifyItem(grid->m_visibleItems[ 8], 8, 0, 390, true);
211 verifyItem(grid->m_visibleItems[ 9], 9, 191, 480, false);
212 verifyItem(grid->m_visibleItems[10], 10, 202, 290, true);
213 verifyItem(grid->m_visibleItems[11], 11, 292, 480, false);
214 verifyItem(grid->m_visibleItems[12], 12, 0, 580, false);
215 verifyItem(grid->m_visibleItems[13], 13, 101, 580, false);
216 verifyItem(grid->m_visibleItems[14], 14, 0, 680, false);
217 verifyItem(grid->m_visibleItems[15], 15, 191, 770, false);
218 verifyItem(grid->m_visibleItems[16], 16, 202, 580, false);
219 verifyItem(grid->m_visibleItems[17], 17, 292, 770, false);
220 checkImplicitHeight(1150);
222 grid->setColumnSpacing(10);
223 QTRY_COMPARE(grid->m_needsRelayout, false);
225 // This is exactly the same block as the first again
226 checkInitialPositions();
227 }
229 void testRowSpacing()
230 {
231 grid->setRowSpacing(11);
233 QTRY_COMPARE(grid->m_needsRelayout, false);
234 QTRY_COMPARE(grid->m_visibleItems.count(), 18);
235 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
236 QTRY_COMPARE(grid->m_numberOfModulesPerRow, 1);
237 verifyItem(grid->m_visibleItems[ 0], 0, 0, 0, true);
238 verifyItem(grid->m_visibleItems[ 1], 1, 100, 0, true);
239 verifyItem(grid->m_visibleItems[ 2], 2, 0, 101, true);
240 verifyItem(grid->m_visibleItems[ 3], 3, 190, 191, true);
241 verifyItem(grid->m_visibleItems[ 4], 4, 200, 0, true);
242 verifyItem(grid->m_visibleItems[ 5], 5, 290, 191, true);
243 verifyItem(grid->m_visibleItems[ 6], 6, 0, 292, true);
244 verifyItem(grid->m_visibleItems[ 7], 7, 100, 292, true);
245 verifyItem(grid->m_visibleItems[ 8], 8, 0, 393, true);
246 verifyItem(grid->m_visibleItems[ 9], 9, 190, 483, false);
247 verifyItem(grid->m_visibleItems[10], 10, 200, 292, true);
248 verifyItem(grid->m_visibleItems[11], 11, 290, 483, false);
249 verifyItem(grid->m_visibleItems[12], 12, 0, 584, false);
250 verifyItem(grid->m_visibleItems[13], 13, 100, 584, false);
251 verifyItem(grid->m_visibleItems[14], 14, 0, 685, false);
252 verifyItem(grid->m_visibleItems[15], 15, 190, 775, false);
253 verifyItem(grid->m_visibleItems[16], 16, 200, 584, false);
254 verifyItem(grid->m_visibleItems[17], 17, 290, 775, false);
255 checkImplicitHeight(1157);
257 grid->setRowSpacing(10);
258 QTRY_COMPARE(grid->m_needsRelayout, false);
260 // This is exactly the same block as the first again
261 checkInitialPositions();
262 }
264 void testDelegateSizeChange()
265 {
266 grid->setSmallDelegateSize(QSizeF(30, 30));
267 grid->setBigDelegateSize(QSizeF(50, 50));
268 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
269 QTRY_COMPARE(grid->m_visibleItems.count(), 21);
270 verifyItem(grid->m_visibleItems[ 0], 0, 0, 0, true);
271 verifyItem(grid->m_visibleItems[ 1], 1, 40, 0, true);
272 verifyItem(grid->m_visibleItems[ 2], 2, 0, 40, true);
273 verifyItem(grid->m_visibleItems[ 3], 3, 60, 60, true);
274 verifyItem(grid->m_visibleItems[ 4], 4, 80, 0, true);
275 verifyItem(grid->m_visibleItems[ 5], 5, 100, 60, true);
277 verifyItem(grid->m_visibleItems[ 6], 6, 140, 0, true);
278 verifyItem(grid->m_visibleItems[ 7], 7, 180, 0, true);
279 verifyItem(grid->m_visibleItems[ 8], 8, 140, 40, true);
280 verifyItem(grid->m_visibleItems[ 9], 9, 200, 60, true);
281 verifyItem(grid->m_visibleItems[10], 10, 220, 0, true);
282 verifyItem(grid->m_visibleItems[11], 11, 240, 60, true);
284 verifyItem(grid->m_visibleItems[12], 12, 280, 0, true);
285 verifyItem(grid->m_visibleItems[13], 13, 320, 0, true);
286 verifyItem(grid->m_visibleItems[14], 14, 280, 40, true);
287 verifyItem(grid->m_visibleItems[15], 15, 340, 60, true);
288 verifyItem(grid->m_visibleItems[16], 16, 360, 0, true);
289 verifyItem(grid->m_visibleItems[17], 17, 380, 60, true);
291 verifyItem(grid->m_visibleItems[18], 18, 0, 100, true);
292 verifyItem(grid->m_visibleItems[19], 19, 40, 100, true);
293 verifyItem(grid->m_visibleItems[20], 20, 0, 140, true);
294 checkImplicitHeight(190);
296 grid->setSmallDelegateSize(QSizeF(90, 90));
297 grid->setBigDelegateSize(QSizeF(180, 180));
299 // This is exactly the same block as the first again
300 checkInitialPositions();
301 }
303 void testChangeModel()
304 {
305 DummyModel *model2 = new DummyModel();
306 model2->setCount(6);
307 grid->setModel(model2);
308 delete model;
309 model = model2;
311 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
312 QTRY_COMPARE(grid->m_visibleItems.count(), 6);
313 verifyItem(grid->m_visibleItems[ 0], 0, 0, 0, true);
314 verifyItem(grid->m_visibleItems[ 1], 1, 100, 0, true);
315 verifyItem(grid->m_visibleItems[ 2], 2, 0, 100, true);
316 verifyItem(grid->m_visibleItems[ 3], 3, 190, 190, true);
317 verifyItem(grid->m_visibleItems[ 4], 4, 200, 0, true);
318 verifyItem(grid->m_visibleItems[ 5], 5, 290, 190, true);
319 checkImplicitHeight(280);
320 }
322 void testModelReset()
323 {
324 model->setCount(6);
326 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
327 QTRY_COMPARE(grid->m_visibleItems.count(), 6);
328 verifyItem(grid->m_visibleItems[ 0], 0, 0, 0, true);
329 verifyItem(grid->m_visibleItems[ 1], 1, 100, 0, true);
330 verifyItem(grid->m_visibleItems[ 2], 2, 0, 100, true);
331 verifyItem(grid->m_visibleItems[ 3], 3, 190, 190, true);
332 verifyItem(grid->m_visibleItems[ 4], 4, 200, 0, true);
333 verifyItem(grid->m_visibleItems[ 5], 5, 290, 190, true);
334 checkImplicitHeight(280);
335 }
337 void testModelRemoveLastNonVisible()
338 {
339 model->removeLast();
341 // This is the same than checkInitialPositions but
342 // with a different implicitHeight since there's an item less
343 // in the model
344 QTRY_COMPARE(grid->m_visibleItems.count(), 18);
345 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
346 QTRY_COMPARE(grid->m_numberOfModulesPerRow, 1);
347 verifyItem(grid->m_visibleItems[ 0], 0, 0, 0, true);
348 verifyItem(grid->m_visibleItems[ 1], 1, 100, 0, true);
349 verifyItem(grid->m_visibleItems[ 2], 2, 0, 100, true);
350 verifyItem(grid->m_visibleItems[ 3], 3, 190, 190, true);
351 verifyItem(grid->m_visibleItems[ 4], 4, 200, 0, true);
352 verifyItem(grid->m_visibleItems[ 5], 5, 290, 190, true);
353 verifyItem(grid->m_visibleItems[ 6], 6, 0, 290, true);
354 verifyItem(grid->m_visibleItems[ 7], 7, 100, 290, true);
355 verifyItem(grid->m_visibleItems[ 8], 8, 0, 390, true);
356 verifyItem(grid->m_visibleItems[ 9], 9, 190, 480, false);
357 verifyItem(grid->m_visibleItems[10], 10, 200, 290, true);
358 verifyItem(grid->m_visibleItems[11], 11, 290, 480, false);
359 verifyItem(grid->m_visibleItems[12], 12, 0, 580, false);
360 verifyItem(grid->m_visibleItems[13], 13, 100, 580, false);
361 verifyItem(grid->m_visibleItems[14], 14, 0, 680, false);
362 verifyItem(grid->m_visibleItems[15], 15, 190, 770, false);
363 verifyItem(grid->m_visibleItems[16], 16, 200, 580, false);
364 verifyItem(grid->m_visibleItems[17], 17, 290, 770, false);
365 checkImplicitHeight(960);
367 model->removeLast();
369 // Removing this one didn't cause any change since it only
370 // was the second item of a non visible 6-module
371 QTRY_COMPARE(grid->m_visibleItems.count(), 18);
372 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
373 QTRY_COMPARE(grid->m_numberOfModulesPerRow, 1);
374 verifyItem(grid->m_visibleItems[ 0], 0, 0, 0, true);
375 verifyItem(grid->m_visibleItems[ 1], 1, 100, 0, true);
376 verifyItem(grid->m_visibleItems[ 2], 2, 0, 100, true);
377 verifyItem(grid->m_visibleItems[ 3], 3, 190, 190, true);
378 verifyItem(grid->m_visibleItems[ 4], 4, 200, 0, true);
379 verifyItem(grid->m_visibleItems[ 5], 5, 290, 190, true);
380 verifyItem(grid->m_visibleItems[ 6], 6, 0, 290, true);
381 verifyItem(grid->m_visibleItems[ 7], 7, 100, 290, true);
382 verifyItem(grid->m_visibleItems[ 8], 8, 0, 390, true);
383 verifyItem(grid->m_visibleItems[ 9], 9, 190, 480, false);
384 verifyItem(grid->m_visibleItems[10], 10, 200, 290, true);
385 verifyItem(grid->m_visibleItems[11], 11, 290, 480, false);
386 verifyItem(grid->m_visibleItems[12], 12, 0, 580, false);
387 verifyItem(grid->m_visibleItems[13], 13, 100, 580, false);
388 verifyItem(grid->m_visibleItems[14], 14, 0, 680, false);
389 verifyItem(grid->m_visibleItems[15], 15, 190, 770, false);
390 verifyItem(grid->m_visibleItems[16], 16, 200, 580, false);
391 verifyItem(grid->m_visibleItems[17], 17, 290, 770, false);
392 checkImplicitHeight(960);
394 model->removeLast();
396 // Removing this one removes the first of a 6-module so
397 // it does change height again
398 QTRY_COMPARE(grid->m_visibleItems.count(), 18);
399 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
400 QTRY_COMPARE(grid->m_numberOfModulesPerRow, 1);
401 verifyItem(grid->m_visibleItems[ 0], 0, 0, 0, true);
402 verifyItem(grid->m_visibleItems[ 1], 1, 100, 0, true);
403 verifyItem(grid->m_visibleItems[ 2], 2, 0, 100, true);
404 verifyItem(grid->m_visibleItems[ 3], 3, 190, 190, true);
405 verifyItem(grid->m_visibleItems[ 4], 4, 200, 0, true);
406 verifyItem(grid->m_visibleItems[ 5], 5, 290, 190, true);
407 verifyItem(grid->m_visibleItems[ 6], 6, 0, 290, true);
408 verifyItem(grid->m_visibleItems[ 7], 7, 100, 290, true);
409 verifyItem(grid->m_visibleItems[ 8], 8, 0, 390, true);
410 verifyItem(grid->m_visibleItems[ 9], 9, 190, 480, false);
411 verifyItem(grid->m_visibleItems[10], 10, 200, 290, true);
412 verifyItem(grid->m_visibleItems[11], 11, 290, 480, false);
413 verifyItem(grid->m_visibleItems[12], 12, 0, 580, false);
414 verifyItem(grid->m_visibleItems[13], 13, 100, 580, false);
415 verifyItem(grid->m_visibleItems[14], 14, 0, 680, false);
416 verifyItem(grid->m_visibleItems[15], 15, 190, 770, false);
417 verifyItem(grid->m_visibleItems[16], 16, 200, 580, false);
418 verifyItem(grid->m_visibleItems[17], 17, 290, 770, false);
419 checkImplicitHeight(860);
421 }
423 void testModelAppendRemoveLast()
424 {
425 DummyModel *model2 = new DummyModel();
426 model2->setCount(6);
427 grid->setModel(model2);
428 delete model;
429 model = model2;
431 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
432 QTRY_COMPARE(grid->m_visibleItems.count(), 6);
433 verifyItem(grid->m_visibleItems[0], 0, 0, 0, true);
434 verifyItem(grid->m_visibleItems[1], 1, 100, 0, true);
435 verifyItem(grid->m_visibleItems[2], 2, 0, 100, true);
436 verifyItem(grid->m_visibleItems[3], 3, 190, 190, true);
437 verifyItem(grid->m_visibleItems[4], 4, 200, 0, true);
438 verifyItem(grid->m_visibleItems[5], 5, 290, 190, true);
439 checkImplicitHeight(280);
441 model2->addItem();
443 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
444 QTRY_COMPARE(grid->m_visibleItems.count(), 7);
445 verifyItem(grid->m_visibleItems[0], 0, 0, 0, true);
446 verifyItem(grid->m_visibleItems[1], 1, 100, 0, true);
447 verifyItem(grid->m_visibleItems[2], 2, 0, 100, true);
448 verifyItem(grid->m_visibleItems[3], 3, 190, 190, true);
449 verifyItem(grid->m_visibleItems[4], 4, 200, 0, true);
450 verifyItem(grid->m_visibleItems[5], 5, 290, 190, true);
451 verifyItem(grid->m_visibleItems[6], 6, 0, 290, true);
452 checkImplicitHeight(380);
454 model2->addItem();
455 model2->addItem();
457 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
458 QTRY_COMPARE(grid->m_visibleItems.count(), 9);
459 verifyItem(grid->m_visibleItems[0], 0, 0, 0, true);
460 verifyItem(grid->m_visibleItems[1], 1, 100, 0, true);
461 verifyItem(grid->m_visibleItems[2], 2, 0, 100, true);
462 verifyItem(grid->m_visibleItems[3], 3, 190, 190, true);
463 verifyItem(grid->m_visibleItems[4], 4, 200, 0, true);
464 verifyItem(grid->m_visibleItems[5], 5, 290, 190, true);
465 verifyItem(grid->m_visibleItems[6], 6, 0, 290, true);
466 verifyItem(grid->m_visibleItems[7], 7, 100, 290, true);
467 verifyItem(grid->m_visibleItems[8], 8, 0, 390, true);
468 checkImplicitHeight(570);
470 model2->removeLast();
472 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
473 QTRY_COMPARE(grid->m_visibleItems.count(), 8);
474 verifyItem(grid->m_visibleItems[0], 0, 0, 0, true);
475 verifyItem(grid->m_visibleItems[1], 1, 100, 0, true);
476 verifyItem(grid->m_visibleItems[2], 2, 0, 100, true);
477 verifyItem(grid->m_visibleItems[3], 3, 190, 190, true);
478 verifyItem(grid->m_visibleItems[4], 4, 200, 0, true);
479 verifyItem(grid->m_visibleItems[5], 5, 290, 190, true);
480 verifyItem(grid->m_visibleItems[6], 6, 0, 290, true);
481 verifyItem(grid->m_visibleItems[7], 7, 100, 290, true);
482 checkImplicitHeight(380);
483 }
485 void testDelegateCreationRanges()
486 {
487 grid->setSmallDelegateSize(QSizeF(30, 30));
488 grid->setBigDelegateSize(QSizeF(50, 50));
489 model->setCount(400);
490 checkImplicitHeight(2290);
492 view->resize(470, 700);
493 QTRY_COMPARE(grid->height(), 700.);
494 checkImplicitHeight(2290);
495 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
496 QTRY_COMPARE(grid->m_visibleItems.count(), 198);
498 grid->setDisplayMarginBeginning(-300);
499 grid->setDisplayMarginEnd(-(grid->height() - 400));
500 checkImplicitHeight(2290);
502 QTRY_COMPARE(grid->m_firstVisibleIndex, 36);
503 QTRY_COMPARE(grid->m_visibleItems.count(), 54);
504 checkImplicitHeight(2290);
506 view->resize(470, 470);
508 grid->setSmallDelegateSize(QSizeF(90, 90));
509 grid->setBigDelegateSize(QSizeF(180, 180));
511 model->setCount(21);
513 QTRY_COMPARE(grid->m_visibleItems.count(), 0);
515 grid->setDisplayMarginBeginning(0);
516 grid->setDisplayMarginEnd(0);
518 // This is exactly the same block as the first again
519 checkInitialPositions();
520 }
522private:
523 QQuickView *view;
524 OrganicGrid *grid;
525 DummyModel *model;
526};
528QTEST_MAIN(OrganicGridTest)
530#include "organicgridtest.moc"