on 631e710 help sign in
unity8/tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp
1689 lines 76 kB history raw
1/*
2 * Copyright (C) 2013 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 "listviewwithpageheader.h"
19#include <QAbstractItemModel>
20#include <QQmlEngine>
21#include <QQuickView>
22#include <QtTestGui>
23#include <private/qquicklistmodel_p.h>
24#include <private/qquickanimation_p.h>
25#include <private/qquickitem_p.h>
27class ListViewWithPageHeaderTestSection : public QObject
29 Q_OBJECT
31private:
32 void verifyItem(int visibleIndex, qreal pos, qreal height, bool culled, const QString &sectionHeader, bool sectionHeaderCulled)
33 {
34 QTRY_VERIFY(visibleIndex < lvwph->m_visibleItems.count());
35 ListViewWithPageHeader::ListItem *item = lvwph->m_visibleItems[visibleIndex];
36 QTRY_COMPARE(item->y(), pos);
37 QTRY_COMPARE(item->height(), height);
38 QCOMPARE(QQuickItemPrivate::get(item->m_item)->culled, culled);
39 QCOMPARE(section(item->m_sectionItem), sectionHeader);
40 if (!sectionHeader.isNull()) {
41 QCOMPARE(QQuickItemPrivate::get(item->m_sectionItem)->culled, sectionHeaderCulled);
42 }
43 }
45 void changeContentY(qreal change)
46 {
47 const qreal dest = lvwph->contentY() + change;
48 if (dest > lvwph->contentY()) {
49 const qreal jump = 25;
50 while (lvwph->contentY() + jump < dest) {
51 lvwph->setContentY(lvwph->contentY() + jump);
52 QTest::qWait(1);
53 }
54 } else {
55 const qreal jump = -25;
56 while (lvwph->contentY() + jump > dest) {
57 lvwph->setContentY(lvwph->contentY() + jump);
58 QTest::qWait(1);
59 }
60 }
61 lvwph->setContentY(dest);
62 QTest::qWait(1);
63 }
65 void scrollToTop()
66 {
67 const qreal jump = -25;
68 while (!lvwph->isAtYBeginning()) {
69 if (lvwph->contentY() + jump > -lvwph->minYExtent()) {
70 lvwph->setContentY(lvwph->contentY() + jump);
71 } else {
72 lvwph->setContentY(lvwph->contentY() - 1);
73 }
74 QTest::qWait(1);
75 }
76 }
78 void scrollToBottom()
79 {
80 const qreal jump = 25;
81 while (!lvwph->isAtYEnd()) {
82 if (lvwph->contentY() + lvwph->height() + jump < lvwph->contentHeight()) {
83 lvwph->setContentY(lvwph->contentY() + jump);
84 } else {
85 lvwph->setContentY(lvwph->contentY() + 1);
86 }
87 QTest::qWait(1);
88 }
89 }
91 void verifyInitialTopPosition()
92 {
93 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
94 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
95 verifyItem(0, 50., 190., false, "Agressive", false);
96 verifyItem(1, 240., 240., false, "Regular", false);
97 verifyItem(2, 480., 390., false, "Mild", false);
98 QCOMPARE(lvwph->m_minYExtent, 0.);
99 QCOMPARE(lvwph->m_clipItem->y(), 0.);
100 QCOMPARE(lvwph->m_clipItem->clip(), false);
101 QCOMPARE(lvwph->m_headerItem->y(), 0.);
102 QCOMPARE(lvwph->m_headerItem->height(), 50.);
103 QCOMPARE(lvwph->contentY(), 0.);
104 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
105 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
106 }
108 QString section(QQuickItem *item)
109 {
110 return item ? QQmlEngine::contextForObject(item)->parentContext()->contextProperty(QLatin1String("section")).toString() : QString();
111 }
113private Q_SLOTS:
115 void initTestCase()
116 {
117 }
119 void init()
120 {
121 view = new QQuickView();
122 view->engine()->addImportPath(BUILT_PLUGINS_DIR);
123 view->setSource(QUrl::fromLocalFile(LISTVIEWWITHPAGEHEADER_FOLDER "/test_section.qml"));
124 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
125 model = view->rootObject()->findChild<QQuickListModel*>();
126 otherDelegate = view->rootObject()->findChild<QQmlComponent*>();
127 QVERIFY(lvwph);
128 QVERIFY(model);
129 QVERIFY(otherDelegate);
130 view->show();
131 QTest::qWaitForWindowExposed(view);
133 verifyInitialTopPosition();
134 }
136 void cleanup()
137 {
138 delete view;
139 }
141 void testCreationDeletion()
142 {
143 // Nothing, init/cleanup already tests this
144 }
146 void testDrag1PixelUp()
147 {
148 lvwph->setContentY(lvwph->contentY() + 1);
149 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
150 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
151 verifyItem(0, 49., 190., false, "Agressive", false);
152 verifyItem(1, 239., 240., false, "Regular", false);
153 verifyItem(2, 479., 390., false, "Mild", false);
154 QCOMPARE(lvwph->m_minYExtent, 0.);
155 QCOMPARE(lvwph->m_clipItem->y(), 1.);
156 QCOMPARE(lvwph->m_clipItem->clip(), false);
157 QCOMPARE(lvwph->m_headerItem->y(), 0.);
158 QCOMPARE(lvwph->m_headerItem->height(), 50.);
159 QCOMPARE(lvwph->contentY(), 1.);
160 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
161 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
162 }
164 void testHeaderDetachDragDown()
165 {
166 QTest::mousePress(view, Qt::LeftButton, Qt::NoModifier, QPoint(0, 0));
167 QTest::qWait(100);
168 QTest::mouseMove(view, QPoint(0, 5));
169 QTest::qWait(100);
170 QTest::mouseMove(view, QPoint(0, 10));
171 QTest::qWait(100);
172 QTest::mouseMove(view, QPoint(0, 15));
173 QTest::qWait(100);
174 QTest::mouseMove(view, QPoint(0, 20));
175 QTest::qWait(100);
176 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
177 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
178 verifyItem(0, 55., 190., false, "Agressive", false);
179 verifyItem(1, 245., 240., false, "Regular", false);
180 verifyItem(2, 485., 390., false, "Mild", false);
181 QCOMPARE(lvwph->m_minYExtent, 0.);
182 QCOMPARE(lvwph->m_clipItem->y(), -5.);
183 QCOMPARE(lvwph->m_clipItem->clip(), false);
184 QCOMPARE(lvwph->m_headerItem->y(), -5.);
185 QCOMPARE(lvwph->m_headerItem->height(), 50.);
186 QCOMPARE(lvwph->contentY(), -5.);
187 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
188 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
190 QTest::mouseRelease(view, Qt::LeftButton, Qt::NoModifier, QPoint(0, 15));
192 verifyInitialTopPosition();
193 }
195 void testDrag375PixelUp()
196 {
197 changeContentY(375);
198 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
199 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
200 verifyItem(0, -325., 190., true, "Agressive", true);
201 verifyItem(1, -135, 240., false, "Regular", true);
202 verifyItem(2, 105, 390., false, "Mild", false);
203 verifyItem(3, 495, 390., false, "Bold", false);
204 QCOMPARE(lvwph->m_minYExtent, 0.);
205 QCOMPARE(lvwph->m_clipItem->y(), 375.);
206 QCOMPARE(lvwph->m_clipItem->clip(), false);
207 QCOMPARE(lvwph->m_headerItem->y(), 0.);
208 QCOMPARE(lvwph->m_headerItem->height(), 50.);
209 QCOMPARE(lvwph->contentY(), 375.);
210 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
211 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
212 QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
213 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
214 }
216 void testDrag520PixelUp()
217 {
218 changeContentY(520);
219 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
220 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
221 verifyItem(0, -280., 240., true, "Regular", true);
222 verifyItem(1, -40, 390., false, "Mild", true);
223 verifyItem(2, 350, 390., false, "Bold", false);
224 verifyItem(3, 740, 350., true, QString(), true);
225 QCOMPARE(lvwph->m_minYExtent, 152.5);
226 QCOMPARE(lvwph->m_clipItem->y(), 520.);
227 QCOMPARE(lvwph->m_clipItem->clip(), false);
228 QCOMPARE(lvwph->m_headerItem->y(), 0.);
229 QCOMPARE(lvwph->m_headerItem->height(), 50.);
230 QCOMPARE(lvwph->contentY(), 520.);
231 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
232 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
233 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
234 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
235 }
237 void testDragHeaderUpThenShow()
238 {
239 changeContentY(120);
240 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
241 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
242 verifyItem(0, -70., 190., false, "Agressive", true);
243 verifyItem(1, 120., 240., false, "Regular", false);
244 verifyItem(2, 360., 390., false, "Mild", false);
245 verifyItem(3, 750., 390., true, "Bold", true);
246 QCOMPARE(lvwph->m_minYExtent, 0.);
247 QCOMPARE(lvwph->m_clipItem->y(), 120.);
248 QCOMPARE(lvwph->m_clipItem->clip(), false);
249 QCOMPARE(lvwph->m_headerItem->y(), 0.);
250 QCOMPARE(lvwph->m_headerItem->height(), 50.);
251 QCOMPARE(lvwph->contentY(), 120.);
252 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
253 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
254 QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
255 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
257 changeContentY(-30);
258 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
259 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
260 verifyItem(0, -70., 190., false, "Agressive", true);
261 verifyItem(1, 120., 240., false, "Regular", false);
262 verifyItem(2, 360., 390., false, "Mild", false);
263 verifyItem(3, 750., 390., true, "Bold", true);
264 QCOMPARE(lvwph->m_minYExtent, 0.);
265 QCOMPARE(lvwph->m_clipItem->y(), 120.);
266 QCOMPARE(lvwph->m_clipItem->clip(), true);
267 QTRY_COMPARE(lvwph->m_headerItem->y(), 70.);
268 QCOMPARE(lvwph->m_headerItem->height(), 50.);
269 QCOMPARE(lvwph->contentY(), 90.);
270 QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
271 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
272 QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
273 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
274 }
276 void testDragHeaderUpThenShowWithoutHidingTotally()
277 {
278 changeContentY(10);
279 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
280 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
281 verifyItem(0, 40., 190., false, "Agressive", false);
282 verifyItem(1, 230., 240., false, "Regular", false);
283 verifyItem(2, 470., 390., false, "Mild", false);
284 QCOMPARE(lvwph->m_minYExtent, 0.);
285 QCOMPARE(lvwph->m_clipItem->y(), 10.);
286 QCOMPARE(lvwph->m_clipItem->clip(), false);
287 QCOMPARE(lvwph->m_headerItem->y(), 0.);
288 QCOMPARE(lvwph->m_headerItem->height(), 50.);
289 QCOMPARE(lvwph->contentY(), 10.);
290 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
291 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
293 changeContentY(-1);
295 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
296 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
297 verifyItem(0, 41., 190., false, "Agressive", false);
298 verifyItem(1, 231., 240., false, "Regular", false);
299 verifyItem(2, 471., 390., false, "Mild", false);
300 QCOMPARE(lvwph->m_minYExtent, 0.);
301 QCOMPARE(lvwph->m_clipItem->y(), 9.);
302 QCOMPARE(lvwph->m_clipItem->clip(), false);
303 QTRY_COMPARE(lvwph->m_headerItem->y(), 0.);
304 QCOMPARE(lvwph->m_headerItem->height(), 50.);
305 QCOMPARE(lvwph->contentY(), 9.);
306 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
307 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
308 }
310 void testPositionAtBeginningIndex0Visible()
311 {
312 changeContentY(375);
313 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
314 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
315 verifyItem(0, -325., 190., true, "Agressive", true);
316 verifyItem(1, -135, 240., false, "Regular", true);
317 verifyItem(2, 105, 390., false, "Mild", false);
318 verifyItem(3, 495, 390., false, "Bold", false);
319 QCOMPARE(lvwph->m_minYExtent, 0.);
320 QCOMPARE(lvwph->m_clipItem->y(), 375.);
321 QCOMPARE(lvwph->m_clipItem->clip(), false);
322 QCOMPARE(lvwph->m_headerItem->y(), 0.);
323 QCOMPARE(lvwph->m_headerItem->height(), 50.);
324 QCOMPARE(lvwph->contentY(), 375.);
325 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
326 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
327 QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
328 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
330 lvwph->positionAtBeginning();
332 verifyInitialTopPosition();
333 }
335 void testPositionAtBeginningIndex0NotVisible()
336 {
337 changeContentY(520);
338 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
339 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
340 verifyItem(0, -280., 240., true, "Regular", true);
341 verifyItem(1, -40, 390., false, "Mild", true);
342 verifyItem(2, 350, 390., false, "Bold", false);
343 verifyItem(3, 740, 350., true, QString(), true);
344 QCOMPARE(lvwph->m_minYExtent, 152.5);
345 QCOMPARE(lvwph->m_clipItem->y(), 520.);
346 QCOMPARE(lvwph->m_clipItem->clip(), false);
347 QCOMPARE(lvwph->m_headerItem->y(), 0.);
348 QCOMPARE(lvwph->m_headerItem->height(), 50.);
349 QCOMPARE(lvwph->contentY(), 520.);
350 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
351 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
352 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
353 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
355 lvwph->positionAtBeginning();
357 verifyInitialTopPosition();
358 }
360 void testIndex0GrowOnScreen()
361 {
362 model->setProperty(0, "size", 400);
364 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
365 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
366 verifyItem(0, 50., 440., false, "Agressive", false);
367 verifyItem(1, 490., 240., false, "Regular", false);
368 verifyItem(2, 730., 390., true, "Mild", true);
369 QCOMPARE(lvwph->m_minYExtent, 0.);
370 QCOMPARE(lvwph->m_clipItem->y(), 0.);
371 QCOMPARE(lvwph->m_clipItem->clip(), false);
372 QCOMPARE(lvwph->m_headerItem->y(), 0.);
373 QCOMPARE(lvwph->m_headerItem->height(), 50.);
374 QCOMPARE(lvwph->contentY(), 0.);
375 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
376 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
377 }
379 void testIndex0GrowOffScreen()
380 {
381 changeContentY(375);
382 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
383 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
384 verifyItem(0, -325., 190., true, "Agressive", true);
385 verifyItem(1, -135, 240., false, "Regular", true);
386 verifyItem(2, 105, 390., false, "Mild", false);
387 verifyItem(3, 495, 390., false, "Bold", false);
388 QCOMPARE(lvwph->m_minYExtent, 0.);
389 QCOMPARE(lvwph->m_clipItem->y(), 375.);
390 QCOMPARE(lvwph->m_clipItem->clip(), false);
391 QCOMPARE(lvwph->m_headerItem->y(), 0.);
392 QCOMPARE(lvwph->m_headerItem->height(), 50.);
393 QCOMPARE(lvwph->contentY(), 375.);
394 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
395 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
396 QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
397 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
399 model->setProperty(0, "size", 400);
401 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
402 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
403 verifyItem(0, -575., 440., true, "Agressive", true);
404 verifyItem(1, -135, 240., false, "Regular", true);
405 verifyItem(2, 105, 390., false, "Mild", false);
406 verifyItem(3, 495, 390., false, "Bold", false);
407 QCOMPARE(lvwph->m_minYExtent, 250.);
408 QCOMPARE(lvwph->m_clipItem->y(), 375.);
409 QCOMPARE(lvwph->m_clipItem->clip(), false);
410 QCOMPARE(lvwph->m_headerItem->y(), 0.);
411 QCOMPARE(lvwph->m_headerItem->height(), 50.);
412 QCOMPARE(lvwph->contentY(), 375.);
413 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
414 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
415 QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
416 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
418 scrollToTop();
420 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
421 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
422 verifyItem(0, 50., 440., false, "Agressive", false);
423 verifyItem(1, 490, 240., false, "Regular", false);
424 verifyItem(2, 730, 390., true, "Mild", true);
425 QCOMPARE(lvwph->m_minYExtent, 250.);
426 QCOMPARE(lvwph->m_clipItem->y(), -250.);
427 QCOMPARE(lvwph->m_clipItem->clip(), false);
428 QCOMPARE(lvwph->m_headerItem->y(), -250.);
429 QCOMPARE(lvwph->m_headerItem->height(), 50.);
430 QCOMPARE(lvwph->contentY(), -250.);
431 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
432 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
434 changeContentY(30);
436 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
437 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
438 verifyItem(0, 20., 440., false, "Agressive", false);
439 verifyItem(1, 460, 240., false, "Regular", false);
440 verifyItem(2, 700, 390., true, "Mild", true);
441 QCOMPARE(lvwph->m_minYExtent, 250.);
442 QCOMPARE(lvwph->m_clipItem->y(), -220.);
443 QCOMPARE(lvwph->m_clipItem->clip(), false);
444 QCOMPARE(lvwph->m_headerItem->y(), -250.);
445 QCOMPARE(lvwph->m_headerItem->height(), 50.);
446 QCOMPARE(lvwph->contentY(), -220.);
447 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
448 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
449 }
451 void testIndex0GrowNotCreated()
452 {
453 changeContentY(520);
454 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
455 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
456 verifyItem(0, -280., 240., true, "Regular", true);
457 verifyItem(1, -40, 390., false, "Mild", true);
458 verifyItem(2, 350, 390., false, "Bold", false);
459 verifyItem(3, 740, 350., true, QString(), true);
460 QCOMPARE(lvwph->m_minYExtent, 152.5);
461 QCOMPARE(lvwph->m_clipItem->y(), 520.);
462 QCOMPARE(lvwph->m_clipItem->clip(), false);
463 QCOMPARE(lvwph->m_headerItem->y(), 0.);
464 QCOMPARE(lvwph->m_headerItem->height(), 50.);
465 QCOMPARE(lvwph->contentY(), 520.);
466 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
467 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
468 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
469 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
471 model->setProperty(0, "size", 400);
473 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
474 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
475 verifyItem(0, -280., 240., true, "Regular", true);
476 verifyItem(1, -40, 390., false, "Mild", true);
477 verifyItem(2, 350, 390., false, "Bold", false);
478 verifyItem(3, 740, 350., true, QString(), true);
479 QCOMPARE(lvwph->m_minYExtent, 152.5);
480 QCOMPARE(lvwph->m_clipItem->y(), 520.);
481 QCOMPARE(lvwph->m_clipItem->clip(), false);
482 QCOMPARE(lvwph->m_headerItem->y(), 0.);
483 QCOMPARE(lvwph->m_headerItem->height(), 50.);
484 QCOMPARE(lvwph->contentY(), 520.);
485 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
486 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
487 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
488 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
490 scrollToTop();
492 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
493 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
494 verifyItem(0, 50., 440., false, "Agressive", false);
495 verifyItem(1, 490, 240., false, "Regular", false);
496 verifyItem(2, 730, 390., true, "Mild", true);
497 QCOMPARE(lvwph->m_minYExtent, 250.);
498 QCOMPARE(lvwph->m_clipItem->y(), -250.);
499 QCOMPARE(lvwph->m_clipItem->clip(), false);
500 QCOMPARE(lvwph->m_headerItem->y(), -250.);
501 QCOMPARE(lvwph->m_headerItem->height(), 50.);
502 QCOMPARE(lvwph->contentY(), -250.);
503 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
504 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
505 }
507 void testShowHideShowHeaderAtBottom()
508 {
509 scrollToBottom();
510 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
511 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
512 verifyItem(0, -588., 390., true, "Bold", true);
513 verifyItem(1, -198, 350., false, QString(), true);
514 verifyItem(2, 152, 390., false, "Lazy", false);
515 QCOMPARE(lvwph->m_minYExtent, 310.);
516 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
517 QCOMPARE(lvwph->m_clipItem->clip(), false);
518 QCOMPARE(lvwph->m_headerItem->y(), 0.);
519 QCOMPARE(lvwph->m_headerItem->height(), 50.);
520 QCOMPARE(lvwph->contentY(), 1458.);
521 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
522 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
523 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
524 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
526 changeContentY(-30);
527 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
528 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
529 verifyItem(0, -588., 390., true, "Bold", true);
530 verifyItem(1, -198, 350., false, QString(), true);
531 verifyItem(2, 152, 390., false, "Lazy", false);
532 QCOMPARE(lvwph->m_minYExtent, 310.);
533 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
534 QCOMPARE(lvwph->m_clipItem->clip(), true);
535 QCOMPARE(lvwph->m_headerItem->y(), 1408.);
536 QCOMPARE(lvwph->m_headerItem->height(), 50.);
537 QCOMPARE(lvwph->contentY(), 1428.);
538 QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
539 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
540 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
541 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
543 changeContentY(30);
544 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
545 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
546 verifyItem(0, -588., 390., true, "Bold", true);
547 verifyItem(1, -198, 350., false, QString(), true);
548 verifyItem(2, 152, 390., false, "Lazy", false);
549 QCOMPARE(lvwph->m_minYExtent, 310.);
550 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
551 QCOMPARE(lvwph->m_clipItem->clip(), false);
552 QCOMPARE(lvwph->m_headerItem->y(), -310.);
553 QCOMPARE(lvwph->m_headerItem->height(), 50.);
554 QCOMPARE(lvwph->contentY(), 1458.);
555 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
556 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
557 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
558 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
560 changeContentY(-30);
561 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
562 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
563 verifyItem(0, -588., 390., true, "Bold", true);
564 verifyItem(1, -198, 350., false, QString(), true);
565 verifyItem(2, 152, 390., false, "Lazy", false);
566 QCOMPARE(lvwph->m_minYExtent, 310.);
567 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
568 QCOMPARE(lvwph->m_clipItem->clip(), true);
569 QCOMPARE(lvwph->m_headerItem->y(), 1408.);
570 QCOMPARE(lvwph->m_headerItem->height(), 50.);
571 QCOMPARE(lvwph->contentY(), 1428.);
572 QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
573 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
574 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
575 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
576 }
578 void testChangeDelegateAtBottom()
579 {
580 scrollToBottom();
581 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
582 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
583 verifyItem(0, -588., 390., true, "Bold", true);
584 verifyItem(1, -198, 350., false, QString(), true);
585 verifyItem(2, 152, 390., false, "Lazy", false);
586 QCOMPARE(lvwph->m_minYExtent, 310.);
587 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
588 QCOMPARE(lvwph->m_clipItem->clip(), false);
589 QCOMPARE(lvwph->m_headerItem->y(), 0.);
590 QCOMPARE(lvwph->m_headerItem->height(), 50.);
591 QCOMPARE(lvwph->contentY(), 1458.);
592 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
593 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
594 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
595 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
597 lvwph->setDelegate(otherDelegate);
599 QTRY_COMPARE(lvwph->m_visibleItems.count(), 6);
600 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
601 verifyItem(0, 50., 75., false, "Agressive", false);
602 verifyItem(1, 125, 75., false, "Regular", false);
603 verifyItem(2, 200, 75., false, "Mild", false);
604 verifyItem(3, 275, 75., false, "Bold", false);
605 verifyItem(4, 350, 35., false, QString(), true);
606 verifyItem(5, 385, 75., false, "Lazy", false);
607 QCOMPARE(lvwph->m_minYExtent, 0.);
608 QCOMPARE(lvwph->m_clipItem->y(), 0.);
609 QCOMPARE(lvwph->m_clipItem->clip(), false);
610 QCOMPARE(lvwph->m_headerItem->y(), 0.);
611 QCOMPARE(lvwph->m_headerItem->height(), 50.);
612 QCOMPARE(lvwph->contentY(), 0.);
613 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
614 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
615 }
617 void testGrowHeaderAtTop()
618 {
619 lvwph->m_headerItem->setHeight(100);
621 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
622 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
623 verifyItem(0, 100., 190., false, "Agressive", false);
624 verifyItem(1, 290., 240., false, "Regular", false);
625 verifyItem(2, 530., 390., false, "Mild", false);
626 QCOMPARE(lvwph->m_minYExtent, 0.);
627 QCOMPARE(lvwph->m_clipItem->y(), 0.);
628 QCOMPARE(lvwph->m_clipItem->clip(), false);
629 QCOMPARE(lvwph->m_headerItem->y(), 0.);
630 QCOMPARE(lvwph->m_headerItem->height(), 100.);
631 QCOMPARE(lvwph->contentY(), 0.);
632 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
633 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
634 }
636 void testGrowHeaderAtBottom()
637 {
638 scrollToBottom();
639 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
640 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
641 verifyItem(0, -588., 390., true, "Bold", true);
642 verifyItem(1, -198, 350., false, QString(), true);
643 verifyItem(2, 152, 390., false, "Lazy", false);
644 QCOMPARE(lvwph->m_minYExtent, 310.);
645 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
646 QCOMPARE(lvwph->m_clipItem->clip(), false);
647 QCOMPARE(lvwph->m_headerItem->y(), 0.);
648 QCOMPARE(lvwph->m_headerItem->height(), 50.);
649 QCOMPARE(lvwph->contentY(), 1458.);
650 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
651 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
652 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
653 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
655 lvwph->m_headerItem->setHeight(100);
657 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
658 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
659 verifyItem(0, -588., 390., true, "Bold", true);
660 verifyItem(1, -198, 350., false, QString(), true);
661 verifyItem(2, 152, 390., false, "Lazy", false);
662 QCOMPARE(lvwph->m_minYExtent, 360.);
663 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
664 QCOMPARE(lvwph->m_clipItem->clip(), false);
665 QCOMPARE(lvwph->m_headerItem->y(), 0.);
666 QCOMPARE(lvwph->m_headerItem->height(), 100.);
667 QCOMPARE(lvwph->contentY(), 1458.);
668 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
669 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
670 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
671 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
673 changeContentY(-30);
675 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
676 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
677 verifyItem(0, -588., 390., true, "Bold", true);
678 verifyItem(1, -198, 350., false, QString(), true);
679 verifyItem(2, 152, 390., false, "Lazy", false);
680 QCOMPARE(lvwph->m_minYExtent, 360.);
681 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
682 QCOMPARE(lvwph->m_clipItem->clip(), true);
683 QCOMPARE(lvwph->m_headerItem->y(), 1358.);
684 QCOMPARE(lvwph->m_headerItem->height(), 100.);
685 QCOMPARE(lvwph->contentY(), 1428.);
686 QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
687 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
688 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
689 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
691 scrollToTop();
693 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
694 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
695 verifyItem(0, 100., 190., false, "Agressive", false);
696 verifyItem(1, 290., 240., false, "Regular", false);
697 verifyItem(2, 530., 390., false, "Mild", false);
698 QCOMPARE(lvwph->m_minYExtent, 50.);
699 QCOMPARE(lvwph->m_clipItem->y(), -50.);
700 QCOMPARE(lvwph->m_clipItem->clip(), false);
701 QCOMPARE(lvwph->m_headerItem->y(), -50.);
702 QCOMPARE(lvwph->m_headerItem->height(), 100.);
703 QCOMPARE(lvwph->contentY(), -50.);
704 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
705 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
706 }
708 void testGrowHeaderPartlyShown()
709 {
710 scrollToBottom();
711 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
712 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
713 verifyItem(0, -588., 390., true, "Bold", true);
714 verifyItem(1, -198, 350., false, QString(), true);
715 verifyItem(2, 152, 390., false, "Lazy", false);
716 QCOMPARE(lvwph->m_minYExtent, 310.);
717 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
718 QCOMPARE(lvwph->m_clipItem->clip(), false);
719 QCOMPARE(lvwph->m_headerItem->y(), 0.);
720 QCOMPARE(lvwph->m_headerItem->height(), 50.);
721 QCOMPARE(lvwph->contentY(), 1458.);
722 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
723 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
724 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
725 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
727 changeContentY(-30);
729 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
730 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
731 verifyItem(0, -588., 390., true, "Bold", true);
732 verifyItem(1, -198, 350., false, QString(), true);
733 verifyItem(2, 152, 390., false, "Lazy", false);
734 QCOMPARE(lvwph->m_minYExtent, 310.);
735 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
736 QCOMPARE(lvwph->m_clipItem->clip(), true);
737 QCOMPARE(lvwph->m_headerItem->y(), 1408.);
738 QCOMPARE(lvwph->m_headerItem->height(), 50.);
739 QCOMPARE(lvwph->contentY(), 1428.);
740 QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
741 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
742 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
743 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
745 lvwph->m_headerItem->setHeight(100);
747 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
748 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
749 verifyItem(0, -588., 390., true, "Bold", true);
750 verifyItem(1, -198, 350., false, QString(), true);
751 verifyItem(2, 152, 390., false, "Lazy", false);
752 QCOMPARE(lvwph->m_minYExtent, 310.);
753 QCOMPARE(lvwph->m_clipItem->y(), 1508.);
754 QCOMPARE(lvwph->m_clipItem->clip(), true);
755 QCOMPARE(lvwph->m_headerItem->y(), 1408.);
756 QCOMPARE(lvwph->m_headerItem->height(), 100.);
757 QCOMPARE(lvwph->contentY(), 1428.);
758 QCOMPARE(lvwph->m_headerItemShownHeight, 80.);
759 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
760 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
761 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
763 scrollToTop();
765 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
766 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
767 verifyItem(0, 100., 190., false, "Agressive", false);
768 verifyItem(1, 290., 240., false, "Regular", false);
769 verifyItem(2, 530., 390., false, "Mild", false);
770 QCOMPARE(lvwph->m_minYExtent, 0.);
771 QCOMPARE(lvwph->m_clipItem->y(), 0.);
772 QCOMPARE(lvwph->m_clipItem->clip(), false);
773 QCOMPARE(lvwph->m_headerItem->y(), 0.);
774 QCOMPARE(lvwph->m_headerItem->height(), 100.);
775 QCOMPARE(lvwph->contentY(), 0.);
776 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
777 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
778 }
780 void testShrinkHeaderMoreThanPartlyShown()
781 {
782 scrollToBottom();
783 lvwph->m_headerItem->setHeight(100);
784 changeContentY(-30);
786 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
787 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
788 verifyItem(0, -588., 390., true, "Bold", true);
789 verifyItem(1, -198, 350., false, QString(), true);
790 verifyItem(2, 152, 390., false, "Lazy", false);
791 QCOMPARE(lvwph->m_minYExtent, 360.);
792 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
793 QCOMPARE(lvwph->m_clipItem->clip(), true);
794 QCOMPARE(lvwph->m_headerItem->y(), 1358.);
795 QCOMPARE(lvwph->m_headerItem->height(), 100.);
796 QCOMPARE(lvwph->contentY(), 1428.);
797 QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
798 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
799 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
800 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
802 lvwph->m_headerItem->setHeight(50);
804 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
805 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
806 verifyItem(0, -588., 390., true, "Bold", true);
807 verifyItem(1, -198, 350., false, QString(), true);
808 verifyItem(2, 152, 390., false, "Lazy", false);
809 QCOMPARE(lvwph->m_minYExtent, 340.);
810 QCOMPARE(lvwph->m_clipItem->y(), 1428.);
811 QCOMPARE(lvwph->m_clipItem->clip(), false);
812 QCOMPARE(lvwph->m_headerItem->y(), 1358.);
813 QCOMPARE(lvwph->m_headerItem->height(), 50.);
814 QCOMPARE(lvwph->contentY(), 1428.);
815 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
816 QTRY_VERIFY(lvwph->isAtYEnd());
817 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
818 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
819 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
821 scrollToTop();
823 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
824 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
825 verifyItem(0, 50., 190., false, "Agressive", false);
826 verifyItem(1, 240., 240., false, "Regular", false);
827 verifyItem(2, 480., 390., false, "Mild", false);
828 QCOMPARE(lvwph->m_minYExtent, 30.);
829 QCOMPARE(lvwph->m_clipItem->y(), -30.);
830 QCOMPARE(lvwph->m_clipItem->clip(), false);
831 QCOMPARE(lvwph->m_headerItem->y(), -30.);
832 QCOMPARE(lvwph->m_headerItem->height(), 50.);
833 QCOMPARE(lvwph->contentY(), -30.);
834 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
835 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
836 }
838 void testSetEmptyHeaderAtTop()
839 {
840 lvwph->setHeader(nullptr);
842 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
843 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
844 verifyItem(0, 0., 190., false, "Agressive", false);
845 verifyItem(1, 190., 240., false, "Regular", false);
846 verifyItem(2, 430., 390., false, "Mild", false);
847 QCOMPARE(lvwph->m_minYExtent, 0.);
848 QCOMPARE(lvwph->m_clipItem->y(), 0.);
849 QCOMPARE(lvwph->m_clipItem->clip(), false);
850 QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
851 QCOMPARE(lvwph->contentY(), 0.);
852 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
853 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
854 }
856 void testSetEmptyHeaderAtBottom()
857 {
858 scrollToBottom();
859 lvwph->setHeader(nullptr);
861 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
862 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
863 verifyItem(0, -588., 390., true, "Bold", true);
864 verifyItem(1, -198, 350., false, QString(), true);
865 verifyItem(2, 152, 390., false, "Lazy", false);
866 QCOMPARE(lvwph->m_minYExtent, 260.);
867 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
868 QCOMPARE(lvwph->m_clipItem->clip(), false);
869 QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
870 QCOMPARE(lvwph->contentY(), 1458.);
871 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
872 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
873 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
874 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
876 scrollToTop();
878 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
879 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
880 verifyItem(0, 0., 190., false, "Agressive", false);
881 verifyItem(1, 190., 240., false, "Regular", false);
882 verifyItem(2, 430., 390., false, "Mild", false);
883 QCOMPARE(lvwph->m_minYExtent, -50.);
884 QCOMPARE(lvwph->m_clipItem->y(), 50.);
885 QCOMPARE(lvwph->m_clipItem->clip(), false);
886 QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
887 QCOMPARE(lvwph->contentY(), 50.);
888 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
889 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
890 }
892 void testSetEmptyHeaderWhenPartlyShownClipped()
893 {
894 scrollToBottom();
895 changeContentY(-30);
896 lvwph->setHeader(nullptr);
898 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
899 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
900 verifyItem(0, -588., 390., true, "Bold", true);
901 verifyItem(1, -198, 350., false, QString(), true);
902 verifyItem(2, 152, 390., false, "Lazy", false);
903 QCOMPARE(lvwph->m_minYExtent, 290.);
904 QCOMPARE(lvwph->m_clipItem->y(), 1428.);
905 QCOMPARE(lvwph->m_clipItem->clip(), false);
906 QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
907 QCOMPARE(lvwph->contentY(), 1428.);
908 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
909 QTRY_VERIFY(lvwph->isAtYEnd());
910 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
911 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
912 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
914 scrollToTop();
916 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
917 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
918 verifyItem(0, 0., 190., false, "Agressive", false);
919 verifyItem(1, 190., 240., false, "Regular", false);
920 verifyItem(2, 430., 390., false, "Mild", false);
921 QCOMPARE(lvwph->m_minYExtent, -20.);
922 QCOMPARE(lvwph->m_clipItem->y(), 20.);
923 QCOMPARE(lvwph->m_clipItem->clip(), false);
924 QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
925 QCOMPARE(lvwph->contentY(), 20.);
926 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
927 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
928 }
930 void testSetEmptyHeaderWhenPartlyShownNotClipped()
931 {
932 changeContentY(30);
933 lvwph->setHeader(nullptr);
935 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
936 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
937 verifyItem(0, -30., 190., false, "Agressive", true);
938 verifyItem(1, 160., 240., false, "Regular", false);
939 verifyItem(2, 400., 390., false, "Mild", false);
940 QCOMPARE(lvwph->m_minYExtent, 0.);
941 QCOMPARE(lvwph->m_clipItem->y(), 30.);
942 QCOMPARE(lvwph->m_clipItem->clip(), false);
943 QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
944 QCOMPARE(lvwph->contentY(), 30.);
945 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
946 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
947 QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
948 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
949 }
951 void testSetNullDelegate()
952 {
953 lvwph->setDelegate(nullptr);
955 QTRY_COMPARE(lvwph->m_visibleItems.count(), 0);
956 QCOMPARE(lvwph->m_firstVisibleIndex, -1);
957 QCOMPARE(lvwph->m_minYExtent, 0.);
958 QCOMPARE(lvwph->m_clipItem->y(), 0.);
959 QCOMPARE(lvwph->m_clipItem->clip(), false);
960 QCOMPARE(lvwph->m_headerItem->y(), 0.);
961 QCOMPARE(lvwph->m_headerItem->height(), 50.);
962 QCOMPARE(lvwph->contentY(), 0.);
963 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
964 QTRY_COMPARE(lvwph->contentHeight(), 50.);
965 QVERIFY(lvwph->isAtYBeginning());
966 QVERIFY(lvwph->isAtYEnd());
967 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
968 }
970 void testInsertItems()
971 {
972 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
973 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
975 QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
976 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
977 verifyItem(0, 50., 190., false, "Agressive", false);
978 verifyItem(1, 240., 165., false, "Regular", false);
979 verifyItem(2, 405., 140., false, "Agressive", false);
980 verifyItem(3, 545., 240., true, "Regular", true);
981 verifyItem(4, 785., 390., true, "Mild", true);
982 QCOMPARE(lvwph->m_minYExtent, 0.);
983 QCOMPARE(lvwph->m_clipItem->y(), 0.);
984 QCOMPARE(lvwph->m_clipItem->clip(), false);
985 QCOMPARE(lvwph->m_headerItem->y(), 0.);
986 QCOMPARE(lvwph->m_headerItem->height(), 50.);
987 QCOMPARE(lvwph->contentY(), 0.);
988 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
989 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
990 }
992 void testInsertItemsStealSectionItem()
993 {
994 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
996 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
997 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
998 verifyItem(0, 50., 190., false, "Agressive", false);
999 verifyItem(1, 240., 165., false, "Regular", false);
1000 verifyItem(2, 405., 200., false, QString(), true);
1001 verifyItem(3, 605., 390., true, "Mild", true);
1002 QCOMPARE(lvwph->m_minYExtent, 0.);
1003 QCOMPARE(lvwph->m_clipItem->y(), 0.);
1004 QCOMPARE(lvwph->m_clipItem->clip(), false);
1005 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1006 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1007 QCOMPARE(lvwph->contentY(), 0.);
1008 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1009 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1013 void testInsertItemsOnNotShownPosition()
1015 changeContentY(800);
1017 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1018 QTRY_COMPARE(lvwph->m_firstVisibleIndex, 2);
1019 verifyItem(0, -320., 390., false, "Mild", true);
1020 verifyItem(1, 70, 390., false, "Bold", false);
1021 verifyItem(2, 460, 350., false, QString(), false);
1022 verifyItem(3, 810, 390., true, "Lazy", true);
1023 QCOMPARE(lvwph->m_minYExtent, 330.);
1024 QCOMPARE(lvwph->m_clipItem->y(), 800.);
1025 QCOMPARE(lvwph->m_clipItem->clip(), false);
1026 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1027 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1028 QCOMPARE(lvwph->contentY(), 800.);
1029 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1030 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1031 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1032 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1034 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1035 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
1037 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1038 QCOMPARE(lvwph->m_firstVisibleIndex, 4);
1039 verifyItem(0, -320., 390., false, "Mild", true);
1040 verifyItem(1, 70, 390., false, "Bold", false);
1041 verifyItem(2, 460, 350., false, QString(), false);
1042 verifyItem(3, 810, 390., true, "Lazy", true);
1043 QCOMPARE(lvwph->m_minYExtent, 1090.);
1044 QCOMPARE(lvwph->m_clipItem->y(), 800.);
1045 QCOMPARE(lvwph->m_clipItem->clip(), false);
1046 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1047 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1048 QCOMPARE(lvwph->contentY(), 800.);
1049 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1050 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1051 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1052 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1054 scrollToTop();
1056 QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1057 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1058 verifyItem(0, 50., 190., false, "Agressive", false);
1059 verifyItem(1, 240., 165., false, "Regular", false);
1060 verifyItem(2, 405., 140., false, "Agressive", false);
1061 verifyItem(3, 545., 240., true, "Regular", true);
1062 verifyItem(4, 785., 390., true, "Mild", true);
1063 QCOMPARE(lvwph->m_minYExtent, 305.);
1064 QCOMPARE(lvwph->m_clipItem->y(), -305.);
1065 QCOMPARE(lvwph->m_clipItem->clip(), false);
1066 QCOMPARE(lvwph->m_headerItem->y(), -305.);
1067 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1068 QCOMPARE(lvwph->contentY(), -305.);
1069 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1070 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1073 void testInsertItemsAtEndOfViewport()
1075 changeContentY(60);
1077 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1078 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1079 verifyItem(0, -10., 190., false, "Agressive", true);
1080 verifyItem(1, 180., 240., false, "Regular", false);
1081 verifyItem(2, 420., 390., false, "Mild", false);
1082 verifyItem(3, 810., 390., true, "Bold", true);
1083 QCOMPARE(lvwph->m_minYExtent, 0.);
1084 QCOMPARE(lvwph->m_clipItem->y(), 60.);
1085 QCOMPARE(lvwph->m_clipItem->clip(), false);
1086 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1087 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1088 QCOMPARE(lvwph->contentY(), 60.);
1089 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1090 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1091 QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
1092 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1094 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 3), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1095 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 3), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
1097 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1098 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1099 verifyItem(0, -10., 190., false, "Agressive", true);
1100 verifyItem(1, 180., 240., false, "Regular", false);
1101 verifyItem(2, 420., 390., false, "Mild", false);
1102 verifyItem(3, 810., 165., true, "Regular", true);
1103 QCOMPARE(lvwph->m_minYExtent, 0.);
1104 QCOMPARE(lvwph->m_clipItem->y(), 60.);
1105 QCOMPARE(lvwph->m_clipItem->clip(), false);
1106 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1107 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1108 QCOMPARE(lvwph->contentY(), 60.);
1109 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1110 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1111 QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
1112 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1115 void testInsertItemsBeforeValidIndex()
1117 changeContentY(520);
1119 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1120 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1121 verifyItem(0, -280., 240., true, "Regular", true);
1122 verifyItem(1, -40, 390., false, "Mild", true);
1123 verifyItem(2, 350, 390., false, "Bold", false);
1124 verifyItem(3, 740, 350., true, QString(), true);
1125 QCOMPARE(lvwph->m_minYExtent, 152.5);
1126 QCOMPARE(lvwph->m_clipItem->y(), 520.);
1127 QCOMPARE(lvwph->m_clipItem->clip(), false);
1128 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1129 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1130 QCOMPARE(lvwph->contentY(), 520.);
1131 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1132 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1133 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1134 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1136 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1137 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
1139 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1140 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
1141 verifyItem(0, -280., 240., true, "Regular", true);
1142 verifyItem(1, -40, 390., false, "Mild", true);
1143 verifyItem(2, 350, 390., false, "Bold", false);
1144 verifyItem(3, 740, 350., true, QString(), true);
1145 QCOMPARE(lvwph->m_minYExtent, 837.5);
1146 QCOMPARE(lvwph->m_clipItem->y(), 520.);
1147 QCOMPARE(lvwph->m_clipItem->clip(), false);
1148 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1149 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1150 QCOMPARE(lvwph->contentY(), 520.);
1151 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1152 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1153 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1154 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1157 void testInsertItemsBeforeViewport()
1159 changeContentY(375);
1161 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1162 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1163 verifyItem(0, -325., 190., true, "Agressive", true);
1164 verifyItem(1, -135, 240., false, "Regular", true);
1165 verifyItem(2, 105, 390., false, "Mild", false);
1166 verifyItem(3, 495, 390., false, "Bold", false);
1167 QCOMPARE(lvwph->m_minYExtent, 0.);
1168 QCOMPARE(lvwph->m_clipItem->y(), 375.);
1169 QCOMPARE(lvwph->m_clipItem->clip(), false);
1170 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1171 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1172 QCOMPARE(lvwph->contentY(), 375.);
1173 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1174 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1175 QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1176 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1178 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1179 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
1181 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1182 QCOMPARE(lvwph->m_firstVisibleIndex, 2);
1183 verifyItem(0, -275., 140., true, "Agressive", true);
1184 verifyItem(1, -135., 240., false, "Regular", true);
1185 verifyItem(2, 105, 390., false, "Mild", false);
1186 verifyItem(3, 495, 390., false, "Bold", false);
1187 QCOMPARE(lvwph->m_minYExtent, 530.);
1188 QCOMPARE(lvwph->m_clipItem->y(), 375.);
1189 QCOMPARE(lvwph->m_clipItem->clip(), false);
1190 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1191 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1192 QCOMPARE(lvwph->contentY(), 375.);
1193 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1194 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1195 QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1196 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1198 scrollToTop();
1200 QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1201 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1202 verifyItem(0, 50., 190., false, "Agressive", false);
1203 verifyItem(1, 240., 165., false, "Regular", false);
1204 verifyItem(2, 405., 140., false, "Agressive", false);
1205 verifyItem(3, 545., 240., true, "Regular", true);
1206 verifyItem(4, 785., 390., true, "Mild", true);
1207 QCOMPARE(lvwph->m_minYExtent, 305.);
1208 QCOMPARE(lvwph->m_clipItem->y(), -305.);
1209 QCOMPARE(lvwph->m_clipItem->clip(), false);
1210 QCOMPARE(lvwph->m_headerItem->y(), -305.);
1211 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1212 QCOMPARE(lvwph->contentY(), -305.);
1213 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1214 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1217 void testInsertItemsAtBottom()
1219 scrollToBottom();
1221 QVERIFY(lvwph->isAtYEnd());
1223 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1224 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
1226 QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1227 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
1228 verifyItem(0, -588., 390., true, "Bold", true);
1229 verifyItem(1, -198, 350., false, QString(), true);
1230 verifyItem(2, 152, 390., false, "Lazy", false);
1231 verifyItem(3, 542, 165., true, "Regular", true);
1232 verifyItem(4, 707, 140., true, "Agressive", true);
1233 QCOMPARE(lvwph->m_minYExtent, 41.);
1234 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
1235 QCOMPARE(lvwph->m_clipItem->clip(), false);
1236 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1237 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1238 QCOMPARE(lvwph->contentY(), 1458.);
1239 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1240 QVERIFY(!lvwph->isAtYEnd());
1241 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1242 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
1243 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1245 scrollToBottom();
1247 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1248 QCOMPARE(lvwph->m_firstVisibleIndex, 4);
1249 verifyItem(0, -503., 350., true, QString(), true);
1250 verifyItem(1, -153, 390., false, "Lazy", true);
1251 verifyItem(2, 237, 165., false, "Regular", false);
1252 verifyItem(3, 402, 140., false, "Agressive", false);
1253 QCOMPARE(lvwph->m_minYExtent, -165.);
1254 QCOMPARE(lvwph->m_clipItem->y(), 1763.);
1255 QCOMPARE(lvwph->m_clipItem->clip(), false);
1256 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1257 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1258 QCOMPARE(lvwph->contentY(), 1763.);
1259 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1260 QVERIFY(lvwph->isAtYEnd());
1261 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1262 QCOMPARE(section(lvwph->m_topSectionItem), QString("Lazy"));
1263 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1266 void testInsertItemAtTop()
1268 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1270 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1271 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1272 verifyItem(0, 50., 115., false, "Agressive", false);
1273 verifyItem(1, 165., 150., false, QString(), false);
1274 verifyItem(2, 315., 240., false, "Regular", false);
1275 verifyItem(3, 555., 390., true, "Mild", true);
1276 QCOMPARE(lvwph->m_minYExtent, 0.);
1277 QCOMPARE(lvwph->m_clipItem->y(), 0.);
1278 QCOMPARE(lvwph->m_clipItem->clip(), false);
1279 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1280 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1281 QCOMPARE(lvwph->contentY(), 0.);
1282 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1283 QVERIFY(lvwph->isAtYBeginning());
1284 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1287 void testInsertItem10SmallItemsAtTopWhenAtBottom()
1289 scrollToBottom();
1291 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1292 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1293 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1294 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Regular"));
1295 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Regular"));
1296 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Regular"));
1297 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1298 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1299 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Regular"));
1300 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1302 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1303 QCOMPARE(lvwph->m_firstVisibleIndex, 13);
1304 verifyItem(0, -588., 390., true, "Bold", true);
1305 verifyItem(1, -198, 350., false, QString(), true);
1306 verifyItem(2, 152, 390., false, "Lazy", false);
1307 QCOMPARE(lvwph->m_minYExtent, 12230./3.);
1308 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
1309 QCOMPARE(lvwph->m_clipItem->clip(), false);
1310 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1311 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1312 QCOMPARE(lvwph->contentY(), 1458.);
1313 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1314 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1315 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
1316 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1318 changeContentY(-1700);
1320 QTRY_COMPARE(lvwph->m_visibleItems.count(), 10);
1321 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
1322 verifyItem(0, -323., 75., true, QString(), true);
1323 verifyItem(1, -248., 115., true, "Regular", true);
1324 verifyItem(2, -133., 75., true, QString(), true);
1325 verifyItem(3, -58., 75., false, QString(), true);
1326 verifyItem(4, 17., 115., false, "Agressive", false);
1327 verifyItem(5, 132., 75., false, QString(), true);
1328 verifyItem(6, 207., 75., false, QString(), true);
1329 verifyItem(7, 282., 150., false, QString(), true);
1330 verifyItem(8, 432., 240., false, "Regular", false);
1331 QCOMPARE(lvwph->m_minYExtent, 980.5);
1332 QCOMPARE(lvwph->m_clipItem->y(), -192.);
1333 QCOMPARE(lvwph->m_clipItem->clip(), true);
1334 QCOMPARE(lvwph->m_headerItem->y(), -242.);
1335 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1336 QCOMPARE(lvwph->contentY(), -242.);
1337 QCOMPARE(lvwph->m_headerItemShownHeight, 50.);
1338 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1339 QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1340 QCOMPARE(lvwph->m_topSectionItem->y(), -23.);
1343 void testRemoveItemsAtTop()
1345 QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 2));
1347 QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
1348 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1349 verifyItem(0, 50., 390., false, "Mild", false);
1350 verifyItem(1, 440., 390., false, "Bold", false);
1351 QCOMPARE(lvwph->m_minYExtent, 0.);
1352 QCOMPARE(lvwph->m_clipItem->y(), 0.);
1353 QCOMPARE(lvwph->m_clipItem->clip(), false);
1354 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1355 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1356 QCOMPARE(lvwph->contentY(), 0.);
1357 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1358 QVERIFY(lvwph->isAtYBeginning());
1359 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1362 void testRemoveNonCreatedItemsAtTopWhenAtBottom()
1364 scrollToBottom();
1366 QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 2));
1368 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1369 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1370 verifyItem(0, -588., 390., true, "Bold", true);
1371 verifyItem(1, -198, 350., false, QString(), true);
1372 verifyItem(2, 152, 390., false, "Lazy", false);
1373 QCOMPARE(lvwph->m_minYExtent, -1330./3.);
1374 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
1375 QCOMPARE(lvwph->m_clipItem->clip(), false);
1376 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1377 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1378 QCOMPARE(lvwph->contentY(), 1458.);
1379 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1380 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1381 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
1382 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1385 void testRemoveLastItemsAtBottom()
1387 scrollToBottom();
1389 QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 4), Q_ARG(QVariant, 2));
1391 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1392 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1393 verifyItem(0, -478., 240., true, "Regular", true);
1394 verifyItem(1, -238, 390., false, "Mild", true);
1395 verifyItem(2, 152, 390., false, "Bold", false);
1396 QCOMPARE(lvwph->m_minYExtent, 150.);
1397 QCOMPARE(lvwph->m_clipItem->y(), 718.);
1398 QCOMPARE(lvwph->m_clipItem->clip(), false);
1399 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1400 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1401 QCOMPARE(lvwph->contentY(), 718.);
1402 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1403 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1404 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1405 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1408 void testRemoveItemOutOfViewport()
1410 changeContentY(520);
1412 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1413 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1414 verifyItem(0, -280., 240., true, "Regular", true);
1415 verifyItem(1, -40, 390., false, "Mild", true);
1416 verifyItem(2, 350, 390., false, "Bold", false);
1417 verifyItem(3, 740, 350., true, QString(), true);
1418 QCOMPARE(lvwph->m_minYExtent, 152.5);
1419 QCOMPARE(lvwph->m_clipItem->y(), 520.);
1420 QCOMPARE(lvwph->m_clipItem->clip(), false);
1421 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1422 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1423 QCOMPARE(lvwph->contentY(), 520.);
1424 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1425 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1426 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1427 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1429 QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 1), Q_ARG(QVariant, 1));
1431 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1432 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1433 verifyItem(0, -230., 190., true, "Agressive", true);
1434 verifyItem(1, -40, 390., false, "Mild", true);
1435 verifyItem(2, 350, 390., false, "Bold", false);
1436 verifyItem(3, 740, 350., true, QString(), true);
1437 QCOMPARE(lvwph->m_minYExtent, -240.);
1438 QCOMPARE(lvwph->m_clipItem->y(), 520.);
1439 QCOMPARE(lvwph->m_clipItem->clip(), false);
1440 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1441 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1442 QCOMPARE(lvwph->contentY(), 520.);
1443 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1444 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1445 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1446 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1449 void testRemoveFirstOfCategory()
1451 changeContentY(520);
1453 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1454 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1455 verifyItem(0, -280., 240., true, "Regular", true);
1456 verifyItem(1, -40, 390., false, "Mild", true);
1457 verifyItem(2, 350, 390., false, "Bold", false);
1458 verifyItem(3, 740, 350., true, QString(), true);
1459 QCOMPARE(lvwph->m_minYExtent, 152.5);
1460 QCOMPARE(lvwph->m_clipItem->y(), 520.);
1461 QCOMPARE(lvwph->m_clipItem->clip(), false);
1462 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1463 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1464 QCOMPARE(lvwph->contentY(), 520.);
1465 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1466 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1467 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1468 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1470 QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 3), Q_ARG(QVariant, 1));
1472 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1473 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1474 verifyItem(0, -280., 240., true, "Regular", true);
1475 verifyItem(1, -40, 390., false, "Mild", true);
1476 verifyItem(2, 350, 390., false, "Bold", false);
1477 verifyItem(3, 740, 390., true, "Lazy", true);
1478 QCOMPARE(lvwph->m_minYExtent, 162.5);
1479 QCOMPARE(lvwph->m_clipItem->y(), 520.);
1480 QCOMPARE(lvwph->m_clipItem->clip(), false);
1481 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1482 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1483 QCOMPARE(lvwph->contentY(), 520.);
1484 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1485 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1486 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1487 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1490 void testMoveFirstItems()
1492 QMetaObject::invokeMethod(model, "moveItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 1), Q_ARG(QVariant, 1));
1494 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1495 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1496 verifyItem(0, 50., 240., false, "Regular", false);
1497 verifyItem(1, 290., 190., false, "Agressive", false);
1498 verifyItem(2, 480., 390., false, "Mild", false);
1499 QCOMPARE(lvwph->m_minYExtent, 0.);
1500 QCOMPARE(lvwph->m_clipItem->y(), 0.);
1501 QCOMPARE(lvwph->m_clipItem->clip(), false);
1502 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1503 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1504 QCOMPARE(lvwph->contentY(), 0.);
1505 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1506 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1509 void testMoveFirstOutOfVisibleItems()
1511 QMetaObject::invokeMethod(model, "moveItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 4), Q_ARG(QVariant, 1));
1513 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1514 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1515 verifyItem(0, 50., 240., false, "Regular", false);
1516 verifyItem(1, 290., 390., false, "Mild", false);
1517 verifyItem(2, 680., 390., true, "Bold", true);
1518 QCOMPARE(lvwph->m_minYExtent, 0.);
1519 QCOMPARE(lvwph->m_clipItem->y(), 0.);
1520 QCOMPARE(lvwph->m_clipItem->clip(), false);
1521 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1522 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1523 QCOMPARE(lvwph->contentY(), 0.);
1524 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1525 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1528 void testMoveFirstToLastAtBottom()
1530 scrollToBottom();
1532 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1533 QCOMPARE(lvwph->m_firstVisibleIndex, 3);
1534 verifyItem(0, -588., 390., true, "Bold", true);
1535 verifyItem(1, -198, 350., false, QString(), true);
1536 verifyItem(2, 152, 390., false, "Lazy", false);
1537 QCOMPARE(lvwph->m_minYExtent, 310.);
1538 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
1539 QCOMPARE(lvwph->m_clipItem->clip(), false);
1540 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1541 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1542 QCOMPARE(lvwph->contentY(), 1458.);
1543 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1544 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1545 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
1546 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1548 QMetaObject::invokeMethod(model, "moveItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 5), Q_ARG(QVariant, 1));
1550 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1551 QCOMPARE(lvwph->m_firstVisibleIndex, 2);
1552 verifyItem(0, -588., 390., true, "Bold", true);
1553 verifyItem(1, -198, 350., false, QString(), true);
1554 verifyItem(2, 152, 390., false, "Lazy", false);
1555 verifyItem(3, 542, 190., true, "Agressive", true);
1556 QCOMPARE(lvwph->m_minYExtent, -160.);
1557 QCOMPARE(lvwph->m_clipItem->y(), 1458.);
1558 QCOMPARE(lvwph->m_clipItem->clip(), false);
1559 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1560 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1561 QCOMPARE(lvwph->contentY(), 1458.);
1562 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1563 QVERIFY(!lvwph->isAtYEnd());
1564 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1565 QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
1566 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1569 void testChangeSizeVisibleItemNotOnViewport()
1571 changeContentY(490);
1573 QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1574 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1575 verifyItem(0, -440., 190., true, "Agressive", true);
1576 verifyItem(1, -250., 240., true, "Regular", true);
1577 verifyItem(2, -10, 390., false, "Mild", true);
1578 verifyItem(3, 380, 390., false, "Bold", false);
1579 verifyItem(4, 770, 350., true, QString(), true);
1580 QCOMPARE(lvwph->m_minYExtent, 0.);
1581 QCOMPARE(lvwph->m_clipItem->y(), 490.);
1582 QCOMPARE(lvwph->m_clipItem->clip(), false);
1583 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1584 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1585 QCOMPARE(lvwph->contentY(), 490.);
1586 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1587 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1588 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1589 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1591 model->setProperty(1, "size", 100);
1593 QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1594 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1595 verifyItem(0, -340., 190., true, "Agressive", true);
1596 verifyItem(1, -150., 140., true, "Regular", true);
1597 verifyItem(2, -10, 390., false, "Mild", true);
1598 verifyItem(3, 380, 390., false, "Bold", false);
1599 verifyItem(4, 770, 350., true, QString(), true);
1600 QCOMPARE(lvwph->m_minYExtent, -100.);
1601 QCOMPARE(lvwph->m_clipItem->y(), 490.);
1602 QCOMPARE(lvwph->m_clipItem->clip(), false);
1603 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1604 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1605 QCOMPARE(lvwph->contentY(), 490.);
1606 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1607 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1608 QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1609 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1612 void testShowHeaderCloseToTheTop()
1614 changeContentY(375);
1616 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1617 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1618 verifyItem(0, -325., 190., true, "Agressive", true);
1619 verifyItem(1, -135, 240., false, "Regular", true);
1620 verifyItem(2, 105, 390., false, "Mild", false);
1621 verifyItem(3, 495, 390., false, "Bold", false);
1622 QCOMPARE(lvwph->m_minYExtent, 0.);
1623 QCOMPARE(lvwph->m_clipItem->y(), 375.);
1624 QCOMPARE(lvwph->m_clipItem->clip(), false);
1625 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1626 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1627 QCOMPARE(lvwph->contentY(), 375.);
1628 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);;
1629 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1630 QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1631 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1633 lvwph->showHeader();
1635 QTRY_VERIFY(!lvwph->m_headerShowAnimation->isRunning());
1636 QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1637 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1638 verifyItem(0, -375., 190., true, "Agressive", true);
1639 verifyItem(1, -185, 240., false, "Regular", true);
1640 verifyItem(2, 55, 390., false, "Mild", false);
1641 verifyItem(3, 445, 390., false, "Bold", false);
1642 QCOMPARE(lvwph->m_minYExtent, 50.);
1643 QCOMPARE(lvwph->m_clipItem->y(), 375.);
1644 QCOMPARE(lvwph->m_clipItem->clip(), true);
1645 QCOMPARE(lvwph->m_headerItem->y(), 325.);
1646 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1647 QCOMPARE(lvwph->contentY(), 325.);
1648 QCOMPARE(lvwph->m_headerItemShownHeight, 50.);
1649 QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1650 QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1651 QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1653 scrollToTop();
1655 QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1656 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1657 verifyItem(0, 50., 190., false, "Agressive", false);
1658 verifyItem(1, 240., 240., false, "Regular", false);
1659 verifyItem(2, 480., 390., false, "Mild", false);
1660 QCOMPARE(lvwph->m_minYExtent, 50.);
1661 QCOMPARE(lvwph->m_clipItem->y(), -50.);
1662 QCOMPARE(lvwph->m_clipItem->clip(), false);
1663 QCOMPARE(lvwph->m_headerItem->y(), -50.);
1664 QCOMPARE(lvwph->m_headerItem->height(), 50.);
1665 QCOMPARE(lvwph->contentY(), -50.);
1666 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1667 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1670 void testShowHeaderAtBottom()
1672 scrollToBottom();
1674 lvwph->showHeader();
1676 QTRY_VERIFY(!lvwph->m_headerShowAnimation->isRunning());
1677 QVERIFY (lvwph->isAtYEnd());
1680private:
1681 QQuickView *view;
1682 ListViewWithPageHeader *lvwph;
1683 QQuickListModel *model;
1684 QQmlComponent *otherDelegate;
1687QTEST_MAIN(ListViewWithPageHeaderTestSection)
1689#include "listviewwithpageheadertestsection.moc"