1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of Qt Creator.
7 **
8 ** Commercial License Usage
9 ** Licensees holding valid commercial Qt licenses may use this file in
10 ** accordance with the commercial license agreement provided with the
11 ** Software or, alternatively, in accordance with the terms contained in
12 ** a written agreement between you and The Qt Company. For licensing terms
13 ** and conditions see https://www.qt.io/terms-conditions. For further
14 ** information use the contact form at https://www.qt.io/contact-us.
15 **
16 ** GNU General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU
18 ** General Public License version 3 as published by the Free Software
19 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
20 ** included in the packaging of this file. Please review the following
21 ** information to ensure the GNU General Public License requirements will
22 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
23 **
24 ****************************************************************************/
25
26 #include <QtTest>
27 #include <tracing/timelinemodelaggregator.h>
28 #include <tracing/timelineabstractrenderer_p.h>
29
30 using namespace Timeline;
31
32 class DummyRenderer : public TimelineAbstractRenderer {
33 friend class tst_TimelineAbstractRenderer;
34 public:
DummyRenderer()35 DummyRenderer() : TimelineAbstractRenderer(*new TimelineAbstractRendererPrivate) {}
36 };
37
38 class tst_TimelineAbstractRenderer : public QObject
39 {
40 Q_OBJECT
41
42 private slots:
43 void privateCtor();
44 void selectionLocked();
45 void selectedItem();
46 void model();
47 void notes();
48 void zoomer();
49 void dirty();
50 };
51
privateCtor()52 void tst_TimelineAbstractRenderer::privateCtor()
53 {
54 DummyRenderer renderer;
55 QVERIFY(renderer.d_func() != 0);
56 }
57
selectionLocked()58 void tst_TimelineAbstractRenderer::selectionLocked()
59 {
60 TimelineAbstractRenderer renderer;
61 QSignalSpy spy(&renderer, SIGNAL(selectionLockedChanged(bool)));
62 QCOMPARE(spy.count(), 0);
63 QVERIFY(renderer.selectionLocked());
64 renderer.setSelectionLocked(false);
65 QCOMPARE(spy.count(), 1);
66 QVERIFY(!renderer.selectionLocked());
67 renderer.setSelectionLocked(true);
68 QCOMPARE(spy.count(), 2);
69 QVERIFY(renderer.selectionLocked());
70 }
71
selectedItem()72 void tst_TimelineAbstractRenderer::selectedItem()
73 {
74 TimelineAbstractRenderer renderer;
75 QSignalSpy spy(&renderer, SIGNAL(selectedItemChanged(int)));
76 QCOMPARE(spy.count(), 0);
77 QCOMPARE(renderer.selectedItem(), -1);
78 renderer.setSelectedItem(12);
79 QCOMPARE(spy.count(), 1);
80 QCOMPARE(renderer.selectedItem(), 12);
81 }
82
model()83 void tst_TimelineAbstractRenderer::model()
84 {
85 TimelineAbstractRenderer renderer;
86 TimelineModelAggregator aggregator;
87 QSignalSpy spy(&renderer, SIGNAL(modelChanged(TimelineModel*)));
88 QVERIFY(!renderer.modelDirty());
89 QCOMPARE(spy.count(), 0);
90 TimelineModel model(&aggregator);
91 QCOMPARE(renderer.model(), static_cast<TimelineModel *>(0));
92 renderer.setModel(&model);
93 QVERIFY(renderer.modelDirty());
94 QCOMPARE(spy.count(), 1);
95 QCOMPARE(renderer.model(), &model);
96 renderer.setModel(0);
97 QVERIFY(renderer.modelDirty());
98 QCOMPARE(spy.count(), 2);
99 QCOMPARE(renderer.model(), static_cast<TimelineModel *>(0));
100 }
101
notes()102 void tst_TimelineAbstractRenderer::notes()
103 {
104 TimelineAbstractRenderer renderer;
105 QSignalSpy spy(&renderer, SIGNAL(notesChanged(TimelineNotesModel*)));
106 QVERIFY(!renderer.notesDirty());
107 QCOMPARE(spy.count(), 0);
108 TimelineNotesModel notes;
109 QCOMPARE(renderer.notes(), static_cast<TimelineNotesModel *>(0));
110 renderer.setNotes(¬es);
111 QVERIFY(renderer.notesDirty());
112 QCOMPARE(spy.count(), 1);
113 QCOMPARE(renderer.notes(), ¬es);
114 renderer.setNotes(0);
115 QVERIFY(renderer.notesDirty());
116 QCOMPARE(spy.count(), 2);
117 QCOMPARE(renderer.notes(), static_cast<TimelineNotesModel *>(0));
118 }
119
zoomer()120 void tst_TimelineAbstractRenderer::zoomer()
121 {
122 TimelineAbstractRenderer renderer;
123 QSignalSpy spy(&renderer, SIGNAL(zoomerChanged(TimelineZoomControl*)));
124 QCOMPARE(spy.count(), 0);
125 TimelineZoomControl zoomer;
126 QCOMPARE(renderer.zoomer(), static_cast<TimelineZoomControl *>(0));
127 renderer.setZoomer(&zoomer);
128 QCOMPARE(spy.count(), 1);
129 QCOMPARE(renderer.zoomer(), &zoomer);
130 renderer.setZoomer(0);
131 QCOMPARE(spy.count(), 2);
132 QCOMPARE(renderer.zoomer(), static_cast<TimelineZoomControl *>(0));
133 }
134
dirty()135 void tst_TimelineAbstractRenderer::dirty()
136 {
137 DummyRenderer renderer;
138 QVERIFY(!renderer.modelDirty());
139 QVERIFY(!renderer.notesDirty());
140 QVERIFY(!renderer.rowHeightsDirty());
141
142 renderer.setModelDirty();
143 QVERIFY(renderer.modelDirty());
144 renderer.setNotesDirty();
145 QVERIFY(renderer.notesDirty());
146 renderer.setRowHeightsDirty();
147 QVERIFY(renderer.rowHeightsDirty());
148
149 renderer.updatePaintNode(0, 0);
150 QVERIFY(!renderer.modelDirty());
151 QVERIFY(!renderer.notesDirty());
152 QVERIFY(!renderer.rowHeightsDirty());
153 }
154
155 QTEST_MAIN(tst_TimelineAbstractRenderer)
156
157 #include "tst_timelineabstractrenderer.moc"
158