##// END OF EJS Templates
tst_qpieseries::clickedSignal: adding more stuff to test pie layouting at the same time
Jani Honkonen -
r1245:52001d4a4266
parent child
Show More
@@ -1,345 +1,402
1 /****************************************************************************
1 /****************************************************************************
2 **
2 **
3 ** Copyright (C) 2012 Digia Plc
3 ** Copyright (C) 2012 Digia Plc
4 ** All rights reserved.
4 ** All rights reserved.
5 ** For any questions to Digia, please use contact form at http://qt.digia.com
5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 **
6 **
7 ** This file is part of the Qt Commercial Charts Add-on.
7 ** This file is part of the Qt Commercial Charts Add-on.
8 **
8 **
9 ** $QT_BEGIN_LICENSE$
9 ** $QT_BEGIN_LICENSE$
10 ** Licensees holding valid Qt Commercial licenses may use this file in
10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 ** accordance with the Qt Commercial License Agreement provided with the
11 ** accordance with the Qt Commercial License Agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia.
13 ** a written agreement between you and Digia.
14 **
14 **
15 ** If you have questions regarding the use of this file, please use
15 ** If you have questions regarding the use of this file, please use
16 ** contact form at http://qt.digia.com
16 ** contact form at http://qt.digia.com
17 ** $QT_END_LICENSE$
17 ** $QT_END_LICENSE$
18 **
18 **
19 ****************************************************************************/
19 ****************************************************************************/
20
20
21 #include <QtTest/QtTest>
21 #include <QtTest/QtTest>
22 #include <qchartview.h>
22 #include <qchartview.h>
23 #include <qchart.h>
23 #include <qchart.h>
24 #include <qpieseries.h>
24 #include <qpieseries.h>
25 #include <qpieslice.h>
25 #include <qpieslice.h>
26 #include <qpiemodelmapper.h>
26 #include <qpiemodelmapper.h>
27 #include <QStandardItemModel>
27 #include <QStandardItemModel>
28 #include <tst_definitions.h>
28 #include <tst_definitions.h>
29
29
30 QTCOMMERCIALCHART_USE_NAMESPACE
30 QTCOMMERCIALCHART_USE_NAMESPACE
31
31
32 Q_DECLARE_METATYPE(QPieSlice*)
32 Q_DECLARE_METATYPE(QPieSlice*)
33
33
34 class tst_qpieseries : public QObject
34 class tst_qpieseries : public QObject
35 {
35 {
36 Q_OBJECT
36 Q_OBJECT
37
37
38 public slots:
38 public slots:
39 void initTestCase();
39 void initTestCase();
40 void cleanupTestCase();
40 void cleanupTestCase();
41 void init();
41 void init();
42 void cleanup();
42 void cleanup();
43
43
44 private slots:
44 private slots:
45 void construction();
45 void construction();
46 void append();
46 void append();
47 void insert();
47 void insert();
48 void remove();
48 void remove();
49 void calculatedValues();
49 void calculatedValues();
50 void clickedSignal();
50 void clickedSignal();
51 void hoverSignal();
51 void hoverSignal();
52
52
53 private:
53 private:
54 void verifyCalculatedData(const QPieSeries &series, bool *ok);
54 void verifyCalculatedData(const QPieSeries &series, bool *ok);
55
55
56 private:
56 private:
57
57
58 };
58 };
59
59
60 void tst_qpieseries::initTestCase()
60 void tst_qpieseries::initTestCase()
61 {
61 {
62 qRegisterMetaType<QPieSlice*>("QPieSlice*");
62 qRegisterMetaType<QPieSlice*>("QPieSlice*");
63 }
63 }
64
64
65 void tst_qpieseries::cleanupTestCase()
65 void tst_qpieseries::cleanupTestCase()
66 {
66 {
67 }
67 }
68
68
69 void tst_qpieseries::init()
69 void tst_qpieseries::init()
70 {
70 {
71
71
72 }
72 }
73
73
74 void tst_qpieseries::cleanup()
74 void tst_qpieseries::cleanup()
75 {
75 {
76
76
77 }
77 }
78
78
79 void tst_qpieseries::construction()
79 void tst_qpieseries::construction()
80 {
80 {
81 // verify default values
81 // verify default values
82 QPieSeries s;
82 QPieSeries s;
83 QVERIFY(s.type() == QAbstractSeries::SeriesTypePie);
83 QVERIFY(s.type() == QAbstractSeries::SeriesTypePie);
84 QVERIFY(s.count() == 0);
84 QVERIFY(s.count() == 0);
85 QVERIFY(s.isEmpty());
85 QVERIFY(s.isEmpty());
86 QCOMPARE(s.sum(), 0.0);
86 QCOMPARE(s.sum(), 0.0);
87 QCOMPARE(s.horizontalPosition(), 0.5);
87 QCOMPARE(s.horizontalPosition(), 0.5);
88 QCOMPARE(s.verticalPosition(), 0.5);
88 QCOMPARE(s.verticalPosition(), 0.5);
89 QCOMPARE(s.pieSize(), 0.7);
89 QCOMPARE(s.pieSize(), 0.7);
90 QCOMPARE(s.pieStartAngle(), 0.0);
90 QCOMPARE(s.pieStartAngle(), 0.0);
91 QCOMPARE(s.pieEndAngle(), 360.0);
91 QCOMPARE(s.pieEndAngle(), 360.0);
92 }
92 }
93
93
94 void tst_qpieseries::append()
94 void tst_qpieseries::append()
95 {
95 {
96 QPieSeries s;
96 QPieSeries s;
97
97
98 // append pointer
98 // append pointer
99 QPieSlice *slice1 = 0;
99 QPieSlice *slice1 = 0;
100 QVERIFY(!s.append(slice1));
100 QVERIFY(!s.append(slice1));
101 slice1 = new QPieSlice("slice 1", 1);
101 slice1 = new QPieSlice("slice 1", 1);
102 QVERIFY(s.append(slice1));
102 QVERIFY(s.append(slice1));
103 QVERIFY(!s.append(slice1));
103 QVERIFY(!s.append(slice1));
104 QCOMPARE(s.count(), 1);
104 QCOMPARE(s.count(), 1);
105
105
106 // append pointer list
106 // append pointer list
107 QList<QPieSlice *> list;
107 QList<QPieSlice *> list;
108 QVERIFY(!s.append(list));
108 QVERIFY(!s.append(list));
109 list << (QPieSlice *) 0;
109 list << (QPieSlice *) 0;
110 QVERIFY(!s.append(list));
110 QVERIFY(!s.append(list));
111 list.clear();
111 list.clear();
112 list << new QPieSlice("slice 2", 2);
112 list << new QPieSlice("slice 2", 2);
113 list << new QPieSlice("slice 3", 3);
113 list << new QPieSlice("slice 3", 3);
114 QVERIFY(s.append(list));
114 QVERIFY(s.append(list));
115 QVERIFY(!s.append(list));
115 QVERIFY(!s.append(list));
116 QCOMPARE(s.count(), 3);
116 QCOMPARE(s.count(), 3);
117
117
118 // append operator
118 // append operator
119 s << new QPieSlice("slice 4", 4);
119 s << new QPieSlice("slice 4", 4);
120 s << slice1; // fails because already added
120 s << slice1; // fails because already added
121 QCOMPARE(s.count(), 4);
121 QCOMPARE(s.count(), 4);
122
122
123 // append with params
123 // append with params
124 QPieSlice *slice5 = s.append("slice 5", 5);
124 QPieSlice *slice5 = s.append("slice 5", 5);
125 QVERIFY(slice5 != 0);
125 QVERIFY(slice5 != 0);
126 QCOMPARE(slice5->value(), 5.0);
126 QCOMPARE(slice5->value(), 5.0);
127 QCOMPARE(slice5->label(), QString("slice 5"));
127 QCOMPARE(slice5->label(), QString("slice 5"));
128 QCOMPARE(s.count(), 5);
128 QCOMPARE(s.count(), 5);
129
129
130 // check slices
130 // check slices
131 QVERIFY(!s.isEmpty());
131 QVERIFY(!s.isEmpty());
132 for (int i=0; i<s.count(); i++) {
132 for (int i=0; i<s.count(); i++) {
133 QCOMPARE(s.slices().at(i)->value(), (qreal) i+1);
133 QCOMPARE(s.slices().at(i)->value(), (qreal) i+1);
134 QCOMPARE(s.slices().at(i)->label(), QString("slice ") + QString::number(i+1));
134 QCOMPARE(s.slices().at(i)->label(), QString("slice ") + QString::number(i+1));
135 }
135 }
136 }
136 }
137
137
138 void tst_qpieseries::insert()
138 void tst_qpieseries::insert()
139 {
139 {
140 QPieSeries s;
140 QPieSeries s;
141
141
142 // insert one slice
142 // insert one slice
143 QPieSlice *slice1 = 0;
143 QPieSlice *slice1 = 0;
144 QVERIFY(!s.insert(0, slice1));
144 QVERIFY(!s.insert(0, slice1));
145 slice1 = new QPieSlice("slice 1", 1);
145 slice1 = new QPieSlice("slice 1", 1);
146 QVERIFY(!s.insert(-1, slice1));
146 QVERIFY(!s.insert(-1, slice1));
147 QVERIFY(!s.insert(5, slice1));
147 QVERIFY(!s.insert(5, slice1));
148 QVERIFY(s.insert(0, slice1));
148 QVERIFY(s.insert(0, slice1));
149 QVERIFY(!s.insert(0, slice1));
149 QVERIFY(!s.insert(0, slice1));
150 QCOMPARE(s.count(), 1);
150 QCOMPARE(s.count(), 1);
151
151
152 // add some more slices
152 // add some more slices
153 s.append("slice 2", 2);
153 s.append("slice 2", 2);
154 s.append("slice 4", 4);
154 s.append("slice 4", 4);
155 QCOMPARE(s.count(), 3);
155 QCOMPARE(s.count(), 3);
156
156
157 // insert between slices
157 // insert between slices
158 s.insert(2, new QPieSlice("slice 3", 3));
158 s.insert(2, new QPieSlice("slice 3", 3));
159 QCOMPARE(s.count(), 4);
159 QCOMPARE(s.count(), 4);
160
160
161 // check slices
161 // check slices
162 for (int i=0; i<s.count(); i++) {
162 for (int i=0; i<s.count(); i++) {
163 QCOMPARE(s.slices().at(i)->value(), (qreal) i+1);
163 QCOMPARE(s.slices().at(i)->value(), (qreal) i+1);
164 QCOMPARE(s.slices().at(i)->label(), QString("slice ") + QString::number(i+1));
164 QCOMPARE(s.slices().at(i)->label(), QString("slice ") + QString::number(i+1));
165 }
165 }
166 }
166 }
167
167
168 void tst_qpieseries::remove()
168 void tst_qpieseries::remove()
169 {
169 {
170 QPieSeries s;
170 QPieSeries s;
171
171
172 // add some slices
172 // add some slices
173 QPieSlice *slice1 = s.append("slice 1", 1);
173 QPieSlice *slice1 = s.append("slice 1", 1);
174 QPieSlice *slice2 = s.append("slice 2", 2);
174 QPieSlice *slice2 = s.append("slice 2", 2);
175 QPieSlice *slice3 = s.append("slice 3", 3);
175 QPieSlice *slice3 = s.append("slice 3", 3);
176 QSignalSpy spy1(slice1, SIGNAL(destroyed()));
176 QSignalSpy spy1(slice1, SIGNAL(destroyed()));
177 QSignalSpy spy2(slice2, SIGNAL(destroyed()));
177 QSignalSpy spy2(slice2, SIGNAL(destroyed()));
178 QSignalSpy spy3(slice3, SIGNAL(destroyed()));
178 QSignalSpy spy3(slice3, SIGNAL(destroyed()));
179 QCOMPARE(s.count(), 3);
179 QCOMPARE(s.count(), 3);
180
180
181 // null pointer remove
181 // null pointer remove
182 QVERIFY(!s.remove(0));
182 QVERIFY(!s.remove(0));
183
183
184 // remove first
184 // remove first
185 QVERIFY(s.remove(slice1));
185 QVERIFY(s.remove(slice1));
186 QVERIFY(!s.remove(slice1));
186 QVERIFY(!s.remove(slice1));
187 QCOMPARE(s.count(), 2);
187 QCOMPARE(s.count(), 2);
188 QCOMPARE(s.slices().at(0)->label(), slice2->label());
188 QCOMPARE(s.slices().at(0)->label(), slice2->label());
189
189
190 // remove all
190 // remove all
191 s.clear();
191 s.clear();
192 QVERIFY(s.isEmpty());
192 QVERIFY(s.isEmpty());
193 QVERIFY(s.slices().isEmpty());
193 QVERIFY(s.slices().isEmpty());
194 QCOMPARE(s.count(), 0);
194 QCOMPARE(s.count(), 0);
195
195
196 // check that slices were actually destroyed
196 // check that slices were actually destroyed
197 TRY_COMPARE(spy1.count(), 1);
197 TRY_COMPARE(spy1.count(), 1);
198 TRY_COMPARE(spy2.count(), 1);
198 TRY_COMPARE(spy2.count(), 1);
199 TRY_COMPARE(spy3.count(), 1);
199 TRY_COMPARE(spy3.count(), 1);
200 }
200 }
201
201
202 void tst_qpieseries::calculatedValues()
202 void tst_qpieseries::calculatedValues()
203 {
203 {
204 bool ok;
204 bool ok;
205 QPieSeries s;
205 QPieSeries s;
206
206
207 QPieSlice *slice1 = new QPieSlice("slice 1", 1);
207 QPieSlice *slice1 = new QPieSlice("slice 1", 1);
208 QSignalSpy calculatedDataSpy(slice1, SIGNAL(calculatedDataChanged()));
208 QSignalSpy calculatedDataSpy(slice1, SIGNAL(calculatedDataChanged()));
209
209
210 // add a slice
210 // add a slice
211 s.append(slice1);
211 s.append(slice1);
212 verifyCalculatedData(s, &ok);
212 verifyCalculatedData(s, &ok);
213 if (!ok)
213 if (!ok)
214 return;
214 return;
215 QCOMPARE(calculatedDataSpy.count(), 1);
215 QCOMPARE(calculatedDataSpy.count(), 1);
216
216
217 // add some more slices
217 // add some more slices
218 QList<QPieSlice *> list;
218 QList<QPieSlice *> list;
219 list << new QPieSlice("slice 2", 2);
219 list << new QPieSlice("slice 2", 2);
220 list << new QPieSlice("slice 3", 3);
220 list << new QPieSlice("slice 3", 3);
221 s.append(list);
221 s.append(list);
222 verifyCalculatedData(s, &ok);
222 verifyCalculatedData(s, &ok);
223 if (!ok)
223 if (!ok)
224 return;
224 return;
225 QCOMPARE(calculatedDataSpy.count(), 2);
225 QCOMPARE(calculatedDataSpy.count(), 2);
226
226
227 // remove a slice
227 // remove a slice
228 s.remove(list.first()); // remove slice 2
228 s.remove(list.first()); // remove slice 2
229 verifyCalculatedData(s, &ok);
229 verifyCalculatedData(s, &ok);
230 if (!ok)
230 if (!ok)
231 return;
231 return;
232 QCOMPARE(calculatedDataSpy.count(), 3);
232 QCOMPARE(calculatedDataSpy.count(), 3);
233
233
234 // insert a slice
234 // insert a slice
235 s.insert(0, new QPieSlice("Slice 4", 4));
235 s.insert(0, new QPieSlice("Slice 4", 4));
236 verifyCalculatedData(s, &ok);
236 verifyCalculatedData(s, &ok);
237 if (!ok)
237 if (!ok)
238 return;
238 return;
239 QCOMPARE(calculatedDataSpy.count(), 4);
239 QCOMPARE(calculatedDataSpy.count(), 4);
240
240
241 // modify pie angles
241 // modify pie angles
242 s.setPieStartAngle(-90);
242 s.setPieStartAngle(-90);
243 s.setPieEndAngle(90);
243 s.setPieEndAngle(90);
244 verifyCalculatedData(s, &ok);
244 verifyCalculatedData(s, &ok);
245 if (!ok)
245 if (!ok)
246 return;
246 return;
247 QCOMPARE(calculatedDataSpy.count(), 6);
247 QCOMPARE(calculatedDataSpy.count(), 6);
248
248
249 // clear all
249 // clear all
250 s.clear();
250 s.clear();
251 verifyCalculatedData(s, &ok);
251 verifyCalculatedData(s, &ok);
252 }
252 }
253
253
254 void tst_qpieseries::verifyCalculatedData(const QPieSeries &series, bool *ok)
254 void tst_qpieseries::verifyCalculatedData(const QPieSeries &series, bool *ok)
255 {
255 {
256 *ok = false;
256 *ok = false;
257
257
258 qreal sum = 0;
258 qreal sum = 0;
259 foreach (const QPieSlice *slice, series.slices())
259 foreach (const QPieSlice *slice, series.slices())
260 sum += slice->value();
260 sum += slice->value();
261 QCOMPARE(series.sum(), sum);
261 QCOMPARE(series.sum(), sum);
262
262
263 qreal startAngle = series.pieStartAngle();
263 qreal startAngle = series.pieStartAngle();
264 qreal pieAngleSpan = series.pieEndAngle() - series.pieStartAngle();
264 qreal pieAngleSpan = series.pieEndAngle() - series.pieStartAngle();
265 foreach (const QPieSlice *slice, series.slices()) {
265 foreach (const QPieSlice *slice, series.slices()) {
266 qreal ratio = slice->value() / sum;
266 qreal ratio = slice->value() / sum;
267 qreal sliceSpan = pieAngleSpan * ratio;
267 qreal sliceSpan = pieAngleSpan * ratio;
268 QCOMPARE(slice->startAngle(), startAngle);
268 QCOMPARE(slice->startAngle(), startAngle);
269 QCOMPARE(slice->endAngle(), startAngle + sliceSpan);
269 QCOMPARE(slice->endAngle(), startAngle + sliceSpan);
270 QCOMPARE(slice->percentage(), ratio);
270 QCOMPARE(slice->percentage(), ratio);
271 startAngle += sliceSpan;
271 startAngle += sliceSpan;
272 }
272 }
273
273
274 if (!series.isEmpty())
274 if (!series.isEmpty())
275 QCOMPARE(series.slices().last()->endAngle(), series.pieEndAngle());
275 QCOMPARE(series.slices().last()->endAngle(), series.pieEndAngle());
276
276
277 *ok = true;
277 *ok = true;
278 }
278 }
279
279
280
280
281 void tst_qpieseries::clickedSignal()
281 void tst_qpieseries::clickedSignal()
282 {
282 {
283 // create a pie series
283 // create a pie series
284 QPieSeries *series = new QPieSeries();
284 QPieSeries *series = new QPieSeries();
285 series->setPieSize(1.0);
286 QPieSlice *s1 = series->append("slice 1", 1);
285 QPieSlice *s1 = series->append("slice 1", 1);
287 series->append("slice 2", 2);
286 QPieSlice *s2 = series->append("slice 2", 1);
288 series->append("slice 3", 3);
287 QPieSlice *s3 = series->append("slice 3", 1);
289 QSignalSpy clickSpy1(series, SIGNAL(clicked(QPieSlice*)));
288 QPieSlice *s4 = series->append("slice 4", 1);
289 QSignalSpy clickSpy(series, SIGNAL(clicked(QPieSlice*)));
290
290
291 // add series to the chart
291 // add series to the chart
292 QChartView view(new QChart());
292 QChartView view(new QChart());
293 view.chart()->legend()->setVisible(false);
293 view.chart()->legend()->setVisible(false);
294 view.resize(200, 200);
294 view.resize(200, 200);
295 view.chart()->addSeries(series);
295 view.chart()->addSeries(series);
296 view.show();
296 view.show();
297 QTest::qWaitForWindowShown(&view);
297 QTest::qWaitForWindowShown(&view);
298
298
299 // simulate clicks
299 // if you devide the chart in four equal tiles these
300 // pie rectangle: QRectF(60,60 121x121)
300 // are the center points of those tiles
301 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(146, 90)); // inside slice 1
301 QPoint p1(90.25, 90);
302 TRY_COMPARE(clickSpy1.count(), 1);
302 QPoint p2(150, 90);
303 QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy1.at(0).at(0)), s1);
303 QPoint p3(90, 150);
304 QPoint p4(150, 150);
305
306 QPoint center(120, 120);
307
308 series->setPieSize(1.0);
309 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p1);
310 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p2);
311 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p3);
312 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p4);
313 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, center);
314 TRY_COMPARE(clickSpy.count(), 5); // all hit
315 QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(0).at(0)), s4);
316 QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(1).at(0)), s1);
317 QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(2).at(0)), s3);
318 QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(3).at(0)), s2);
319 clickSpy.clear();
320
321 series->setPieSize(0.5);
322 series->setVerticalPosition(0.25);
323 series->setHorizontalPosition(0.25);
324 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p1); // hits
325 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p2);
326 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p3);
327 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p4);
328 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, center);
329 TRY_COMPARE(clickSpy.count(), 1);
330 clickSpy.clear();
331
332 series->setVerticalPosition(0.25);
333 series->setHorizontalPosition(0.75);
334 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p1);
335 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p2); // hits
336 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p3);
337 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p4);
338 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, center);
339 TRY_COMPARE(clickSpy.count(), 1);
340 clickSpy.clear();
341
342 series->setVerticalPosition(0.75);
343 series->setHorizontalPosition(0.25);
344 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p1);
345 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p2);
346 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p3); // hits
347 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p4);
348 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, center);
349 TRY_COMPARE(clickSpy.count(), 1);
350 clickSpy.clear();
351
352 series->setVerticalPosition(0.75);
353 series->setHorizontalPosition(0.75);
354 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p1);
355 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p2);
356 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p3);
357 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p4); // hits
358 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, center);
359 TRY_COMPARE(clickSpy.count(), 1);
360 clickSpy.clear();
304 }
361 }
305
362
306 void tst_qpieseries::hoverSignal()
363 void tst_qpieseries::hoverSignal()
307 {
364 {
308 // create a pie series
365 // create a pie series
309 QPieSeries *series = new QPieSeries();
366 QPieSeries *series = new QPieSeries();
310 series->setPieSize(1.0);
367 series->setPieSize(1.0);
311 QPieSlice *s1 = series->append("slice 1", 1);
368 QPieSlice *s1 = series->append("slice 1", 1);
312 series->append("slice 2", 2);
369 series->append("slice 2", 2);
313 series->append("slice 3", 3);
370 series->append("slice 3", 3);
314
371
315 // add series to the chart
372 // add series to the chart
316 QChartView view(new QChart());
373 QChartView view(new QChart());
317 view.chart()->legend()->setVisible(false);
374 view.chart()->legend()->setVisible(false);
318 view.resize(200, 200);
375 view.resize(200, 200);
319 view.chart()->addSeries(series);
376 view.chart()->addSeries(series);
320 view.show();
377 view.show();
321 QTest::qWaitForWindowShown(&view);
378 QTest::qWaitForWindowShown(&view);
322
379
323 // first move to right top corner
380 // first move to right top corner
324 QTest::mouseMove(view.viewport(), QPoint(200, 0));
381 QTest::mouseMove(view.viewport(), QPoint(200, 0));
325 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
382 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
326
383
327 // move inside the slice
384 // move inside the slice
328 // pie rectangle: QRectF(60,60 121x121)
385 // pie rectangle: QRectF(60,60 121x121)
329 QSignalSpy hoverSpy(series, SIGNAL(hovered(QPieSlice*,bool)));
386 QSignalSpy hoverSpy(series, SIGNAL(hovered(QPieSlice*,bool)));
330 QTest::mouseMove(view.viewport(), QPoint(139, 85));
387 QTest::mouseMove(view.viewport(), QPoint(139, 85));
331 TRY_COMPARE(hoverSpy.count(), 1);
388 TRY_COMPARE(hoverSpy.count(), 1);
332 QCOMPARE(qvariant_cast<QPieSlice*>(hoverSpy.at(0).at(0)), s1);
389 QCOMPARE(qvariant_cast<QPieSlice*>(hoverSpy.at(0).at(0)), s1);
333 QCOMPARE(qvariant_cast<bool>(hoverSpy.at(0).at(1)), true);
390 QCOMPARE(qvariant_cast<bool>(hoverSpy.at(0).at(1)), true);
334
391
335 // move outside the slice
392 // move outside the slice
336 QTest::mouseMove(view.viewport(), QPoint(200, 0));
393 QTest::mouseMove(view.viewport(), QPoint(200, 0));
337 TRY_COMPARE(hoverSpy.count(), 2);
394 TRY_COMPARE(hoverSpy.count(), 2);
338 QCOMPARE(qvariant_cast<QPieSlice*>(hoverSpy.at(1).at(0)), s1);
395 QCOMPARE(qvariant_cast<QPieSlice*>(hoverSpy.at(1).at(0)), s1);
339 QCOMPARE(qvariant_cast<bool>(hoverSpy.at(1).at(1)), false);
396 QCOMPARE(qvariant_cast<bool>(hoverSpy.at(1).at(1)), false);
340 }
397 }
341
398
342 QTEST_MAIN(tst_qpieseries)
399 QTEST_MAIN(tst_qpieseries)
343
400
344 #include "tst_qpieseries.moc"
401 #include "tst_qpieseries.moc"
345
402
General Comments 0
You need to be logged in to leave comments. Login now