@@ -0,0 +1,1676 @@
2+ * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
17+#include "listviewwithpageheader.h"
19+#include <QAbstractItemModel>
23+#include <private/qquicklistmodel_p.h>
24+#include <private/qquickanimation_p.h>
25+#include <private/qquickitem_p.h>
27+class ListViewWithPageHeaderTest : public QObject
32+ void verifyItem(int visibleIndex, qreal pos, qreal height, bool culled, const QString §ionHeader, bool sectionHeaderCulled)
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);
45+ void changeContentY(qreal change)
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);
55+ const qreal jump = -25;
56+ while (lvwph->contentY() + jump > dest) {
57+ lvwph->setContentY(lvwph->contentY() + jump);
61+ lvwph->setContentY(dest);
67+ const qreal jump = -25;
68+ while (!lvwph->isAtYBeginning()) {
69+ if (lvwph->contentY() + jump > -lvwph->minYExtent()) {
70+ lvwph->setContentY(lvwph->contentY() + jump);
72+ lvwph->setContentY(lvwph->contentY() - 1);
78+ void scrollToBottom()
80+ const qreal jump = 25;
81+ while (!lvwph->isAtYEnd()) {
82+ if (lvwph->contentY() + lvwph->height() + jump < lvwph->contentHeight()) {
83+ lvwph->setContentY(lvwph->contentY() + jump);
85+ lvwph->setContentY(lvwph->contentY() + 1);
91+ void verifyInitialTopPosition()
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);
108+ QString section(QQuickItem *item)
110+ return item ? QQmlEngine::contextForObject(item)->parentContext()->contextProperty(QLatin1String("section")).toString() : QString();
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*>();
129+ QVERIFY(otherDelegate);
131+ QTest::qWaitForWindowExposed(view);
133+ verifyInitialTopPosition();
141+ void testCreationDeletion()
143+ // Nothing, init/cleanup already tests this
146+ void testDrag1PixelUp()
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);
164+ void testHeaderDetachDragDown()
166+ QTest::mousePress(view, Qt::LeftButton, Qt::NoModifier, QPoint(0, 0));
168+ QTest::mouseMove(view, QPoint(0, 5));
170+ QTest::mouseMove(view, QPoint(0, 10));
172+ QTest::mouseMove(view, QPoint(0, 15));
174+ QTest::mouseMove(view, QPoint(0, 20));
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();
195+ void testDrag375PixelUp()
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.);
216+ void testDrag520PixelUp()
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.);
237+ void testDragHeaderUpThenShow()
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.);
276+ void testDragHeaderUpThenShowWithoutHidingTotally()
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);
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);
310+ void testPositionAtBeginningIndex0Visible()
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();
335+ void testPositionAtBeginningIndex0NotVisible()
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();
360+ void testIndex0GrowOnScreen()
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);
379+ void testIndex0GrowOffScreen()
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.);
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);
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);
451+ void testIndex0GrowNotCreated()
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.);
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);
507+ void testShowHideShowHeaderAtBottom()
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.);
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.);
579+// void testChangeDelegateAtBottom()
582+// QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
583+// QCOMPARE(lvwph->m_firstVisibleIndex, 3);
584+// verifyItem(0, -588., 390., true);
585+// verifyItem(1, -198, 350., false);
586+// verifyItem(2, 152, 390., false);
587+// QCOMPARE(lvwph->m_minYExtent, 0.);
588+// QCOMPARE(lvwph->m_clipItem->y(), 1458.);
589+// QCOMPARE(lvwph->m_clipItem->clip(), false);
590+// QCOMPARE(lvwph->m_headerItem->y(), 0.);
591+// QCOMPARE(lvwph->m_headerItem->height(), 50.);
592+// QCOMPARE(lvwph->contentY(), 1458.);
593+// QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
595+// lvwph->setDelegate(otherDelegate);
597+// QTRY_COMPARE(lvwph->m_visibleItems.count(), 6);
598+// QCOMPARE(lvwph->m_firstVisibleIndex, 0);
599+// verifyItem(0, 50., 35., false);
600+// verifyItem(1, 85, 35., false);
601+// verifyItem(2, 120, 35., false);
602+// verifyItem(3, 155, 35., false);
603+// verifyItem(4, 190, 35., false);
604+// verifyItem(5, 225, 35., false);
605+// QCOMPARE(lvwph->m_minYExtent, 0.);
606+// QCOMPARE(lvwph->m_clipItem->y(), 0.);
607+// QCOMPARE(lvwph->m_clipItem->clip(), false);
608+// QCOMPARE(lvwph->m_headerItem->y(), 0.);
609+// QCOMPARE(lvwph->m_headerItem->height(), 50.);
610+// QCOMPARE(lvwph->contentY(), 0.);
611+// QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
614+ void testGrowHeaderAtTop()
616+ lvwph->m_headerItem->setHeight(100);
618+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
619+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
620+ verifyItem(0, 100., 190., false, "Agressive", false);
621+ verifyItem(1, 290., 240., false, "Regular", false);
622+ verifyItem(2, 530., 390., false, "Mild", false);
623+ QCOMPARE(lvwph->m_minYExtent, 0.);
624+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
625+ QCOMPARE(lvwph->m_clipItem->clip(), false);
626+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
627+ QCOMPARE(lvwph->m_headerItem->height(), 100.);
628+ QCOMPARE(lvwph->contentY(), 0.);
629+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
630+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
633+ void testGrowHeaderAtBottom()
636+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
637+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
638+ verifyItem(0, -588., 390., true, "Bold", true);
639+ verifyItem(1, -198, 350., false, QString(), true);
640+ verifyItem(2, 152, 390., false, "Lazy", false);
641+ QCOMPARE(lvwph->m_minYExtent, 310.);
642+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
643+ QCOMPARE(lvwph->m_clipItem->clip(), false);
644+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
645+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
646+ QCOMPARE(lvwph->contentY(), 1458.);
647+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
648+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
649+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
650+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
652+ lvwph->m_headerItem->setHeight(100);
654+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
655+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
656+ verifyItem(0, -588., 390., true, "Bold", true);
657+ verifyItem(1, -198, 350., false, QString(), true);
658+ verifyItem(2, 152, 390., false, "Lazy", false);
659+ QCOMPARE(lvwph->m_minYExtent, 360.);
660+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
661+ QCOMPARE(lvwph->m_clipItem->clip(), false);
662+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
663+ QCOMPARE(lvwph->m_headerItem->height(), 100.);
664+ QCOMPARE(lvwph->contentY(), 1458.);
665+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
666+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
667+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
668+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
670+ changeContentY(-30);
672+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
673+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
674+ verifyItem(0, -588., 390., true, "Bold", true);
675+ verifyItem(1, -198, 350., false, QString(), true);
676+ verifyItem(2, 152, 390., false, "Lazy", false);
677+ QCOMPARE(lvwph->m_minYExtent, 360.);
678+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
679+ QCOMPARE(lvwph->m_clipItem->clip(), true);
680+ QCOMPARE(lvwph->m_headerItem->y(), 1358.);
681+ QCOMPARE(lvwph->m_headerItem->height(), 100.);
682+ QCOMPARE(lvwph->contentY(), 1428.);
683+ QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
684+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
685+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
686+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
690+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
691+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
692+ verifyItem(0, 100., 190., false, "Agressive", false);
693+ verifyItem(1, 290., 240., false, "Regular", false);
694+ verifyItem(2, 530., 390., false, "Mild", false);
695+ QCOMPARE(lvwph->m_minYExtent, 50.);
696+ QCOMPARE(lvwph->m_clipItem->y(), -50.);
697+ QCOMPARE(lvwph->m_clipItem->clip(), false);
698+ QCOMPARE(lvwph->m_headerItem->y(), -50.);
699+ QCOMPARE(lvwph->m_headerItem->height(), 100.);
700+ QCOMPARE(lvwph->contentY(), -50.);
701+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
702+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
705+ void testGrowHeaderPartlyShown()
708+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
709+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
710+ verifyItem(0, -588., 390., true, "Bold", true);
711+ verifyItem(1, -198, 350., false, QString(), true);
712+ verifyItem(2, 152, 390., false, "Lazy", false);
713+ QCOMPARE(lvwph->m_minYExtent, 310.);
714+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
715+ QCOMPARE(lvwph->m_clipItem->clip(), false);
716+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
717+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
718+ QCOMPARE(lvwph->contentY(), 1458.);
719+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
720+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
721+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
722+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
724+ changeContentY(-30);
726+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
727+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
728+ verifyItem(0, -588., 390., true, "Bold", true);
729+ verifyItem(1, -198, 350., false, QString(), true);
730+ verifyItem(2, 152, 390., false, "Lazy", false);
731+ QCOMPARE(lvwph->m_minYExtent, 310.);
732+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
733+ QCOMPARE(lvwph->m_clipItem->clip(), true);
734+ QCOMPARE(lvwph->m_headerItem->y(), 1408.);
735+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
736+ QCOMPARE(lvwph->contentY(), 1428.);
737+ QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
738+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
739+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
740+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
742+ lvwph->m_headerItem->setHeight(100);
744+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
745+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
746+ verifyItem(0, -588., 390., true, "Bold", true);
747+ verifyItem(1, -198, 350., false, QString(), true);
748+ verifyItem(2, 152, 390., false, "Lazy", false);
749+ QCOMPARE(lvwph->m_minYExtent, 310.);
750+ QCOMPARE(lvwph->m_clipItem->y(), 1508.);
751+ QCOMPARE(lvwph->m_clipItem->clip(), true);
752+ QCOMPARE(lvwph->m_headerItem->y(), 1408.);
753+ QCOMPARE(lvwph->m_headerItem->height(), 100.);
754+ QCOMPARE(lvwph->contentY(), 1428.);
755+ QCOMPARE(lvwph->m_headerItemShownHeight, 80.);
756+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
757+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
758+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
762+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
763+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
764+ verifyItem(0, 100., 190., false, "Agressive", false);
765+ verifyItem(1, 290., 240., false, "Regular", false);
766+ verifyItem(2, 530., 390., false, "Mild", false);
767+ QCOMPARE(lvwph->m_minYExtent, 0.);
768+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
769+ QCOMPARE(lvwph->m_clipItem->clip(), false);
770+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
771+ QCOMPARE(lvwph->m_headerItem->height(), 100.);
772+ QCOMPARE(lvwph->contentY(), 0.);
773+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
774+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
777+ void testShrinkHeaderMoreThanPartlyShown()
780+ lvwph->m_headerItem->setHeight(100);
781+ changeContentY(-30);
783+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
784+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
785+ verifyItem(0, -588., 390., true, "Bold", true);
786+ verifyItem(1, -198, 350., false, QString(), true);
787+ verifyItem(2, 152, 390., false, "Lazy", false);
788+ QCOMPARE(lvwph->m_minYExtent, 360.);
789+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
790+ QCOMPARE(lvwph->m_clipItem->clip(), true);
791+ QCOMPARE(lvwph->m_headerItem->y(), 1358.);
792+ QCOMPARE(lvwph->m_headerItem->height(), 100.);
793+ QCOMPARE(lvwph->contentY(), 1428.);
794+ QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
795+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
796+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
797+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
799+ lvwph->m_headerItem->setHeight(50);
801+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
802+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
803+ verifyItem(0, -588., 390., true, "Bold", true);
804+ verifyItem(1, -198, 350., false, QString(), true);
805+ verifyItem(2, 152, 390., false, "Lazy", false);
806+ QCOMPARE(lvwph->m_minYExtent, 340.);
807+ QCOMPARE(lvwph->m_clipItem->y(), 1428.);
808+ QCOMPARE(lvwph->m_clipItem->clip(), false);
809+ QCOMPARE(lvwph->m_headerItem->y(), 1358.);
810+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
811+ QCOMPARE(lvwph->contentY(), 1428.);
812+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
813+ QTRY_VERIFY(lvwph->isAtYEnd());
814+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
815+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
816+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
820+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
821+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
822+ verifyItem(0, 50., 190., false, "Agressive", false);
823+ verifyItem(1, 240., 240., false, "Regular", false);
824+ verifyItem(2, 480., 390., false, "Mild", false);
825+ QCOMPARE(lvwph->m_minYExtent, 30.);
826+ QCOMPARE(lvwph->m_clipItem->y(), -30.);
827+ QCOMPARE(lvwph->m_clipItem->clip(), false);
828+ QCOMPARE(lvwph->m_headerItem->y(), -30.);
829+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
830+ QCOMPARE(lvwph->contentY(), -30.);
831+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
832+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
835+ void testSetEmptyHeaderAtTop()
837+ lvwph->setHeader(nullptr);
839+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
840+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
841+ verifyItem(0, 0., 190., false, "Agressive", false);
842+ verifyItem(1, 190., 240., false, "Regular", false);
843+ verifyItem(2, 430., 390., false, "Mild", false);
844+ QCOMPARE(lvwph->m_minYExtent, 0.);
845+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
846+ QCOMPARE(lvwph->m_clipItem->clip(), false);
847+ QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
848+ QCOMPARE(lvwph->contentY(), 0.);
849+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
850+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
853+ void testSetEmptyHeaderAtBottom()
856+ lvwph->setHeader(nullptr);
858+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
859+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
860+ verifyItem(0, -588., 390., true, "Bold", true);
861+ verifyItem(1, -198, 350., false, QString(), true);
862+ verifyItem(2, 152, 390., false, "Lazy", false);
863+ QCOMPARE(lvwph->m_minYExtent, 260.);
864+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
865+ QCOMPARE(lvwph->m_clipItem->clip(), false);
866+ QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
867+ QCOMPARE(lvwph->contentY(), 1458.);
868+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
869+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
870+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
871+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
875+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
876+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
877+ verifyItem(0, 0., 190., false, "Agressive", false);
878+ verifyItem(1, 190., 240., false, "Regular", false);
879+ verifyItem(2, 430., 390., false, "Mild", false);
880+ QCOMPARE(lvwph->m_minYExtent, -50.);
881+ QCOMPARE(lvwph->m_clipItem->y(), 50.);
882+ QCOMPARE(lvwph->m_clipItem->clip(), false);
883+ QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
884+ QCOMPARE(lvwph->contentY(), 50.);
885+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
886+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
889+ void testSetEmptyHeaderWhenPartlyShownClipped()
892+ changeContentY(-30);
893+ lvwph->setHeader(nullptr);
895+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
896+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
897+ verifyItem(0, -588., 390., true, "Bold", true);
898+ verifyItem(1, -198, 350., false, QString(), true);
899+ verifyItem(2, 152, 390., false, "Lazy", false);
900+ QCOMPARE(lvwph->m_minYExtent, 290.);
901+ QCOMPARE(lvwph->m_clipItem->y(), 1428.);
902+ QCOMPARE(lvwph->m_clipItem->clip(), false);
903+ QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
904+ QCOMPARE(lvwph->contentY(), 1428.);
905+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
906+ QTRY_VERIFY(lvwph->isAtYEnd());
907+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
908+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
909+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
913+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
914+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
915+ verifyItem(0, 0., 190., false, "Agressive", false);
916+ verifyItem(1, 190., 240., false, "Regular", false);
917+ verifyItem(2, 430., 390., false, "Mild", false);
918+ QCOMPARE(lvwph->m_minYExtent, -20.);
919+ QCOMPARE(lvwph->m_clipItem->y(), 20.);
920+ QCOMPARE(lvwph->m_clipItem->clip(), false);
921+ QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
922+ QCOMPARE(lvwph->contentY(), 20.);
923+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
924+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
927+ void testSetEmptyHeaderWhenPartlyShownNotClipped()
930+ lvwph->setHeader(nullptr);
932+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
933+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
934+ verifyItem(0, -30., 190., false, "Agressive", true);
935+ verifyItem(1, 160., 240., false, "Regular", false);
936+ verifyItem(2, 400., 390., false, "Mild", false);
937+ QCOMPARE(lvwph->m_minYExtent, 0.);
938+ QCOMPARE(lvwph->m_clipItem->y(), 30.);
939+ QCOMPARE(lvwph->m_clipItem->clip(), false);
940+ QCOMPARE(lvwph->m_headerItem, (QQuickItem*)nullptr);
941+ QCOMPARE(lvwph->contentY(), 30.);
942+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
943+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
944+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
945+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
948+ void testSetNullDelegate()
950+ lvwph->setDelegate(nullptr);
952+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 0);
953+ QCOMPARE(lvwph->m_firstVisibleIndex, -1);
954+ QCOMPARE(lvwph->m_minYExtent, 0.);
955+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
956+ QCOMPARE(lvwph->m_clipItem->clip(), false);
957+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
958+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
959+ QCOMPARE(lvwph->contentY(), 0.);
960+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
961+ QTRY_COMPARE(lvwph->contentHeight(), 50.);
962+ QVERIFY(lvwph->isAtYBeginning());
963+ QVERIFY(lvwph->isAtYEnd());
964+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
967+ void testInsertItems()
969+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
970+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
972+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
973+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
974+ verifyItem(0, 50., 190., false, "Agressive", false);
975+ verifyItem(1, 240., 165., false, "Regular", false);
976+ verifyItem(2, 405., 140., false, "Agressive", false);
977+ verifyItem(3, 545., 240., true, "Regular", true);
978+ verifyItem(4, 785., 390., true, "Mild", true);
979+ QCOMPARE(lvwph->m_minYExtent, 0.);
980+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
981+ QCOMPARE(lvwph->m_clipItem->clip(), false);
982+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
983+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
984+ QCOMPARE(lvwph->contentY(), 0.);
985+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
986+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
989+ void testInsertItemsStealSectionItem()
991+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
993+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
994+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
995+ verifyItem(0, 50., 190., false, "Agressive", false);
996+ verifyItem(1, 240., 165., false, "Regular", false);
997+ verifyItem(2, 405., 200., false, QString(), true);
998+ verifyItem(3, 605., 390., true, "Mild", true);
999+ QCOMPARE(lvwph->m_minYExtent, 0.);
1000+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
1001+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1002+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1003+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1004+ QCOMPARE(lvwph->contentY(), 0.);
1005+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1006+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1010+ void testInsertItemsOnNotShownPosition()
1012+ changeContentY(800);
1014+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1015+ QTRY_COMPARE(lvwph->m_firstVisibleIndex, 2);
1016+ verifyItem(0, -320., 390., false, "Mild", true);
1017+ verifyItem(1, 70, 390., false, "Bold", false);
1018+ verifyItem(2, 460, 350., false, QString(), false);
1019+ verifyItem(3, 810, 390., true, "Lazy", true);
1020+ QCOMPARE(lvwph->m_minYExtent, 970./3.);
1021+ QCOMPARE(lvwph->m_clipItem->y(), 800.);
1022+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1023+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1024+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1025+ QCOMPARE(lvwph->contentY(), 800.);
1026+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1027+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1028+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1029+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1031+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1032+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
1034+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1035+ QCOMPARE(lvwph->m_firstVisibleIndex, 4);
1036+ verifyItem(0, -320., 390., false, "Mild", true);
1037+ verifyItem(1, 70, 390., false, "Bold", false);
1038+ verifyItem(2, 460, 350., false, QString(), false);
1039+ verifyItem(3, 810, 390., true, "Lazy", true);
1040+ QCOMPARE(lvwph->m_minYExtent, 1090.);
1041+ QCOMPARE(lvwph->m_clipItem->y(), 800.);
1042+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1043+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1044+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1045+ QCOMPARE(lvwph->contentY(), 800.);
1046+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1047+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1048+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1049+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1053+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1054+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1055+ verifyItem(0, 50., 190., false, "Agressive", false);
1056+ verifyItem(1, 240., 165., false, "Regular", false);
1057+ verifyItem(2, 405., 140., false, "Agressive", false);
1058+ verifyItem(3, 545., 240., true, "Regular", true);
1059+ verifyItem(4, 785., 390., true, "Mild", true);
1060+ QCOMPARE(lvwph->m_minYExtent, 305.);
1061+ QCOMPARE(lvwph->m_clipItem->y(), -305.);
1062+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1063+ QCOMPARE(lvwph->m_headerItem->y(), -305.);
1064+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1065+ QCOMPARE(lvwph->contentY(), -305.);
1066+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1067+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1070+ void testInsertItemsAtEndOfViewport()
1072+ changeContentY(60);
1074+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1075+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1076+ verifyItem(0, -10., 190., false, "Agressive", true);
1077+ verifyItem(1, 180., 240., false, "Regular", false);
1078+ verifyItem(2, 420., 390., false, "Mild", false);
1079+ verifyItem(3, 810., 390., true, "Bold", true);
1080+ QCOMPARE(lvwph->m_minYExtent, 0.);
1081+ QCOMPARE(lvwph->m_clipItem->y(), 60.);
1082+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1083+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1084+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1085+ QCOMPARE(lvwph->contentY(), 60.);
1086+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1087+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1088+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
1089+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1091+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 3), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1092+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 3), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
1094+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1095+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1096+ verifyItem(0, -10., 190., false, "Agressive", true);
1097+ verifyItem(1, 180., 240., false, "Regular", false);
1098+ verifyItem(2, 420., 390., false, "Mild", false);
1099+ verifyItem(3, 810., 165., true, "Regular", true);
1100+ QCOMPARE(lvwph->m_minYExtent, 0.);
1101+ QCOMPARE(lvwph->m_clipItem->y(), 60.);
1102+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1103+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1104+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1105+ QCOMPARE(lvwph->contentY(), 60.);
1106+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1107+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1108+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Agressive"));
1109+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1112+ void testInsertItemsBeforeValidIndex()
1114+ changeContentY(520);
1116+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1117+ QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1118+ verifyItem(0, -280., 240., true, "Regular", true);
1119+ verifyItem(1, -40, 390., false, "Mild", true);
1120+ verifyItem(2, 350, 390., false, "Bold", false);
1121+ verifyItem(3, 740, 350., true, QString(), true);
1122+ QCOMPARE(lvwph->m_minYExtent, 152.5);
1123+ QCOMPARE(lvwph->m_clipItem->y(), 520.);
1124+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1125+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1126+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1127+ QCOMPARE(lvwph->contentY(), 520.);
1128+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1129+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1130+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1131+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1133+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1134+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
1136+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1137+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
1138+ verifyItem(0, -280., 240., true, "Regular", true);
1139+ verifyItem(1, -40, 390., false, "Mild", true);
1140+ verifyItem(2, 350, 390., false, "Bold", false);
1141+ verifyItem(3, 740, 350., true, QString(), true);
1142+ QCOMPARE(lvwph->m_minYExtent, 837.5);
1143+ QCOMPARE(lvwph->m_clipItem->y(), 520.);
1144+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1145+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1146+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1147+ QCOMPARE(lvwph->contentY(), 520.);
1148+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1149+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1150+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1151+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1154+ void testInsertItemsBeforeViewport()
1156+ changeContentY(375);
1158+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1159+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1160+ verifyItem(0, -325., 190., true, "Agressive", true);
1161+ verifyItem(1, -135, 240., false, "Regular", true);
1162+ verifyItem(2, 105, 390., false, "Mild", false);
1163+ verifyItem(3, 495, 390., false, "Bold", false);
1164+ QCOMPARE(lvwph->m_minYExtent, 0.);
1165+ QCOMPARE(lvwph->m_clipItem->y(), 375.);
1166+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1167+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1168+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1169+ QCOMPARE(lvwph->contentY(), 375.);
1170+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1171+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1172+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1173+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1175+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1176+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
1178+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1179+ QCOMPARE(lvwph->m_firstVisibleIndex, 2);
1180+ verifyItem(0, -275., 140., true, "Agressive", true);
1181+ verifyItem(1, -135., 240., false, "Regular", true);
1182+ verifyItem(2, 105, 390., false, "Mild", false);
1183+ verifyItem(3, 495, 390., false, "Bold", false);
1184+ QCOMPARE(lvwph->m_minYExtent, 530.);
1185+ QCOMPARE(lvwph->m_clipItem->y(), 375.);
1186+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1187+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1188+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1189+ QCOMPARE(lvwph->contentY(), 375.);
1190+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1191+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1192+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1193+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1197+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1198+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1199+ verifyItem(0, 50., 190., false, "Agressive", false);
1200+ verifyItem(1, 240., 165., false, "Regular", false);
1201+ verifyItem(2, 405., 140., false, "Agressive", false);
1202+ verifyItem(3, 545., 240., true, "Regular", true);
1203+ verifyItem(4, 785., 390., true, "Mild", true);
1204+ QCOMPARE(lvwph->m_minYExtent, 305.);
1205+ QCOMPARE(lvwph->m_clipItem->y(), -305.);
1206+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1207+ QCOMPARE(lvwph->m_headerItem->y(), -305.);
1208+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1209+ QCOMPARE(lvwph->contentY(), -305.);
1210+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1211+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1214+ void testInsertItemsAtBottom()
1218+ QVERIFY(lvwph->isAtYEnd());
1220+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
1221+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
1223+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1224+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
1225+ verifyItem(0, -588., 390., true, "Bold", true);
1226+ verifyItem(1, -198, 350., false, QString(), true);
1227+ verifyItem(2, 152, 390., false, "Lazy", false);
1228+ verifyItem(3, 542, 165., true, "Regular", true);
1229+ verifyItem(4, 707, 140., true, "Agressive", true);
1230+ QCOMPARE(lvwph->m_minYExtent, 310.);
1231+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
1232+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1233+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1234+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1235+ QCOMPARE(lvwph->contentY(), 1458.);
1236+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1237+ QVERIFY(!lvwph->isAtYEnd());
1238+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1239+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
1240+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1244+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1245+ QCOMPARE(lvwph->m_firstVisibleIndex, 4);
1246+ verifyItem(0, -503., 350., true, QString(), true);
1247+ verifyItem(1, -153, 390., false, "Lazy", true);
1248+ verifyItem(2, 237, 165., false, "Regular", false);
1249+ verifyItem(3, 402, 140., false, "Agressive", false);
1250+ QCOMPARE(lvwph->m_minYExtent, -165.);
1251+ QCOMPARE(lvwph->m_clipItem->y(), 1763.);
1252+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1253+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1254+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1255+ QCOMPARE(lvwph->contentY(), 1763.);
1256+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1257+ QVERIFY(lvwph->isAtYEnd());
1258+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1259+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Lazy"));
1260+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1263+ void testInsertItemAtTop()
1265+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1267+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1268+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1269+ verifyItem(0, 50., 115., false, "Agressive", false);
1270+ verifyItem(1, 165., 150., false, QString(), false);
1271+ verifyItem(2, 315., 240., false, "Regular", false);
1272+ verifyItem(3, 555., 390., true, "Mild", true);
1273+ QCOMPARE(lvwph->m_minYExtent, 0.);
1274+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
1275+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1276+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1277+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1278+ QCOMPARE(lvwph->contentY(), 0.);
1279+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1280+ QVERIFY(lvwph->isAtYBeginning());
1281+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1284+ void testInsertItem10SmallItemsAtTopWhenAtBottom()
1288+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1289+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1290+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1291+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Regular"));
1292+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Regular"));
1293+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Regular"));
1294+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
1295+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 75), Q_ARG(QVariant, "Agressive"));
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"));
1299+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1300+ QCOMPARE(lvwph->m_firstVisibleIndex, 13);
1301+ verifyItem(0, -588., 390., true, "Bold", true);
1302+ verifyItem(1, -198, 350., false, QString(), true);
1303+ verifyItem(2, 152, 390., false, "Lazy", false);
1304+ QCOMPARE(lvwph->m_minYExtent, 12230./3.);
1305+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
1306+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1307+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1308+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1309+ QCOMPARE(lvwph->contentY(), 1458.);
1310+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1311+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1312+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
1313+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1315+ changeContentY(-1700);
1317+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 10);
1318+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
1319+ verifyItem(0, -323., 75., true, QString(), true);
1320+ verifyItem(1, -248., 115., true, "Regular", true);
1321+ verifyItem(2, -133., 75., true, QString(), true);
1322+ verifyItem(3, -58., 75., false, QString(), true);
1323+ verifyItem(4, 17., 115., false, "Agressive", false);
1324+ verifyItem(5, 132., 75., false, QString(), true);
1325+ verifyItem(6, 207., 75., false, QString(), true);
1326+ verifyItem(7, 282., 150., false, QString(), true);
1327+ verifyItem(8, 432., 240., false, "Regular", false);
1328+ QCOMPARE(lvwph->m_minYExtent, 980.5);
1329+ QCOMPARE(lvwph->m_clipItem->y(), -192.);
1330+ QCOMPARE(lvwph->m_clipItem->clip(), true);
1331+ QCOMPARE(lvwph->m_headerItem->y(), -242.);
1332+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1333+ QCOMPARE(lvwph->contentY(), -242.);
1334+ QCOMPARE(lvwph->m_headerItemShownHeight, 50.);
1335+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1336+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1337+ QCOMPARE(lvwph->m_topSectionItem->y(), -23.);
1340+ void testRemoveItemsAtTop()
1342+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 2));
1344+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
1345+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1346+ verifyItem(0, 50., 390., false, "Mild", false);
1347+ verifyItem(1, 440., 390., false, "Bold", false);
1348+ QCOMPARE(lvwph->m_minYExtent, 0.);
1349+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
1350+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1351+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1352+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1353+ QCOMPARE(lvwph->contentY(), 0.);
1354+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1355+ QVERIFY(lvwph->isAtYBeginning());
1356+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1359+ void testRemoveNonCreatedItemsAtTopWhenAtBottom()
1363+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 2));
1365+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1366+ QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1367+ verifyItem(0, -588., 390., true, "Bold", true);
1368+ verifyItem(1, -198, 350., false, QString(), true);
1369+ verifyItem(2, 152, 390., false, "Lazy", false);
1370+ QCOMPARE(lvwph->m_minYExtent, -1330./3.);
1371+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
1372+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1373+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1374+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1375+ QCOMPARE(lvwph->contentY(), 1458.);
1376+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1377+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1378+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
1379+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1382+ void testRemoveLastItemsAtBottom()
1386+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 4), Q_ARG(QVariant, 2));
1388+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1389+ QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1390+ verifyItem(0, -478., 240., true, "Regular", true);
1391+ verifyItem(1, -238, 390., false, "Mild", true);
1392+ verifyItem(2, 152, 390., false, "Bold", false);
1393+ QCOMPARE(lvwph->m_minYExtent, 150.);
1394+ QCOMPARE(lvwph->m_clipItem->y(), 718.);
1395+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1396+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1397+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1398+ QCOMPARE(lvwph->contentY(), 718.);
1399+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1400+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1401+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1402+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1405+ void testRemoveItemOutOfViewport()
1407+ changeContentY(520);
1409+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1410+ QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1411+ verifyItem(0, -280., 240., true, "Regular", true);
1412+ verifyItem(1, -40, 390., false, "Mild", true);
1413+ verifyItem(2, 350, 390., false, "Bold", false);
1414+ verifyItem(3, 740, 350., true, QString(), true);
1415+ QCOMPARE(lvwph->m_minYExtent, 152.5);
1416+ QCOMPARE(lvwph->m_clipItem->y(), 520.);
1417+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1418+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1419+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1420+ QCOMPARE(lvwph->contentY(), 520.);
1421+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1422+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1423+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1424+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1426+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 1), Q_ARG(QVariant, 1));
1428+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1429+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1430+ verifyItem(0, -230., 190., true, "Agressive", true);
1431+ verifyItem(1, -40, 390., false, "Mild", true);
1432+ verifyItem(2, 350, 390., false, "Bold", false);
1433+ verifyItem(3, 740, 350., true, QString(), true);
1434+ QCOMPARE(lvwph->m_minYExtent, -240.);
1435+ QCOMPARE(lvwph->m_clipItem->y(), 520.);
1436+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1437+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1438+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1439+ QCOMPARE(lvwph->contentY(), 520.);
1440+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1441+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1442+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1443+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1446+ void testRemoveFirstOfCategory()
1448+ changeContentY(520);
1450+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1451+ QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1452+ verifyItem(0, -280., 240., true, "Regular", true);
1453+ verifyItem(1, -40, 390., false, "Mild", true);
1454+ verifyItem(2, 350, 390., false, "Bold", false);
1455+ verifyItem(3, 740, 350., true, QString(), true);
1456+ QCOMPARE(lvwph->m_minYExtent, 152.5);
1457+ QCOMPARE(lvwph->m_clipItem->y(), 520.);
1458+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1459+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1460+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1461+ QCOMPARE(lvwph->contentY(), 520.);
1462+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1463+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1464+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1465+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1467+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 3), Q_ARG(QVariant, 1));
1469+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1470+ QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1471+ verifyItem(0, -280., 240., true, "Regular", true);
1472+ verifyItem(1, -40, 390., false, "Mild", true);
1473+ verifyItem(2, 350, 390., false, "Bold", false);
1474+ verifyItem(3, 740, 390., true, "Lazy", true);
1475+ QCOMPARE(lvwph->m_minYExtent, 152.5);
1476+ QCOMPARE(lvwph->m_clipItem->y(), 520.);
1477+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1478+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1479+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1480+ QCOMPARE(lvwph->contentY(), 520.);
1481+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1482+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1483+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1484+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1487+ void testMoveFirstItems()
1489+ QMetaObject::invokeMethod(model, "moveItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 1), Q_ARG(QVariant, 1));
1491+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1492+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1493+ verifyItem(0, 50., 240., false, "Regular", false);
1494+ verifyItem(1, 290., 190., false, "Agressive", false);
1495+ verifyItem(2, 480., 390., false, "Mild", false);
1496+ QCOMPARE(lvwph->m_minYExtent, 0.);
1497+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
1498+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1499+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1500+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1501+ QCOMPARE(lvwph->contentY(), 0.);
1502+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1503+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1506+ void testMoveFirstOutOfVisibleItems()
1508+ QMetaObject::invokeMethod(model, "moveItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 4), Q_ARG(QVariant, 1));
1510+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1511+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1512+ verifyItem(0, 50., 240., false, "Regular", false);
1513+ verifyItem(1, 290., 390., false, "Mild", false);
1514+ verifyItem(2, 680., 390., true, "Bold", true);
1515+ QCOMPARE(lvwph->m_minYExtent, 0.);
1516+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
1517+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1518+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1519+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1520+ QCOMPARE(lvwph->contentY(), 0.);
1521+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1522+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1525+ void testMoveFirstToLastAtBottom()
1529+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1530+ QCOMPARE(lvwph->m_firstVisibleIndex, 3);
1531+ verifyItem(0, -588., 390., true, "Bold", true);
1532+ verifyItem(1, -198, 350., false, QString(), true);
1533+ verifyItem(2, 152, 390., false, "Lazy", false);
1534+ QCOMPARE(lvwph->m_minYExtent, 310.);
1535+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
1536+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1537+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1538+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1539+ QCOMPARE(lvwph->contentY(), 1458.);
1540+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1541+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1542+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
1543+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1545+ QMetaObject::invokeMethod(model, "moveItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 5), Q_ARG(QVariant, 1));
1547+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1548+ QCOMPARE(lvwph->m_firstVisibleIndex, 2);
1549+ verifyItem(0, -588., 390., true, "Bold", true);
1550+ verifyItem(1, -198, 350., false, QString(), true);
1551+ verifyItem(2, 152, 390., false, "Lazy", false);
1552+ verifyItem(3, 542, 190., true, "Agressive", true);
1553+ QCOMPARE(lvwph->m_minYExtent, -200./3.);
1554+ QCOMPARE(lvwph->m_clipItem->y(), 1458.);
1555+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1556+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1557+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1558+ QCOMPARE(lvwph->contentY(), 1458.);
1559+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1560+ QVERIFY(!lvwph->isAtYEnd());
1561+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1562+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
1563+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1566+ void testChangeSizeVisibleItemNotOnViewport()
1568+ changeContentY(490);
1570+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1571+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1572+ verifyItem(0, -440., 190., true, "Agressive", true);
1573+ verifyItem(1, -250., 240., true, "Regular", true);
1574+ verifyItem(2, -10, 390., false, "Mild", true);
1575+ verifyItem(3, 380, 390., false, "Bold", false);
1576+ verifyItem(4, 770, 350., true, QString(), true);
1577+ QCOMPARE(lvwph->m_minYExtent, 0.);
1578+ QCOMPARE(lvwph->m_clipItem->y(), 490.);
1579+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1580+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1581+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1582+ QCOMPARE(lvwph->contentY(), 490.);
1583+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1584+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1585+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1586+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1588+ model->setProperty(1, "size", 100);
1590+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1591+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1592+ verifyItem(0, -340., 190., true, "Agressive", true);
1593+ verifyItem(1, -150., 140., true, "Regular", true);
1594+ verifyItem(2, -10, 390., false, "Mild", true);
1595+ verifyItem(3, 380, 390., false, "Bold", false);
1596+ verifyItem(4, 770, 350., true, QString(), true);
1597+ QCOMPARE(lvwph->m_minYExtent, -100.);
1598+ QCOMPARE(lvwph->m_clipItem->y(), 490.);
1599+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1600+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1601+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1602+ QCOMPARE(lvwph->contentY(), 490.);
1603+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1604+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1605+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Mild"));
1606+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1609+ void testShowHeaderCloseToTheTop()
1611+ changeContentY(375);
1613+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1614+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1615+ verifyItem(0, -325., 190., true, "Agressive", true);
1616+ verifyItem(1, -135, 240., false, "Regular", true);
1617+ verifyItem(2, 105, 390., false, "Mild", false);
1618+ verifyItem(3, 495, 390., false, "Bold", false);
1619+ QCOMPARE(lvwph->m_minYExtent, 0.);
1620+ QCOMPARE(lvwph->m_clipItem->y(), 375.);
1621+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1622+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1623+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1624+ QCOMPARE(lvwph->contentY(), 375.);
1625+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);;
1626+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1627+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1628+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1630+ lvwph->showHeader();
1632+ QTRY_VERIFY(!lvwph->m_headerShowAnimation->isRunning());
1633+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1634+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1635+ verifyItem(0, -375., 190., true, "Agressive", true);
1636+ verifyItem(1, -185, 240., false, "Regular", true);
1637+ verifyItem(2, 55, 390., false, "Mild", false);
1638+ verifyItem(3, 445, 390., false, "Bold", false);
1639+ QCOMPARE(lvwph->m_minYExtent, 50.);
1640+ QCOMPARE(lvwph->m_clipItem->y(), 375.);
1641+ QCOMPARE(lvwph->m_clipItem->clip(), true);
1642+ QCOMPARE(lvwph->m_headerItem->y(), 325.);
1643+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1644+ QCOMPARE(lvwph->contentY(), 325.);
1645+ QCOMPARE(lvwph->m_headerItemShownHeight, 50.);
1646+ QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1647+ QCOMPARE(section(lvwph->m_topSectionItem), QString("Regular"));
1648+ QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
1652+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
1653+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1654+ verifyItem(0, 50., 190., false, "Agressive", false);
1655+ verifyItem(1, 240., 240., false, "Regular", false);
1656+ verifyItem(2, 480., 390., false, "Mild", false);
1657+ QCOMPARE(lvwph->m_minYExtent, 50.);
1658+ QCOMPARE(lvwph->m_clipItem->y(), -50.);
1659+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1660+ QCOMPARE(lvwph->m_headerItem->y(), -50.);
1661+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1662+ QCOMPARE(lvwph->contentY(), -50.);
1663+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1664+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1669+ ListViewWithPageHeader *lvwph;
1670+ QQuickListModel *model;
1671+ QQmlComponent *otherDelegate;
1674+QTEST_MAIN(ListViewWithPageHeaderTest)
1676+#include "listviewwithpageheadertestsection.moc"