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/>.
20#include <QGuiApplication>
22#include <QtQml/qqml.h>
23#include <QStringListModel>
26#include <private/qquickitem_p.h>
28#include "verticaljournal.h"
30class HeightModel : public QAbstractListModel {
32 QHash<int, QByteArray> roleNames() const override
34 QHash<int, QByteArray> roles;
35 roles.insert(Qt::DisplayRole, "modelHeight");
39 int rowCount(const QModelIndex & /*parent*/) const override
41 return m_list.count();
44 QVariant data(const QModelIndex &index, int /*role*/) const override
46 return m_list[index.row()];
49 QStringList stringList() const
54 void setStringList(const QStringList &list)
61 void addString(const QString& string)
63 beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
70 beginRemoveRows(QModelIndex(), m_list.count() - 1, m_list.count() - 1);
75 void insertString(int index, const QString& string)
77 beginInsertRows(QModelIndex(), index, index);
78 m_list.insert(index, string);
82 void changeString(int i, const QString& string)
85 auto idx = index(i, 0);
86 dataChanged(idx, idx);
93class VerticalJournalTest : public QObject
98 void verifyItem(const VerticalJournal::ViewItem &item, int modelIndex, qreal x, qreal y, bool visible)
100 QTRY_COMPARE(item.m_modelIndex, modelIndex);
101 QTRY_COMPARE(item.x(), x);
102 QTRY_COMPARE(item.y(), y);
103 QTRY_COMPARE(item.height(), model->stringList()[modelIndex].toDouble());
104 QTRY_COMPARE(QQuickItemPrivate::get(item.m_item)->culled, !visible);
107 void checkInitialPositions()
109 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
110 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 5);
111 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
112 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 6);
113 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
114 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
115 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
116 verifyItem(vj->m_columnVisibleItems[1][1], 3, 160, 60, true);
117 verifyItem(vj->m_columnVisibleItems[1][2], 4, 160, 80, true);
118 verifyItem(vj->m_columnVisibleItems[0][1], 5, 0, 110, true);
119 verifyItem(vj->m_columnVisibleItems[1][3], 6, 160, 130, true);
120 verifyItem(vj->m_columnVisibleItems[2][1], 7, 320, 135, true);
121 verifyItem(vj->m_columnVisibleItems[0][2], 8, 0, 190, true);
122 verifyItem(vj->m_columnVisibleItems[2][2], 9, 320, 255, true);
123 verifyItem(vj->m_columnVisibleItems[2][3], 10, 320, 285, true);
124 verifyItem(vj->m_columnVisibleItems[2][4], 11, 320, 315, true);
125 verifyItem(vj->m_columnVisibleItems[1][4], 12, 160, 340, true);
126 verifyItem(vj->m_columnVisibleItems[0][3], 13, 0, 360, true);
127 verifyItem(vj->m_columnVisibleItems[2][5], 14, 320, 390, true);
128 verifyItem(vj->m_columnVisibleItems[1][5], 15, 160, 430, false);
129 verifyItem(vj->m_columnVisibleItems[0][4], 16, 0, 570, false);
130 verifyItem(vj->m_columnVisibleItems[1][6], 17, 160, 570, false);
131 QCOMPARE(vj->implicitHeight(), 970. + 2. * 970. / 18.);
137 view = new QQuickView();
138 view->setResizeMode(QQuickView::SizeRootObjectToView);
140 model = new HeightModel();
141 QStringList heightList;
142 heightList << "100" << "50" << "125" << "10" << "40" << "70" << "200" << "110" << "160" << "20" << "20" << "65" << "80" << "200" << "300" << "130" << "400" << "300" << "500" << "10";
143 model->setStringList(heightList);
145 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/verticaljournaltest.qml"));
148 QTest::qWaitForWindowExposed(view);
149 view->resize(470, 400);
151 vj = static_cast<VerticalJournal*>(view->rootObject()->findChild<QObject*>("vj"));
153 QTRY_COMPARE(vj->width(), 470.);
155 checkInitialPositions();
164 void testWidthResize()
166 view->resize(629, 400);
167 QTRY_COMPARE(vj->width(), 629.);
169 // This is exactly the same block as above as nothing changed, just white space on the right
170 checkInitialPositions();
172 view->resize(630, 400);
174 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 4);
175 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 4);
176 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
177 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 4);
178 QTRY_COMPARE(vj->m_columnVisibleItems[3].count(), 5);
179 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
180 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
181 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
182 verifyItem(vj->m_columnVisibleItems[3][0], 3, 480, 0, true);
183 verifyItem(vj->m_columnVisibleItems[3][1], 4, 480, 20, true);
184 verifyItem(vj->m_columnVisibleItems[1][1], 5, 160, 60, true);
185 verifyItem(vj->m_columnVisibleItems[3][2], 6, 480, 70, true);
186 verifyItem(vj->m_columnVisibleItems[0][1], 7, 0, 110, true);
187 verifyItem(vj->m_columnVisibleItems[2][1], 8, 320, 135, true);
188 verifyItem(vj->m_columnVisibleItems[1][2], 9, 160, 140, true);
189 verifyItem(vj->m_columnVisibleItems[1][3], 10, 160, 170, true);
190 verifyItem(vj->m_columnVisibleItems[1][4], 11, 160, 200, true);
191 verifyItem(vj->m_columnVisibleItems[0][2], 12, 0, 230, true);
192 verifyItem(vj->m_columnVisibleItems[1][5], 13, 160, 275, true);
193 verifyItem(vj->m_columnVisibleItems[3][3], 14, 480, 280, true);
194 verifyItem(vj->m_columnVisibleItems[2][2], 15, 320, 305, true);
195 verifyItem(vj->m_columnVisibleItems[0][3], 16, 0, 320, true);
196 verifyItem(vj->m_columnVisibleItems[2][3], 17, 320, 445, false);
197 verifyItem(vj->m_columnVisibleItems[1][6], 18, 160, 485, false);
198 verifyItem(vj->m_columnVisibleItems[3][4], 19, 480, 590, false);
199 QTRY_COMPARE(vj->implicitHeight(), 985.);
201 view->resize(470, 400);
203 // This is exactly the same block as the first again
204 checkInitialPositions();
207 void testColumnSpacing()
209 vj->setColumnSpacing(11);
211 QTRY_COMPARE(vj->m_needsRelayout, false);
212 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 2);
213 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 7);
214 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
215 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
216 verifyItem(vj->m_columnVisibleItems[1][0], 1, 161, 0, true);
217 verifyItem(vj->m_columnVisibleItems[1][1], 2, 161, 60, true);
218 verifyItem(vj->m_columnVisibleItems[0][1], 3, 0, 110, true);
219 verifyItem(vj->m_columnVisibleItems[0][2], 4, 0, 130, true);
220 verifyItem(vj->m_columnVisibleItems[0][3], 5, 0, 180, true);
221 verifyItem(vj->m_columnVisibleItems[1][2], 6, 161, 195, true);
222 verifyItem(vj->m_columnVisibleItems[0][4], 7, 0, 260, true);
223 verifyItem(vj->m_columnVisibleItems[0][5], 8, 0, 380, true);
224 verifyItem(vj->m_columnVisibleItems[1][3], 9, 161, 405, false);
225 verifyItem(vj->m_columnVisibleItems[1][4], 10, 161, 435, false);
226 verifyItem(vj->m_columnVisibleItems[1][5], 11, 161, 465, false);
227 verifyItem(vj->m_columnVisibleItems[1][6], 12, 161, 540, false);
228 verifyItem(vj->m_columnVisibleItems[0][6], 13, 0, 550, false);
229 QCOMPARE(vj->implicitHeight(), 750. + 6. * 750. / 14.);
231 vj->setColumnSpacing(10);
232 QTRY_COMPARE(vj->m_needsRelayout, false);
234 // This is exactly the same block as the first again
235 checkInitialPositions();
238 void testRowSpacing()
240 vj->setRowSpacing(11);
242 QTRY_COMPARE(vj->m_needsRelayout, false);
243 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
244 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 5);
245 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
246 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 6);
247 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
248 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
249 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
250 verifyItem(vj->m_columnVisibleItems[1][1], 3, 160, 61, true);
251 verifyItem(vj->m_columnVisibleItems[1][2], 4, 160, 82, true);
252 verifyItem(vj->m_columnVisibleItems[0][1], 5, 0, 111, true);
253 verifyItem(vj->m_columnVisibleItems[1][3], 6, 160, 133, true);
254 verifyItem(vj->m_columnVisibleItems[2][1], 7, 320, 136, true);
255 verifyItem(vj->m_columnVisibleItems[0][2], 8, 0, 192, true);
256 verifyItem(vj->m_columnVisibleItems[2][2], 9, 320, 257, true);
257 verifyItem(vj->m_columnVisibleItems[2][3], 10, 320, 288, true);
258 verifyItem(vj->m_columnVisibleItems[2][4], 11, 320, 319, true);
259 verifyItem(vj->m_columnVisibleItems[1][4], 12, 160, 344, true);
260 verifyItem(vj->m_columnVisibleItems[0][3], 13, 0, 363, true);
261 verifyItem(vj->m_columnVisibleItems[2][5], 14, 320, 395, true);
262 verifyItem(vj->m_columnVisibleItems[1][5], 15, 160, 435, false);
263 verifyItem(vj->m_columnVisibleItems[0][4], 16, 0, 574, false);
264 verifyItem(vj->m_columnVisibleItems[1][6], 17, 160, 576, false);
265 QCOMPARE(vj->implicitHeight(), 974. + 2. * 974. / 18.);
267 vj->setRowSpacing(10);
268 QTRY_COMPARE(vj->m_needsRelayout, false);
270 // This is exactly the same block as the first again
271 checkInitialPositions();
274 void testDelegateCreationRanges()
276 vj->setDisplayMarginBeginning(-200);
277 vj->setDisplayMarginEnd(-(vj->height() - view->height()));
279 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
280 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 4);
281 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 4);
282 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 6);
283 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, false);
284 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, false);
285 verifyItem(vj->m_columnVisibleItems[1][0], 4, 160, 80, false);
286 verifyItem(vj->m_columnVisibleItems[0][1], 5, 0, 110, false);
287 verifyItem(vj->m_columnVisibleItems[1][1], 6, 160, 130, true);
288 verifyItem(vj->m_columnVisibleItems[2][1], 7, 320, 135, true);
289 verifyItem(vj->m_columnVisibleItems[0][2], 8, 0, 190, true);
290 verifyItem(vj->m_columnVisibleItems[2][2], 9, 320, 255, true);
291 verifyItem(vj->m_columnVisibleItems[2][3], 10, 320, 285, true);
292 verifyItem(vj->m_columnVisibleItems[2][4], 11, 320, 315, true);
293 verifyItem(vj->m_columnVisibleItems[1][2], 12, 160, 340, true);
294 verifyItem(vj->m_columnVisibleItems[0][3], 13, 0, 360, true);
295 verifyItem(vj->m_columnVisibleItems[2][5], 14, 320, 390, true);
296 verifyItem(vj->m_columnVisibleItems[1][3], 15, 160, 430, false);
297 QCOMPARE(vj->implicitHeight(), 690. + 4. * 690. / 16.);
299 vj->setDisplayMarginBeginning(0);
300 vj->setDisplayMarginEnd(0);
302 // This is exactly the same block as the first again
303 checkInitialPositions();
307 void testColumnWidthChange()
309 vj->setColumnWidth(200);
310 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 2);
311 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 7);
312 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
313 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
314 verifyItem(vj->m_columnVisibleItems[1][0], 1, 210, 0, true);
315 verifyItem(vj->m_columnVisibleItems[1][1], 2, 210, 60, true);
316 verifyItem(vj->m_columnVisibleItems[0][1], 3, 0, 110, true);
317 verifyItem(vj->m_columnVisibleItems[0][2], 4, 0, 130, true);
318 verifyItem(vj->m_columnVisibleItems[0][3], 5, 0, 180, true);
319 verifyItem(vj->m_columnVisibleItems[1][2], 6, 210, 195, true);
320 verifyItem(vj->m_columnVisibleItems[0][4], 7, 0, 260, true);
321 verifyItem(vj->m_columnVisibleItems[0][5], 8, 0, 380, true);
322 verifyItem(vj->m_columnVisibleItems[1][3], 9, 210, 405, false);
323 verifyItem(vj->m_columnVisibleItems[1][4], 10, 210, 435, false);
324 verifyItem(vj->m_columnVisibleItems[1][5], 11, 210, 465, false);
325 verifyItem(vj->m_columnVisibleItems[1][6], 12, 210, 540, false);
326 verifyItem(vj->m_columnVisibleItems[0][6], 13, 0, 550, false);
327 QCOMPARE(vj->implicitHeight(), 750. + 6. * 750. / 14.);
329 vj->setColumnWidth(150);
331 // This is exactly the same block as the first again
332 checkInitialPositions();
335 void testChangeModel()
337 HeightModel *model2 = new HeightModel();
339 list2 << "100" << "50" << "25" << "25" << "50" << "50";
340 model2->setStringList(list2);
341 vj->setModel(model2);
345 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
346 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 1);
347 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 2);
348 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 3);
349 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
350 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
351 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
352 verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
353 verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
354 verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
357 void testModelReset()
359 QStringList heightList;
360 heightList << "100" << "50" << "50" << "30";
361 model->setStringList(heightList);
363 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
364 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 1);
365 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 2);
366 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 1);
367 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
368 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
369 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
370 verifyItem(vj->m_columnVisibleItems[1][1], 3, 160, 60, true);
373 void testModelRemoveLastNonVisible()
377 // This is the same as checkInitialPositions but
378 // with a different implicitHeight since there's an item less
380 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
381 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 5);
382 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
383 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 6);
384 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
385 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
386 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
387 verifyItem(vj->m_columnVisibleItems[1][1], 3, 160, 60, true);
388 verifyItem(vj->m_columnVisibleItems[1][2], 4, 160, 80, true);
389 verifyItem(vj->m_columnVisibleItems[0][1], 5, 0, 110, true);
390 verifyItem(vj->m_columnVisibleItems[1][3], 6, 160, 130, true);
391 verifyItem(vj->m_columnVisibleItems[2][1], 7, 320, 135, true);
392 verifyItem(vj->m_columnVisibleItems[0][2], 8, 0, 190, true);
393 verifyItem(vj->m_columnVisibleItems[2][2], 9, 320, 255, true);
394 verifyItem(vj->m_columnVisibleItems[2][3], 10, 320, 285, true);
395 verifyItem(vj->m_columnVisibleItems[2][4], 11, 320, 315, true);
396 verifyItem(vj->m_columnVisibleItems[1][4], 12, 160, 340, true);
397 verifyItem(vj->m_columnVisibleItems[0][3], 13, 0, 360, true);
398 verifyItem(vj->m_columnVisibleItems[2][5], 14, 320, 390, true);
399 verifyItem(vj->m_columnVisibleItems[1][5], 15, 160, 430, false);
400 verifyItem(vj->m_columnVisibleItems[0][4], 16, 0, 570, false);
401 verifyItem(vj->m_columnVisibleItems[1][6], 17, 160, 570, false);
402 QTRY_COMPARE(vj->implicitHeight(), 970. + 1. * 970. / 18.);
405 void testModelAppendRemoveLast()
407 HeightModel *model2 = new HeightModel();
409 list2 << "100" << "50" << "25" << "25" << "50" << "50";
410 model2->setStringList(list2);
411 vj->setModel(model2);
415 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
416 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 1);
417 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 2);
418 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 3);
419 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
420 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
421 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
422 verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
423 verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
424 verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
426 model2->addString("75");
428 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
429 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 2);
430 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 2);
431 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 3);
432 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
433 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
434 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
435 verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
436 verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
437 verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
438 verifyItem(vj->m_columnVisibleItems[0][1], 6, 0, 110, true);
440 model2->addString("50");
441 model2->addString("50");
443 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
444 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 2);
445 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 3);
446 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 4);
447 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
448 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
449 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
450 verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
451 verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
452 verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
453 verifyItem(vj->m_columnVisibleItems[0][1], 6, 0, 110, true);
454 verifyItem(vj->m_columnVisibleItems[1][2], 7, 160, 120, true);
455 verifyItem(vj->m_columnVisibleItems[2][3], 8, 320, 130, true);
457 model2->removeLast();
459 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
460 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 2);
461 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 3);
462 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 3);
463 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
464 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
465 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
466 verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
467 verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
468 verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
469 verifyItem(vj->m_columnVisibleItems[0][1], 6, 0, 110, true);
470 verifyItem(vj->m_columnVisibleItems[1][2], 7, 160, 120, true);
473 void testNegativeHeight()
475 QQuickItemPrivate::get(vj)->anchors()->resetFill();
478 QStringList heightList;
479 heightList << "100" << "50" << "50" << "30";
480 model->setStringList(heightList);
482 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
483 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 0);
484 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 0);
485 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 0);
486 QTRY_COMPARE(vj->implicitHeight(), 0.);
489 void testNegativeDelegateCreationRange()
491 vj->setDisplayMarginBeginning(0);
492 vj->setDisplayMarginEnd(-(vj->height() + 100));
494 QStringList heightList;
495 heightList << "100" << "50" << "50" << "30";
496 model->setStringList(heightList);
498 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
499 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 0);
500 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 0);
501 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 0);
502 QTRY_COMPARE(vj->implicitHeight(), 0.);
505 void testInsertItem()
507 // Remove a few items from the end so the verifyItem list is smaller
508 for (int i = 0; i < 12; ++i)
511 model->insertString(0, "200");
513 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
514 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 2);
515 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 4);
516 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 3);
517 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
518 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
519 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
520 verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 60, true);
521 verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 110, true);
522 verifyItem(vj->m_columnVisibleItems[1][2], 5, 160, 130, true);
523 verifyItem(vj->m_columnVisibleItems[1][3], 6, 160, 180, true);
524 verifyItem(vj->m_columnVisibleItems[2][2], 7, 320, 195, true);
525 verifyItem(vj->m_columnVisibleItems[0][1], 8, 0, 210, true);
526 QCOMPARE(vj->implicitHeight(), 395.);
529 void testChangeItem()
531 // Remove a few items from the end so the verifyItem list is smaller
532 for (int i = 0; i < 11; ++i)
535 model->changeString(0, "200");
537 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
538 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 2);
539 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 5);
540 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 2);
541 verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
542 verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
543 verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
544 verifyItem(vj->m_columnVisibleItems[1][1], 3, 160, 60, true);
545 verifyItem(vj->m_columnVisibleItems[1][2], 4, 160, 80, true);
546 verifyItem(vj->m_columnVisibleItems[1][3], 5, 160, 130, true);
547 verifyItem(vj->m_columnVisibleItems[2][1], 6, 320, 135, true);
548 verifyItem(vj->m_columnVisibleItems[0][1], 7, 0, 210, true);
549 verifyItem(vj->m_columnVisibleItems[1][4], 8, 160, 210, true);
550 QCOMPARE(vj->implicitHeight(), 370.);
559QTEST_MAIN(VerticalJournalTest)
561#include "verticaljournaltest.moc"
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list