##// END OF EJS Templates
barseries autotest update
sauimone -
r1287:b2453e3ca679
parent child
Show More
@@ -1,215 +1,215
1 1 /****************************************************************************
2 2 **
3 3 ** Copyright (C) 2012 Digia Plc
4 4 ** All rights reserved.
5 5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 6 **
7 7 ** This file is part of the Qt Commercial Charts Add-on.
8 8 **
9 9 ** $QT_BEGIN_LICENSE$
10 10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 11 ** accordance with the Qt Commercial License Agreement provided with the
12 12 ** Software or, alternatively, in accordance with the terms contained in
13 13 ** a written agreement between you and Digia.
14 14 **
15 15 ** If you have questions regarding the use of this file, please use
16 16 ** contact form at http://qt.digia.com
17 17 ** $QT_END_LICENSE$
18 18 **
19 19 ****************************************************************************/
20 20
21 21 #include "barchartitem_p.h"
22 22 #include "bar_p.h"
23 23 #include "qbarset.h"
24 24 #include "qbarset_p.h"
25 25 #include "qbarseries.h"
26 26 #include "qbarseries_p.h"
27 27 #include "qchart.h"
28 28 #include "chartpresenter_p.h"
29 29 #include "chartanimator_p.h"
30 30 #include "chartdataset_p.h"
31 31 #include <QPainter>
32 32
33 33 QTCOMMERCIALCHART_BEGIN_NAMESPACE
34 34
35 35 BarChartItem::BarChartItem(QBarSeries *series, ChartPresenter *presenter) :
36 36 ChartItem(presenter),
37 37 m_series(series)
38 38 {
39 39 setFlag(ItemClipsChildrenToShape);
40 40 connect(series->d_func(), SIGNAL(updatedBars()), this, SLOT(handleLayoutChanged()));
41 41 connect(series->d_func(), SIGNAL(restructuredBars()), this, SLOT(handleModelChanged()));
42 42 connect(series->d_func(), SIGNAL(labelsVisibleChanged(bool)), this, SLOT(labelsVisibleChanged(bool)));
43 43 setZValue(ChartPresenter::BarSeriesZValue);
44 44 dataChanged();
45 45 }
46 46
47 47 BarChartItem::~BarChartItem()
48 48 {
49 49 }
50 50
51 51 void BarChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
52 52 {
53 53 Q_UNUSED(painter);
54 54 Q_UNUSED(option);
55 55 Q_UNUSED(widget);
56 56 }
57 57
58 58 QRectF BarChartItem::boundingRect() const
59 59 {
60 60 return m_rect;
61 61 }
62 62
63 63 void BarChartItem::dataChanged()
64 64 {
65 65 foreach(QGraphicsItem *item, childItems()) {
66 66 delete item;
67 67 }
68 68
69 69 m_bars.clear();
70 70 m_labels.clear();
71 71 m_layout.clear();
72 72
73 73 bool labelsVisible = m_series->isLabelsVisible();
74 74
75 75 // Create new graphic items for bars
76 76 for (int c = 0; c < m_series->categoryCount(); c++) {
77 77 QString category = m_series->d_func()->categoryName(c);
78 78 for (int s = 0; s < m_series->barsetCount(); s++) {
79 79 QBarSet *set = m_series->d_func()->barsetAt(s);
80 80
81 81 // Bars
82 82 Bar *bar = new Bar(set,category,this);
83 83 m_bars.append(bar);
84 84 connect(bar, SIGNAL(clicked(QBarSet*,QString)), m_series, SIGNAL(clicked(QBarSet*,QString)));
85 85 connect(bar, SIGNAL(hovered(QBarSet*,bool)), m_series, SIGNAL(hovered(QBarSet*,bool)));
86 86 m_layout.append(QRectF(0, 0, 0, 0));
87 87
88 88 // Labels
89 89 QGraphicsSimpleTextItem *label = new QGraphicsSimpleTextItem(this);
90 90 label->setVisible(labelsVisible);
91 91 m_labels.append(label);
92 92 }
93 93 }
94 94
95 95 // TODO: Is this the right place to call it?
96 96 // presenter()->chartTheme()->decorate(m_series, presenter()->dataSet()->seriesIndex(m_series));
97 97 }
98 98
99 99 QVector<QRectF> BarChartItem::calculateLayout()
100 100 {
101 101 QVector<QRectF> layout;
102 102
103 103 // Use temporary qreals for accurancy
104 104 qreal categoryCount = m_series->categoryCount();
105 105 qreal setCount = m_series->barsetCount();
106 106 bool barsVisible = m_series->isVisible();
107 107
108 108 // Domain:
109 109 qreal width = geometry().width();
110 110 qreal height = geometry().height();
111 111 qreal rangeY = m_domainMaxY - m_domainMinY;
112 112 qreal rangeX = m_domainMaxX - m_domainMinX;
113 113 qreal scaleY = (height / rangeY);
114 114 qreal scaleX = (width / rangeX);
115 115 qreal categoryWidth = width / categoryCount;
116 qreal barWidth = categoryWidth / setCount - categoryWidth * m_series->d_func()->barMargin();
116 qreal barWidth = categoryWidth - categoryWidth * m_series->d_func()->barMargin();
117 117
118 118 int itemIndex(0);
119 119 for (int category = 0; category < categoryCount; category++) {
120 120 qreal yPos = height + scaleY * m_domainMinY + geometry().topLeft().y();
121 121 for (int set = 0; set < setCount; set++) {
122 122 QBarSet* barSet = m_series->d_func()->barsetAt(set);
123 123 qreal xPos = (barSet->at(category).x() - m_domainMinX) * scaleX + m_rect.left() - barWidth/2;
124 124 qreal barHeight = barSet->at(category).y() * scaleY;
125 125
126 126 Bar* bar = m_bars.at(itemIndex);
127 127 QRectF rect(xPos, yPos - barHeight, barWidth, barHeight);
128 128
129 129 layout.append(rect);
130 130 bar->setPen(barSet->pen());
131 131 bar->setBrush(barSet->brush());
132 132 bar->setVisible(barsVisible);
133 133
134 134 QGraphicsSimpleTextItem* label = m_labels.at(itemIndex);
135 135
136 136 if (!qFuzzyIsNull(barSet->at(category).y())) {
137 137 label->setText(QString::number(barSet->at(category).y()));
138 138 } else {
139 139 label->setText(QString(""));
140 140 }
141 141
142 142 label->setPos(xPos + (rect.width()/2 - label->boundingRect().width()/2)
143 143 ,yPos - barHeight/2 - label->boundingRect().height()/2);
144 144 label->setFont(barSet->labelFont());
145 145
146 146 itemIndex++;
147 147 }
148 148 }
149 149
150 150 return layout;
151 151 }
152 152
153 153 void BarChartItem::applyLayout(const QVector<QRectF> &layout)
154 154 {
155 155 if (animator())
156 156 animator()->updateLayout(this, m_layout, layout);
157 157 else
158 158 setLayout(layout);
159 159 }
160 160
161 161 void BarChartItem::setLayout(const QVector<QRectF> &layout)
162 162 {
163 163 m_layout = layout;
164 164
165 165 for (int i=0; i < m_bars.count(); i++)
166 166 m_bars.at(i)->setRect(layout.at(i));
167 167
168 168 update();
169 169 }
170 170 //handlers
171 171
172 172 void BarChartItem::handleModelChanged()
173 173 {
174 174 // dataChanged();
175 175 presenter()->resetAllElements();
176 176 }
177 177
178 178 void BarChartItem::handleDomainChanged(qreal minX, qreal maxX, qreal minY, qreal maxY)
179 179 {
180 180 m_domainMinX = minX;
181 181 m_domainMaxX = maxX;
182 182 m_domainMinY = minY;
183 183 m_domainMaxY = maxY;
184 184 handleLayoutChanged();
185 185 }
186 186
187 187 void BarChartItem::handleGeometryChanged(const QRectF &rect)
188 188 {
189 189 prepareGeometryChange();
190 190 m_rect = rect;
191 191 handleLayoutChanged();
192 192 }
193 193
194 194 void BarChartItem::handleLayoutChanged()
195 195 {
196 196 if ((m_rect.width() <= 0) || (m_rect.height() <= 0)) {
197 197 // rect size zero.
198 198 return;
199 199 }
200 200 QVector<QRectF> layout = calculateLayout();
201 201 applyLayout(layout);
202 202 update();
203 203 }
204 204
205 205 void BarChartItem::labelsVisibleChanged(bool visible)
206 206 {
207 207 foreach (QGraphicsSimpleTextItem* label, m_labels) {
208 208 label->setVisible(visible);
209 209 }
210 210 update();
211 211 }
212 212
213 213 #include "moc_barchartitem_p.cpp"
214 214
215 215 QTCOMMERCIALCHART_END_NAMESPACE
@@ -1,673 +1,607
1 1 /****************************************************************************
2 2 **
3 3 ** Copyright (C) 2012 Digia Plc
4 4 ** All rights reserved.
5 5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 6 **
7 7 ** This file is part of the Qt Commercial Charts Add-on.
8 8 **
9 9 ** $QT_BEGIN_LICENSE$
10 10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 11 ** accordance with the Qt Commercial License Agreement provided with the
12 12 ** Software or, alternatively, in accordance with the terms contained in
13 13 ** a written agreement between you and Digia.
14 14 **
15 15 ** If you have questions regarding the use of this file, please use
16 16 ** contact form at http://qt.digia.com
17 17 ** $QT_END_LICENSE$
18 18 **
19 19 ****************************************************************************/
20 20
21 21 #include <QtTest/QtTest>
22 22 #include <qbarseries.h>
23 23 #include <qbarset.h>
24 24 #include <qchartview.h>
25 25 #include <qchart.h>
26 26
27 27 QTCOMMERCIALCHART_USE_NAMESPACE
28 28
29 29 Q_DECLARE_METATYPE(QBarSet*)
30 30
31 31 class tst_QBarSeries : public QObject
32 32 {
33 33 Q_OBJECT
34 34
35 35 public slots:
36 36 void initTestCase();
37 37 void cleanupTestCase();
38 38 void init();
39 39 void cleanup();
40 40
41 41 private slots:
42 42 void qbarseries_data();
43 43 void qbarseries();
44 44 void type_data();
45 45 void type();
46 46 void setCategories_data();
47 47 void setCategories();
48 48 void append_data();
49 49 void append();
50 50 void remove_data();
51 51 void remove();
52 52 void appendList_data();
53 53 void appendList();
54 54 void removeList_data();
55 55 void removeList();
56 56 void barsetCount_data();
57 57 void barsetCount();
58 58 void categoryCount_data();
59 59 void categoryCount();
60 60 void barSets_data();
61 61 void barSets();
62 62 void categories_data();
63 63 void categories();
64 64 void setLabelsVisible_data();
65 65 void setLabelsVisible();
66 66 void mouseclicked_data();
67 67 void mouseclicked();
68 68 void mousehovered_data();
69 69 void mousehovered();
70 70
71 71 private:
72 72 QBarSeries* m_barseries;
73 73 QBarSeries* m_barseries_with_sets;
74 74
75 75 QList<QBarSet*> m_testSets;
76 76
77 77 QBarCategories m_categories;
78 78 };
79 79
80 80 void tst_QBarSeries::initTestCase()
81 81 {
82 82 qRegisterMetaType<QBarSet*>("QBarSet*");
83 83 }
84 84
85 85 void tst_QBarSeries::cleanupTestCase()
86 86 {
87 87 }
88 88
89 89 void tst_QBarSeries::init()
90 90 {
91 91 m_categories << "category0" << "category1" << "category2";
92 92 m_barseries = new QBarSeries();
93 93 m_barseries->setCategories(m_categories);
94 94 m_barseries_with_sets = new QBarSeries();
95 95 m_barseries_with_sets->setCategories(m_categories);
96 96
97 97 for (int i=0; i<5; i++) {
98 98 m_testSets.append(new QBarSet("testset"));
99 99 m_barseries_with_sets->append(m_testSets.at(i));
100 100 }
101 101 }
102 102
103 103 void tst_QBarSeries::cleanup()
104 104 {
105 105 foreach(QBarSet* s, m_testSets) {
106 106 m_barseries_with_sets->remove(s);
107 107 delete s;
108 108 }
109 109 m_testSets.clear();
110 110
111 111 delete m_barseries;
112 112 m_barseries = 0;
113 113 delete m_barseries_with_sets;
114 114 m_barseries_with_sets = 0;
115 115 m_categories.clear();
116 116 }
117 117
118 118 void tst_QBarSeries::qbarseries_data()
119 119 {
120 120 QTest::addColumn<QBarCategories> ("categories");
121 121 QBarCategories c;
122 122 c << "category0" << "category1" << "category2";
123 123 QTest::newRow("categories") << c;
124 124 }
125 125
126 126 void tst_QBarSeries::qbarseries()
127 127 {
128 128 QFETCH(QBarCategories, categories);
129 129 QBarSeries *barseries = new QBarSeries();
130 130 QVERIFY(barseries != 0);
131 131 barseries->setCategories(categories);
132 132 QBarCategories verifyCategories = barseries->categories();
133 133
134 134 QVERIFY(verifyCategories.count() == categories.count());
135 135 for (int i=0; i<categories.count(); i++) {
136 136 QVERIFY(verifyCategories.at(i).compare(categories.at(i)) == 0);
137 137 }
138 138 }
139 139
140 140 void tst_QBarSeries::type_data()
141 141 {
142 142
143 143 }
144 144
145 145 void tst_QBarSeries::type()
146 146 {
147 147 QVERIFY(m_barseries->type() == QAbstractSeries::SeriesTypeBar);
148 148 }
149 149
150 150 void tst_QBarSeries::setCategories_data()
151 151 {
152 152 QTest::addColumn<QBarCategories> ("categories");
153 153 QBarCategories categories;
154 154 categories << "c1" << "c2" << "c3" << "c4" << "c5" << "c6";
155 155 QTest::newRow("cat") << categories;
156 156 }
157 157
158 158 void tst_QBarSeries::setCategories()
159 159 {
160 160 QVERIFY(m_barseries->categories().count() == m_categories.count());
161 161
162 162 QFETCH(QBarCategories, categories);
163 163 m_barseries->setCategories(categories);
164 164
165 165 QVERIFY(m_barseries->categories().count() == categories.count());
166 166 for (int i=0; i<categories.count(); i++) {
167 167 QVERIFY(m_barseries->categories().at(i).compare(categories.at(i)) == 0);
168 168 }
169 169 }
170 170
171 171 void tst_QBarSeries::append_data()
172 172 {
173 173 }
174 174
175 175 void tst_QBarSeries::append()
176 176 {
177 177 QVERIFY(m_barseries->barsetCount() == 0);
178 178
179 179 bool ret = false;
180 180
181 181 // Try adding barset
182 182 QBarSet *barset = new QBarSet("testset");
183 183 ret = m_barseries->append(barset);
184 184
185 185 QVERIFY(ret == true);
186 186 QVERIFY(m_barseries->barsetCount() == 1);
187 187
188 188 // Try adding another set
189 189 QBarSet *barset2 = new QBarSet("testset2");
190 190 ret = m_barseries->append(barset2);
191 191
192 192 QVERIFY(ret == true);
193 193 QVERIFY(m_barseries->barsetCount() == 2);
194 194
195 195 // Try adding same set again
196 196 ret = m_barseries->append(barset2);
197 197 QVERIFY(ret == false);
198 198 QVERIFY(m_barseries->barsetCount() == 2);
199 199
200 200 // Try adding null set
201 201 ret = m_barseries->append(0);
202 202 QVERIFY(ret == false);
203 203 QVERIFY(m_barseries->barsetCount() == 2);
204 204
205 205 }
206 206
207 207 void tst_QBarSeries::remove_data()
208 208 {
209 209 }
210 210
211 211 void tst_QBarSeries::remove()
212 212 {
213 213 int count = m_testSets.count();
214 214 QVERIFY(m_barseries_with_sets->barsetCount() == count);
215 215
216 216 // Try to remove null pointer (should not remove, should not crash)
217 217 bool ret = false;
218 218 ret = m_barseries_with_sets->remove(0);
219 219 QVERIFY(ret == false);
220 220 QVERIFY(m_barseries_with_sets->barsetCount() == count);
221 221
222 222 // Try to remove invalid pointer (should not remove, should not crash)
223 223 ret = m_barseries_with_sets->remove((QBarSet*) (m_testSets.at(0) + 1) );
224 224 QVERIFY(ret == false);
225 225 QVERIFY(m_barseries_with_sets->barsetCount() == count);
226 226
227 227 // remove some sets
228 228 ret = m_barseries_with_sets->remove(m_testSets.at(2));
229 229 QVERIFY(ret == true);
230 230 ret = m_barseries_with_sets->remove(m_testSets.at(3));
231 231 QVERIFY(ret == true);
232 232 ret = m_barseries_with_sets->remove(m_testSets.at(4));
233 233 QVERIFY(ret == true);
234 234
235 235 QVERIFY(m_barseries_with_sets->barsetCount() == 2);
236 236
237 237 QList<QBarSet*> verifysets = m_barseries_with_sets->barSets();
238 238
239 239 QVERIFY(verifysets.at(0) == m_testSets.at(0));
240 240 QVERIFY(verifysets.at(1) == m_testSets.at(1));
241 241
242 242 // Try removing all sets again (should be ok, even if some sets have already been removed)
243 243 ret = false;
244 244 for (int i=0; i<count; i++) {
245 245 ret |= m_barseries_with_sets->remove(m_testSets.at(i));
246 246 }
247 247
248 248 QVERIFY(ret == true);
249 249 QVERIFY(m_barseries_with_sets->barsetCount() == 0);
250 250 }
251 251
252 252 void tst_QBarSeries::appendList_data()
253 253 {
254 254
255 255 }
256 256
257 257 void tst_QBarSeries::appendList()
258 258 {
259 259 int count = 5;
260 260 QVERIFY(m_barseries->barsetCount() == 0);
261 261
262 262 QList<QBarSet*> sets;
263 263 for (int i=0; i<count; i++) {
264 264 sets.append(new QBarSet("testset"));
265 265 }
266 266
267 267 // Append new sets (should succeed, count should match the count of sets)
268 268 bool ret = false;
269 269 ret = m_barseries->append(sets);
270 270 QVERIFY(ret == true);
271 271 QVERIFY(m_barseries->barsetCount() == count);
272 272
273 273 // Append same sets again (should fail, count should remain same)
274 274 ret = m_barseries->append(sets);
275 275 QVERIFY(ret == false);
276 276 QVERIFY(m_barseries->barsetCount() == count);
277 277
278 278 // Try append empty list (should succeed, but count should remain same)
279 279 QList<QBarSet*> invalidList;
280 280 ret = m_barseries->append(invalidList);
281 281 QVERIFY(ret == true);
282 282 QVERIFY(m_barseries->barsetCount() == count);
283 283
284 284 // Try append list with one new and one existing set (should fail, count remains same)
285 285 invalidList.append(new QBarSet("ok set"));
286 286 invalidList.append(sets.at(0));
287 287 ret = m_barseries->append(invalidList);
288 288 QVERIFY(ret == false);
289 289 QVERIFY(m_barseries->barsetCount() == count);
290 290
291 291 // Try append list with null pointers (should fail, count remains same)
292 292 QList<QBarSet*> invalidList2;
293 293 invalidList2.append(0);
294 294 invalidList2.append(0);
295 295 invalidList2.append(0);
296 296 ret = m_barseries->append(invalidList2);
297 297 QVERIFY(ret == false);
298 298 QVERIFY(m_barseries->barsetCount() == count);
299 299 }
300 300
301 301 void tst_QBarSeries::removeList_data()
302 302 {
303 303
304 304 }
305 305
306 306 void tst_QBarSeries::removeList()
307 307 {
308 308 int count = m_testSets.count();
309 309 QVERIFY(m_barseries_with_sets->barsetCount() == count);
310 310
311 311 // Try removing empty list of sets (should return false, since no barsets were removed)
312 312 bool ret = false;
313 313 QList<QBarSet*> invalidList;
314 314 ret = m_barseries_with_sets->remove(invalidList);
315 315 QVERIFY(ret == false);
316 316 QVERIFY(m_barseries_with_sets->barsetCount() == count);
317 317
318 318 // Add some null pointers to list
319 319 invalidList.append(0);
320 320 invalidList.append(0);
321 321 invalidList.append(0);
322 322
323 323 // Try removing null pointers from list (should return false, should not crash, should not remove anything)
324 324 ret = m_barseries_with_sets->remove(invalidList);
325 325 QVERIFY(ret == false);
326 326 QVERIFY(m_barseries_with_sets->barsetCount() == count);
327 327
328 328 // remove all sets (should return true, since sets were removed)
329 329 ret = m_barseries_with_sets->remove(m_testSets);
330 330 QVERIFY(ret == true);
331 331 QVERIFY(m_barseries_with_sets->barsetCount() == 0);
332 332
333 333 // Try removing invalid list again (should return false, since no barsets were removed)
334 334 ret = m_barseries_with_sets->remove(invalidList);
335 335 QVERIFY(ret == false);
336 336 QVERIFY(m_barseries_with_sets->barsetCount() == 0);
337 337
338 338 // remove all sets again (should return false, since barsets were already removed)
339 339 ret = m_barseries_with_sets->remove(m_testSets);
340 340 QVERIFY(ret == false);
341 341 QVERIFY(m_barseries_with_sets->barsetCount() == 0);
342 342 }
343 343
344 344 void tst_QBarSeries::barsetCount_data()
345 345 {
346 346
347 347 }
348 348
349 349 void tst_QBarSeries::barsetCount()
350 350 {
351 351 QVERIFY(m_barseries->barsetCount() == 0);
352 352 QVERIFY(m_barseries_with_sets->barsetCount() == m_testSets.count());
353 353 }
354 354
355 355 void tst_QBarSeries::categoryCount_data()
356 356 {
357 357
358 358 }
359 359
360 360 void tst_QBarSeries::categoryCount()
361 361 {
362 362 QVERIFY(m_barseries->categoryCount() == m_categories.count());
363 363 QVERIFY(m_barseries_with_sets->categoryCount() == m_categories.count());
364 364 }
365 365
366 366 void tst_QBarSeries::barSets_data()
367 367 {
368 368
369 369 }
370 370
371 371 void tst_QBarSeries::barSets()
372 372 {
373 373 QVERIFY(m_barseries->barSets().count() == 0);
374 374
375 375 QList<QBarSet*> sets = m_barseries_with_sets->barSets();
376 376 QVERIFY(sets.count() == m_testSets.count());
377 377
378 378 for (int i=0; i<m_testSets.count(); i++) {
379 379 QVERIFY(sets.at(i) == m_testSets.at(i));
380 380 }
381 381 }
382 382
383 383 void tst_QBarSeries::categories_data()
384 384 {
385 385
386 386 }
387 387
388 388 void tst_QBarSeries::categories()
389 389 {
390 390 QBarCategories categories = m_barseries->categories();
391 391
392 392 QVERIFY(categories.count() == m_categories.count());
393 393 for (int i=0; i<m_categories.count(); i++) {
394 394 QVERIFY(categories.at(i).compare(m_categories.at(i)) == 0);
395 395 }
396 396 }
397 397
398 398 void tst_QBarSeries::setLabelsVisible_data()
399 399 {
400 400
401 401 }
402 402
403 403 void tst_QBarSeries::setLabelsVisible()
404 404 {
405 405 // labels should be invisible by default
406 406 QVERIFY(m_barseries->isLabelsVisible() == false);
407 407 QVERIFY(m_barseries_with_sets->isLabelsVisible() == false);
408 408
409 409 // turn labels to visible
410 410 m_barseries_with_sets->setLabelsVisible(true);
411 411 // TODO: test the signal
412 412 QVERIFY(m_barseries_with_sets->isLabelsVisible() == true);
413 413
414 414 // turn labels to invisible
415 415 m_barseries_with_sets->setLabelsVisible(false);
416 416 // TODO: test the signal
417 417 QVERIFY(m_barseries_with_sets->isLabelsVisible() == false);
418 418
419 419 // without parameter, should turn labels to visible
420 420 m_barseries_with_sets->setLabelsVisible();
421 421 // TODO: test the signal
422 422 QVERIFY(m_barseries_with_sets->isLabelsVisible() == true);
423 423 }
424 424
425 425 void tst_QBarSeries::mouseclicked_data()
426 426 {
427 427
428 428 }
429 429
430 430 void tst_QBarSeries::mouseclicked()
431 431 {
432 432 QBarSeries* series = new QBarSeries();
433 433 QBarCategories categories;
434 434 categories << "test1" << "test2" << "test3";
435 435 series->setCategories(categories);
436 436
437 437 QBarSet* set1 = new QBarSet(QString("set 1"));
438 438 *set1 << QPointF(0,10) << QPointF(1,10) << QPointF(2,10);
439 439 series->append(set1);
440 440
441 441 QBarSet* set2 = new QBarSet(QString("set 2"));
442 442 *set2 << QPointF(0.3,10) << QPointF(1.3,10) << QPointF(2.3,10);
443 443 series->append(set2);
444 444
445 QSignalSpy setSpy1(set1, SIGNAL(clicked(QString)));
446 QSignalSpy setSpy2(set2, SIGNAL(clicked(QString)));
447 445 QSignalSpy seriesSpy(series,SIGNAL(clicked(QBarSet*,QString)));
448 446
449 447 QChartView view(new QChart());
450 448 view.resize(400,300);
451 449 view.chart()->addSeries(series);
452 450 view.show();
453 451 QTest::qWaitForWindowShown(&view);
454 452
455 453 //====================================================================================
456 454 // barset 1, category test1
457 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(105,180));
455 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(106,142));
458 456 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
459 457
460 QCOMPARE(setSpy1.count(), 1);
461 QCOMPARE(setSpy2.count(), 0);
462 458 QCOMPARE(seriesSpy.count(), 1);
463 QList<QVariant> setSpyArg = setSpy1.takeFirst();
464 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
465 QVERIFY(setSpyArg.at(0).toString().compare(QString("test1")) == 0);
466 459
467 460 QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
468 461 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
462 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
463 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test1")) == 0);
469 464
470 465 //====================================================================================
471 466 // barset 1, category test2
472 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(200,180));
467 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(199,142));
473 468 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
474 469
475 QCOMPARE(setSpy1.count(), 1);
476 QCOMPARE(setSpy2.count(), 0);
477 470 QCOMPARE(seriesSpy.count(), 1);
478 setSpyArg = setSpy1.takeFirst();
479 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
480 QVERIFY(setSpyArg.at(0).toString().compare(QString("test2")) == 0);
481 471
482 472 seriesSpyArg = seriesSpy.takeFirst();
483 473 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
474 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
475 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test2")) == 0);
484 476
485 477 //====================================================================================
486 478 // barset 1, category test3
487 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(295,180));
479 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(291,142));
488 480 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
489 481
490 QCOMPARE(setSpy1.count(), 1);
491 QCOMPARE(setSpy2.count(), 0);
492 482 QCOMPARE(seriesSpy.count(), 1);
493 setSpyArg = setSpy1.takeFirst();
494 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
495 QVERIFY(setSpyArg.at(0).toString().compare(QString("test3")) == 0);
496 483
497 484 seriesSpyArg = seriesSpy.takeFirst();
498 485 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
486 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
487 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test3")) == 0);
499 488
500 489 //====================================================================================
501 490 // barset 2, category test1
502 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(145,180));
491 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(134,142));
503 492 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
504 493
505 QCOMPARE(setSpy1.count(), 0);
506 QCOMPARE(setSpy2.count(), 1);
507 494 QCOMPARE(seriesSpy.count(), 1);
508 setSpyArg = setSpy2.takeFirst();
509 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
510 QVERIFY(setSpyArg.at(0).toString().compare(QString("test1")) == 0);
511 495
512 496 seriesSpyArg = seriesSpy.takeFirst();
513 497 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
498 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
499 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test1")) == 0);
514 500
515 501 //====================================================================================
516 502 // barset 2, category test2
517 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(240,180));
503 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(227,142));
518 504 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
519 505
520 QCOMPARE(setSpy1.count(), 0);
521 QCOMPARE(setSpy2.count(), 1);
522 506 QCOMPARE(seriesSpy.count(), 1);
523 setSpyArg = setSpy2.takeFirst();
524 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
525 QVERIFY(setSpyArg.at(0).toString().compare(QString("test2")) == 0);
526 507
527 508 seriesSpyArg = seriesSpy.takeFirst();
528 509 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
510 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
511 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test2")) == 0);
529 512
530 513 //====================================================================================
531 514 // barset 2, category test3
532 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(335,180));
515 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(319,142));
533 516 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
534 517
535 QCOMPARE(setSpy1.count(), 0);
536 QCOMPARE(setSpy2.count(), 1);
537 518 QCOMPARE(seriesSpy.count(), 1);
538 setSpyArg = setSpy2.takeFirst();
539 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
540 QVERIFY(setSpyArg.at(0).toString().compare(QString("test3")) == 0);
541 519
542 520 seriesSpyArg = seriesSpy.takeFirst();
543 521 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
544
545 //====================================================================================
546 // no event cases
547 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(1,1)); // Outside of both sets
548 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(1,1)); // Right mouse button outside and inside sets
549 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(105,180)); // barset 1, category test1
550 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(200,180)); // barset 1, category test2
551 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(295,180)); // barset 1, category test3
552 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(145,180)); // barset 2, category test1
553 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(240,180)); // barset 2, category test2
554 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(335,180)); // barset 2, category test3
555
556 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
557 QCOMPARE(setSpy1.count(), 0);
558 QCOMPARE(setSpy2.count(), 0);
559 QCOMPARE(seriesSpy.count(), 0);
522 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
523 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test3")) == 0);
560 524 }
561 525
562 526 void tst_QBarSeries::mousehovered_data()
563 527 {
564 528
565 529 }
566 530
567 531 void tst_QBarSeries::mousehovered()
568 532 {
569 533 QBarSeries* series = new QBarSeries();
570 534 QBarCategories categories;
571 535 categories << "test1" << "test2" << "test3";
572 536 series->setCategories(categories);
573 537
574 538 QBarSet* set1 = new QBarSet(QString("set 1"));
575 539 *set1 << QPointF(0.1,10) << QPointF(1.1,10) << QPointF(2.1,10);
576 540 series->append(set1);
577 541
578 542 QBarSet* set2 = new QBarSet(QString("set 2"));
579 543 *set2 << QPointF(0.3,10) << QPointF(1.3,10) << QPointF(2.3,10);
580 544 series->append(set2);
581 545
582 QSignalSpy setSpy1(set1, SIGNAL(hovered(bool)));
583 QSignalSpy setSpy2(set2, SIGNAL(hovered(bool)));
584 546 QSignalSpy seriesSpy(series,SIGNAL(hovered(QBarSet*,bool)));
585 547
586 548 QChartView view(new QChart());
587 549 view.resize(400,300);
588 550 view.chart()->addSeries(series);
589 551 view.show();
590 552 QTest::qWaitForWindowShown(&view);
591 553
554 //this is hack since view does not get events otherwise
555 view.setMouseTracking(true);
556
592 557 //=======================================================================
593 558 // move mouse to left border
594 QTest::mouseMove(view.viewport(), QPoint(0, 180));
559 QTest::mouseMove(view.viewport(), QPoint(0, 142));
595 560
596 QVERIFY(setSpy1.count() == 0);
597 QVERIFY(setSpy2.count() == 0);
598 561 QVERIFY(seriesSpy.count() == 0);
599 562
600 563 //=======================================================================
601 564 // move mouse on top of set1
602 QTest::mouseMove(view.viewport(), QPoint(105,180));
565 QTest::mouseMove(view.viewport(), QPoint(106,142));
603 566
604 QVERIFY(setSpy1.count() == 1);
605 QVERIFY(setSpy2.count() == 0);
606 567 QVERIFY(seriesSpy.count() == 1);
607 568
608 QList<QVariant> setSpyArg = setSpy1.takeFirst();
609 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
610 QVERIFY(setSpyArg.at(0).toBool() == true);
611
612 569 QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
613 570 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
571 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
572 QVERIFY(seriesSpyArg.at(1).toBool() == true);
614 573
615 574 //=======================================================================
616 575 // move mouse from top of set1 to top of set2
617 QTest::mouseMove(view.viewport(), QPoint(145,180));
576 QTest::mouseMove(view.viewport(), QPoint(134,142));
618 577
619 QVERIFY(setSpy1.count() == 1);
620 QVERIFY(setSpy2.count() == 1);
621 578 QVERIFY(seriesSpy.count() == 2);
622 579
623 580 // should leave set1
624 setSpyArg = setSpy1.takeFirst();
625 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
626 QVERIFY(setSpyArg.at(0).toBool() == false);
627
628 // should enter set2
629 setSpyArg = setSpy2.takeFirst();
630 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
631 QVERIFY(setSpyArg.at(0).toBool() == true);
632
633 // should leave set1
634 581 seriesSpyArg = seriesSpy.takeFirst();
635 582 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
636 583 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
637 584 QVERIFY(seriesSpyArg.at(1).toBool() == false);
638 585
639 586 // should enter set2
640 587 seriesSpyArg = seriesSpy.takeFirst();
641 588 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
642 589 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
643 590 QVERIFY(seriesSpyArg.at(1).toBool() == true);
644 591
645 592 //=======================================================================
646 593 // move mouse from top of set2 to background
647 QTest::mouseMove(view.viewport(), QPoint(175,180));
648
649 QVERIFY(setSpy1.count() == 0);
650 QVERIFY(setSpy2.count() == 1);
594 QTest::mouseMove(view.viewport(), QPoint(134,0));
651 595 QVERIFY(seriesSpy.count() == 1);
652 596
653 // should leave set2 (event via set)
654 setSpyArg = setSpy2.takeFirst();
655 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
656 QVERIFY(setSpyArg.at(0).toBool() == false);
657
658 // should leave set2 (event via series)
597 // should leave set2
659 598 seriesSpyArg = seriesSpy.takeFirst();
660 599 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
661 600 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
662 601 QVERIFY(seriesSpyArg.at(1).toBool() == false);
663 602 }
664 603
665 /*
666 bool setModel(QAbstractItemModel *model);
667 void setModelMapping(int categories, int bottomBoundary, int topBoundary, Qt::Orientation orientation = Qt::Vertical);
668 void setModelMappingRange(int first, int count = -1);
669 */
670 604 QTEST_MAIN(tst_QBarSeries)
671 605
672 606 #include "tst_qbarseries.moc"
673 607
@@ -1,353 +1,289
1 1 /****************************************************************************
2 2 **
3 3 ** Copyright (C) 2012 Digia Plc
4 4 ** All rights reserved.
5 5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 6 **
7 7 ** This file is part of the Qt Commercial Charts Add-on.
8 8 **
9 9 ** $QT_BEGIN_LICENSE$
10 10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 11 ** accordance with the Qt Commercial License Agreement provided with the
12 12 ** Software or, alternatively, in accordance with the terms contained in
13 13 ** a written agreement between you and Digia.
14 14 **
15 15 ** If you have questions regarding the use of this file, please use
16 16 ** contact form at http://qt.digia.com
17 17 ** $QT_END_LICENSE$
18 18 **
19 19 ****************************************************************************/
20 20
21 21 #include <QtTest/QtTest>
22 22 #include <qgroupedbarseries.h>
23 23 #include <qbarset.h>
24 24 #include <qchartview.h>
25 25 #include <qchart.h>
26 26 #include <QBarModelMapper>
27 27 #include <QStandardItemModel>
28 28
29 29 QTCOMMERCIALCHART_USE_NAMESPACE
30 30
31 31 Q_DECLARE_METATYPE(QBarSet*)
32 32
33 33 class tst_QGroupedBarSeries : public QObject
34 34 {
35 35 Q_OBJECT
36 36
37 37 public slots:
38 38 void initTestCase();
39 39 void cleanupTestCase();
40 40 void init();
41 41 void cleanup();
42 42
43 43 private slots:
44 44 void qgroupedbarseries_data();
45 45 void qgroupedbarseries();
46 46 void type_data();
47 47 void type();
48 48 void mouseclicked_data();
49 49 void mouseclicked();
50 50 void mousehovered_data();
51 51 void mousehovered();
52 52
53 53 private:
54 54 QGroupedBarSeries* m_barseries;
55 55 };
56 56
57 57 void tst_QGroupedBarSeries::initTestCase()
58 58 {
59 59 qRegisterMetaType<QBarSet*>("QBarSet*");
60 60 }
61 61
62 62 void tst_QGroupedBarSeries::cleanupTestCase()
63 63 {
64 64 }
65 65
66 66 void tst_QGroupedBarSeries::init()
67 67 {
68 68 m_barseries = new QGroupedBarSeries();
69 69 }
70 70
71 71 void tst_QGroupedBarSeries::cleanup()
72 72 {
73 73 delete m_barseries;
74 74 m_barseries = 0;
75 75 }
76 76
77 77 void tst_QGroupedBarSeries::qgroupedbarseries_data()
78 78 {
79 79 }
80 80
81 81 void tst_QGroupedBarSeries::qgroupedbarseries()
82 82 {
83 83 QGroupedBarSeries *barseries = new QGroupedBarSeries();
84 84 QVERIFY(barseries != 0);
85 85 }
86 86
87 87 void tst_QGroupedBarSeries::type_data()
88 88 {
89 89
90 90 }
91 91
92 92 void tst_QGroupedBarSeries::type()
93 93 {
94 94 QVERIFY(m_barseries->type() == QAbstractSeries::SeriesTypeGroupedBar);
95 95 }
96 96
97 97 void tst_QGroupedBarSeries::mouseclicked_data()
98 98 {
99 99
100 100 }
101 101
102 102 void tst_QGroupedBarSeries::mouseclicked()
103 103 {
104 104 QGroupedBarSeries* series = new QGroupedBarSeries();
105 105 QBarCategories categories;
106 106 categories << "test1" << "test2" << "test3";
107 107 series->setCategories(categories);
108 108
109 109 QBarSet* set1 = new QBarSet(QString("set 1"));
110 110 *set1 << 10 << 10 << 10;
111 111 series->append(set1);
112 112
113 113 QBarSet* set2 = new QBarSet(QString("set 2"));
114 114 *set2 << 10 << 10 << 10;
115 115 series->append(set2);
116 116
117 QSignalSpy setSpy1(set1, SIGNAL(clicked(QString)));
118 QSignalSpy setSpy2(set2, SIGNAL(clicked(QString)));
119 117 QSignalSpy seriesSpy(series,SIGNAL(clicked(QBarSet*,QString)));
120 118
121 119 QChartView view(new QChart());
122 120 view.resize(400,300);
123 121 view.chart()->addSeries(series);
124 122 view.show();
125 123 QTest::qWaitForWindowShown(&view);
126 124
127 125 //====================================================================================
128 126 // barset 1, category test1
129 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(90,180));
127 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(95,143));
130 128 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
131 129
132 QCOMPARE(setSpy1.count(), 1);
133 QCOMPARE(setSpy2.count(), 0);
134 130 QCOMPARE(seriesSpy.count(), 1);
135 QList<QVariant> setSpyArg = setSpy1.takeFirst();
136 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
137 QVERIFY(setSpyArg.at(0).toString().compare(QString("test1")) == 0);
138 131
139 132 QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
140 133 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
134 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
135 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test1")) == 0);
141 136
142 137 //====================================================================================
143 138 // barset 1, category test2
144 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(185,180));
139 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(187,143));
145 140 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
146 141
147 QCOMPARE(setSpy1.count(), 1);
148 QCOMPARE(setSpy2.count(), 0);
149 142 QCOMPARE(seriesSpy.count(), 1);
150 setSpyArg = setSpy1.takeFirst();
151 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
152 QVERIFY(setSpyArg.at(0).toString().compare(QString("test2")) == 0);
153 143
154 144 seriesSpyArg = seriesSpy.takeFirst();
155 145 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
146 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
147 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test2")) == 0);
156 148
157 149 //====================================================================================
158 150 // barset 1, category test3
159 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(280,180));
151 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(280,143));
160 152 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
161 153
162 QCOMPARE(setSpy1.count(), 1);
163 QCOMPARE(setSpy2.count(), 0);
164 154 QCOMPARE(seriesSpy.count(), 1);
165 setSpyArg = setSpy1.takeFirst();
166 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
167 QVERIFY(setSpyArg.at(0).toString().compare(QString("test3")) == 0);
168 155
169 156 seriesSpyArg = seriesSpy.takeFirst();
170 157 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
158 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
159 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test3")) == 0);
171 160
172 161 //====================================================================================
173 162 // barset 2, category test1
174 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(135,180));
163 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(118,143));
175 164 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
176 165
177 QCOMPARE(setSpy1.count(), 0);
178 QCOMPARE(setSpy2.count(), 1);
179 166 QCOMPARE(seriesSpy.count(), 1);
180 setSpyArg = setSpy2.takeFirst();
181 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
182 QVERIFY(setSpyArg.at(0).toString().compare(QString("test1")) == 0);
183 167
184 168 seriesSpyArg = seriesSpy.takeFirst();
185 169 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
170 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
171 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test1")) == 0);
186 172
187 173 //====================================================================================
188 174 // barset 2, category test2
189 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(230,180));
175 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(210,143));
190 176 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
191 177
192 QCOMPARE(setSpy1.count(), 0);
193 QCOMPARE(setSpy2.count(), 1);
194 178 QCOMPARE(seriesSpy.count(), 1);
195 setSpyArg = setSpy2.takeFirst();
196 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
197 QVERIFY(setSpyArg.at(0).toString().compare(QString("test2")) == 0);
198 179
199 180 seriesSpyArg = seriesSpy.takeFirst();
200 181 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
182 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
183 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test2")) == 0);
201 184
202 185 //====================================================================================
203 186 // barset 2, category test3
204 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(320,180));
187 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(303,143));
205 188 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
206 189
207 QCOMPARE(setSpy1.count(), 0);
208 QCOMPARE(setSpy2.count(), 1);
209 190 QCOMPARE(seriesSpy.count(), 1);
210 setSpyArg = setSpy2.takeFirst();
211 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
212 QVERIFY(setSpyArg.at(0).toString().compare(QString("test3")) == 0);
213 191
214 192 seriesSpyArg = seriesSpy.takeFirst();
215 193 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
216
217 //====================================================================================
218 // no event cases
219 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(1,1)); // Outside of both sets
220 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(1,1)); // Right mouse button outside and inside sets
221 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(900,180)); // barset 1, category test1
222 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(185,180)); // barset 1, category test2
223 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(280,180)); // barset 1, category test3
224 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(135,180)); // barset 2, category test1
225 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(230,180)); // barset 2, category test2
226 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(320,180)); // barset 2, category test3
227
228 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
229 QCOMPARE(setSpy1.count(), 0);
230 QCOMPARE(setSpy2.count(), 0);
231 QCOMPARE(seriesSpy.count(), 0);
194 QVERIFY(seriesSpyArg.at(1).type() == QVariant::String);
195 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test3")) == 0);
232 196 }
233 197
234 198 void tst_QGroupedBarSeries::mousehovered_data()
235 199 {
236 200
237 201 }
238 202
239 203 void tst_QGroupedBarSeries::mousehovered()
240 204 {
241 205 QGroupedBarSeries* series = new QGroupedBarSeries();
242 206 QBarCategories categories;
243 207 categories << "test1" << "test2" << "test3";
244 208 series->setCategories(categories);
245 209
246 210 QBarSet* set1 = new QBarSet(QString("set 1"));
247 211 *set1 << 10 << 10 << 10;
248 212 series->append(set1);
249 213
250 214 QBarSet* set2 = new QBarSet(QString("set 2"));
251 215 *set2 << 10 << 10 << 10;
252 216 series->append(set2);
253 217
254 QSignalSpy setSpy1(set1, SIGNAL(hovered(bool)));
255 QSignalSpy setSpy2(set2, SIGNAL(hovered(bool)));
256 218 QSignalSpy seriesSpy(series,SIGNAL(hovered(QBarSet*,bool)));
257 219
258 220 QChartView view(new QChart());
259 221 view.resize(400,300);
260 222 view.chart()->addSeries(series);
261 223 view.show();
262 224 QTest::qWaitForWindowShown(&view);
263 // QTest::qWait(1000*20);
264 225
265 226 //this is hack since view does not get events otherwise
266 227 view.setMouseTracking(true);
267 228
268 229 //=======================================================================
269 230 // move mouse to left border
270 231 qDebug() << "move mouse to left border";
271 QTest::mouseMove(view.viewport(), QPoint(0, 180));
232 QTest::mouseMove(view.viewport(), QPoint(0, 143));
272 233 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
273 234
274 QVERIFY(setSpy1.count() == 0);
275 QVERIFY(setSpy2.count() == 0);
276 235 QVERIFY(seriesSpy.count() == 0);
277 236
278 237 //=======================================================================
279 238 // move mouse on top of set1
280 239 qDebug() << "move mouse on top of set1";
281 QTest::mouseMove(view.viewport(), QPoint(90,180));
240 QTest::mouseMove(view.viewport(), QPoint(95,143));
282 241 QCoreApplication::processEvents(QEventLoop::AllEvents, 10000);
283 242
284 QVERIFY(setSpy1.count() == 1);
285 QVERIFY(setSpy2.count() == 0);
286 243 QVERIFY(seriesSpy.count() == 1);
287 244
288 QList<QVariant> setSpyArg = setSpy1.takeFirst();
289 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
290 QVERIFY(setSpyArg.at(0).toBool() == true);
291
292 245 QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
293 246 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
247 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
248 QVERIFY(seriesSpyArg.at(1).toBool() == true);
294 249
295 250 //=======================================================================
296 251 // move mouse from top of set1 to top of set2
297 252 qDebug() << "move mouse from top of set1 to top of set2";
298 QTest::mouseMove(view.viewport(), QPoint(135,180));
253 QTest::mouseMove(view.viewport(), QPoint(118,143));
299 254 QCoreApplication::processEvents(QEventLoop::AllEvents, 10000);
300 255
301 QVERIFY(setSpy1.count() == 1);
302 QVERIFY(setSpy2.count() == 1);
303 256 QVERIFY(seriesSpy.count() == 2);
304 257
305 258 // should leave set1
306 setSpyArg = setSpy1.takeFirst();
307 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
308 QVERIFY(setSpyArg.at(0).toBool() == false);
309
310 // should enter set2
311 setSpyArg = setSpy2.takeFirst();
312 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
313 QVERIFY(setSpyArg.at(0).toBool() == true);
314
315 // should leave set1
316 259 seriesSpyArg = seriesSpy.takeFirst();
317 260 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
318 261 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
319 262 QVERIFY(seriesSpyArg.at(1).toBool() == false);
320 263
321 264 // should enter set2
322 265 seriesSpyArg = seriesSpy.takeFirst();
323 266 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
324 267 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
325 268 QVERIFY(seriesSpyArg.at(1).toBool() == true);
326 269
327 270 //=======================================================================
328 271 // move mouse from top of set2 to background
329 272 qDebug() << "move mouse from top of set2 to background";
330 273
331 QTest::mouseMove(view.viewport(), QPoint(135,0));
274 QTest::mouseMove(view.viewport(), QPoint(118,0));
332 275 QCoreApplication::processEvents(QEventLoop::AllEvents, 10000);
333 276
334 QVERIFY(setSpy1.count() == 0);
335 QVERIFY(setSpy2.count() == 1);
336 277 QVERIFY(seriesSpy.count() == 1);
337 278
338 // should leave set2 (event via set)
339 setSpyArg = setSpy2.takeFirst();
340 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
341 QVERIFY(setSpyArg.at(0).toBool() == false);
342
343 // should leave set2 (event via series)
279 // should leave set2
344 280 seriesSpyArg = seriesSpy.takeFirst();
345 281 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
346 282 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
347 283 QVERIFY(seriesSpyArg.at(1).toBool() == false);
348 284 }
349 285
350 286 QTEST_MAIN(tst_QGroupedBarSeries)
351 287
352 288 #include "tst_qgroupedbarseries.moc"
353 289
@@ -1,344 +1,272
1 1 /****************************************************************************
2 2 **
3 3 ** Copyright (C) 2012 Digia Plc
4 4 ** All rights reserved.
5 5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 6 **
7 7 ** This file is part of the Qt Commercial Charts Add-on.
8 8 **
9 9 ** $QT_BEGIN_LICENSE$
10 10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 11 ** accordance with the Qt Commercial License Agreement provided with the
12 12 ** Software or, alternatively, in accordance with the terms contained in
13 13 ** a written agreement between you and Digia.
14 14 **
15 15 ** If you have questions regarding the use of this file, please use
16 16 ** contact form at http://qt.digia.com
17 17 ** $QT_END_LICENSE$
18 18 **
19 19 ****************************************************************************/
20 20
21 21 #include <QtTest/QtTest>
22 22 #include <qpercentbarseries.h>
23 23 #include <qbarset.h>
24 24 #include <qchartview.h>
25 25 #include <qchart.h>
26 26
27 27 QTCOMMERCIALCHART_USE_NAMESPACE
28 28
29 29 Q_DECLARE_METATYPE(QBarSet*)
30 30
31 31 class tst_QPercentBarSeries : public QObject
32 32 {
33 33 Q_OBJECT
34 34
35 35 public slots:
36 36 void initTestCase();
37 37 void cleanupTestCase();
38 38 void init();
39 39 void cleanup();
40 40
41 41 private slots:
42 42 void qpercentbarseries_data();
43 43 void qpercentbarseries();
44 44 void type_data();
45 45 void type();
46 46 void mouseclicked_data();
47 47 void mouseclicked();
48 48 void mousehovered_data();
49 49 void mousehovered();
50 50
51 51 private:
52 52 QPercentBarSeries* m_barseries;
53 53 };
54 54
55 55 void tst_QPercentBarSeries::initTestCase()
56 56 {
57 57 qRegisterMetaType<QBarSet*>("QBarSet*");
58 58 }
59 59
60 60 void tst_QPercentBarSeries::cleanupTestCase()
61 61 {
62 62 }
63 63
64 64 void tst_QPercentBarSeries::init()
65 65 {
66 66 m_barseries = new QPercentBarSeries();
67 67 }
68 68
69 69 void tst_QPercentBarSeries::cleanup()
70 70 {
71 71 delete m_barseries;
72 72 m_barseries = 0;
73 73 }
74 74
75 75 void tst_QPercentBarSeries::qpercentbarseries_data()
76 76 {
77 77 }
78 78
79 79 void tst_QPercentBarSeries::qpercentbarseries()
80 80 {
81 81 QPercentBarSeries *barseries = new QPercentBarSeries();
82 82 QVERIFY(barseries != 0);
83 83 }
84 84
85 85 void tst_QPercentBarSeries::type_data()
86 86 {
87 87
88 88 }
89 89
90 90 void tst_QPercentBarSeries::type()
91 91 {
92 92 QVERIFY(m_barseries->type() == QAbstractSeries::SeriesTypePercentBar);
93 93 }
94 94
95 95 void tst_QPercentBarSeries::mouseclicked_data()
96 96 {
97 97
98 98 }
99 99
100 100 void tst_QPercentBarSeries::mouseclicked()
101 101 {
102 102 QPercentBarSeries* series = new QPercentBarSeries();
103 103 QBarCategories categories;
104 104 categories << "test1" << "test2" << "test3";
105 105 series->setCategories(categories);
106 106
107 107 QBarSet* set1 = new QBarSet(QString("set 1"));
108 108 *set1 << 10 << 10 << 10;
109 109 series->append(set1);
110 110
111 111 QBarSet* set2 = new QBarSet(QString("set 2"));
112 112 *set2 << 10 << 10 << 10;
113 113 series->append(set2);
114 114
115 QSignalSpy setSpy1(set1, SIGNAL(clicked(QString)));
116 QSignalSpy setSpy2(set2, SIGNAL(clicked(QString)));
117 115 QSignalSpy seriesSpy(series,SIGNAL(clicked(QBarSet*,QString)));
118 116
119 117 QChartView view(new QChart());
120 118 view.resize(400,300);
121 119 view.chart()->addSeries(series);
122 120 view.show();
123 121 QTest::qWaitForWindowShown(&view);
124 122
125 123 //====================================================================================
126 124 // barset 1, category test1
127 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(115,230));
125 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(106,190));
128 126 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
129 127
130 QCOMPARE(setSpy1.count(), 1);
131 QCOMPARE(setSpy2.count(), 0);
132 128 QCOMPARE(seriesSpy.count(), 1);
133 QList<QVariant> setSpyArg = setSpy1.takeFirst();
134 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
135 QVERIFY(setSpyArg.at(0).toString().compare(QString("test1")) == 0);
136 129
137 130 QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
138 131 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
132 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test1")) == 0);
139 133
140 134 //====================================================================================
141 135 // barset 1, category test2
142 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(205,230));
136 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(199,190));
143 137 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
144 138
145 QCOMPARE(setSpy1.count(), 1);
146 QCOMPARE(setSpy2.count(), 0);
147 139 QCOMPARE(seriesSpy.count(), 1);
148 setSpyArg = setSpy1.takeFirst();
149 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
150 QVERIFY(setSpyArg.at(0).toString().compare(QString("test2")) == 0);
151 140
152 141 seriesSpyArg = seriesSpy.takeFirst();
153 142 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
143 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test2")) == 0);
154 144
155 145 //====================================================================================
156 146 // barset 1, category test3
157 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(300,230));
147 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(292,190));
158 148 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
159 149
160 QCOMPARE(setSpy1.count(), 1);
161 QCOMPARE(setSpy2.count(), 0);
162 150 QCOMPARE(seriesSpy.count(), 1);
163 setSpyArg = setSpy1.takeFirst();
164 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
165 QVERIFY(setSpyArg.at(0).toString().compare(QString("test3")) == 0);
166 151
167 152 seriesSpyArg = seriesSpy.takeFirst();
168 153 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
154 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test3")) == 0);
169 155
170 156 //====================================================================================
171 157 // barset 2, category test1
172 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(115,140));
158 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(106,95));
173 159 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
174 160
175 QCOMPARE(setSpy1.count(), 0);
176 QCOMPARE(setSpy2.count(), 1);
177 161 QCOMPARE(seriesSpy.count(), 1);
178 setSpyArg = setSpy2.takeFirst();
179 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
180 QVERIFY(setSpyArg.at(0).toString().compare(QString("test1")) == 0);
181 162
182 163 seriesSpyArg = seriesSpy.takeFirst();
183 164 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
165 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test1")) == 0);
184 166
185 167 //====================================================================================
186 168 // barset 2, category test2
187 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(205,140));
169 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(199,95));
188 170 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
189 171
190 QCOMPARE(setSpy1.count(), 0);
191 QCOMPARE(setSpy2.count(), 1);
192 172 QCOMPARE(seriesSpy.count(), 1);
193 setSpyArg = setSpy2.takeFirst();
194 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
195 QVERIFY(setSpyArg.at(0).toString().compare(QString("test2")) == 0);
196 173
197 174 seriesSpyArg = seriesSpy.takeFirst();
198 175 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
176 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test2")) == 0);
199 177
200 178 //====================================================================================
201 179 // barset 2, category test3
202 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(300,140));
180 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(292,95));
203 181 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
204 182
205 QCOMPARE(setSpy1.count(), 0);
206 QCOMPARE(setSpy2.count(), 1);
207 183 QCOMPARE(seriesSpy.count(), 1);
208 setSpyArg = setSpy2.takeFirst();
209 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
210 QVERIFY(setSpyArg.at(0).toString().compare(QString("test3")) == 0);
211 184
212 185 seriesSpyArg = seriesSpy.takeFirst();
213 186 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
214
215 //====================================================================================
216 // no event cases
217 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(1,1)); // Outside of both sets
218 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(1,1)); // Right mouse button outside and inside sets
219 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(115,230)); // barset 1, category test1
220 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(205,230)); // barset 1, category test2
221 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(300,230)); // barset 1, category test3
222 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(115,140)); // barset 2, category test1
223 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(205,140)); // barset 2, category test2
224 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(300,140)); // barset 2, category test3
225
226 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
227 QCOMPARE(setSpy1.count(), 0);
228 QCOMPARE(setSpy2.count(), 0);
229 QCOMPARE(seriesSpy.count(), 0);
187 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test3")) == 0);
230 188 }
231 189
232 190 void tst_QPercentBarSeries::mousehovered_data()
233 191 {
234 192
235 193 }
236 194
237 195 void tst_QPercentBarSeries::mousehovered()
238 196 {
239 197 QPercentBarSeries* series = new QPercentBarSeries();
240 198 QBarCategories categories;
241 199 categories << "test1" << "test2" << "test3";
242 200 series->setCategories(categories);
243 201
244 202 QBarSet* set1 = new QBarSet(QString("set 1"));
245 203 *set1 << 10 << 10 << 10;
246 204 series->append(set1);
247 205
248 206 QBarSet* set2 = new QBarSet(QString("set 2"));
249 207 *set2 << 10 << 10 << 10;
250 208 series->append(set2);
251 209
252 QSignalSpy setSpy1(set1, SIGNAL(hovered(bool)));
253 QSignalSpy setSpy2(set2, SIGNAL(hovered(bool)));
254 210 QSignalSpy seriesSpy(series,SIGNAL(hovered(QBarSet*,bool)));
255 211
256 212 QChartView view(new QChart());
257 213 view.resize(400,300);
258 214 view.chart()->addSeries(series);
259 215 view.show();
260 216 QTest::qWaitForWindowShown(&view);
261 217
218 //this is hack since view does not get events otherwise
219 view.setMouseTracking(true);
220
262 221 //=======================================================================
263 222 // move mouse to left border
264 QTest::mouseMove(view.viewport(), QPoint(0, 230));
265
223 QTest::mouseMove(view.viewport(), QPoint(0, 190));
266 224
267 QVERIFY(setSpy1.count() == 0);
268 QVERIFY(setSpy2.count() == 0);
269 225 QVERIFY(seriesSpy.count() == 0);
270 226
271 227 //=======================================================================
272 228 // move mouse on top of set1
273 QTest::mouseMove(view.viewport(), QPoint(115,230));
229 QTest::mouseMove(view.viewport(), QPoint(106,190));
274 230
275 QVERIFY(setSpy1.count() == 1);
276 QVERIFY(setSpy2.count() == 0);
277 231 QVERIFY(seriesSpy.count() == 1);
278 232
279 QList<QVariant> setSpyArg = setSpy1.takeFirst();
280 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
281 QVERIFY(setSpyArg.at(0).toBool() == true);
282
283 233 QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
284 234 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
235 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
236 QVERIFY(seriesSpyArg.at(1).toBool() == true);
285 237
286 238 //=======================================================================
287 239 // move mouse from top of set1 to top of set2
288 QTest::mouseMove(view.viewport(), QPoint(115,140));
240 QTest::mouseMove(view.viewport(), QPoint(106,95));
289 241
290 QVERIFY(setSpy1.count() == 1);
291 QVERIFY(setSpy2.count() == 1);
292 242 QVERIFY(seriesSpy.count() == 2);
293 243
294 244 // should leave set1
295 setSpyArg = setSpy1.takeFirst();
296 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
297 QVERIFY(setSpyArg.at(0).toBool() == false);
298
299 // should enter set2
300 setSpyArg = setSpy2.takeFirst();
301 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
302 QVERIFY(setSpyArg.at(0).toBool() == true);
303
304 // should leave set1
305 245 seriesSpyArg = seriesSpy.takeFirst();
306 246 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
307 247 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
308 248 QVERIFY(seriesSpyArg.at(1).toBool() == false);
309 249
310 250 // should enter set2
311 251 seriesSpyArg = seriesSpy.takeFirst();
312 252 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
313 253 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
314 254 QVERIFY(seriesSpyArg.at(1).toBool() == true);
315 255
316 256 //=======================================================================
317 257 // move mouse from top of set2 to background
318 QTest::mouseMove(view.viewport(), QPoint(0,140));
258 QTest::mouseMove(view.viewport(), QPoint(106,0));
319 259
320 QVERIFY(setSpy1.count() == 0);
321 QVERIFY(setSpy2.count() == 1);
322 260 QVERIFY(seriesSpy.count() == 1);
323 261
324 // should leave set2 (event via set)
325 setSpyArg = setSpy2.takeFirst();
326 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
327 QVERIFY(setSpyArg.at(0).toBool() == false);
328
329 // should leave set2 (event via series)
262 // should leave set2
330 263 seriesSpyArg = seriesSpy.takeFirst();
331 264 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
332 265 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
333 266 QVERIFY(seriesSpyArg.at(1).toBool() == false);
334 267 }
335 268
336 /*
337 bool setModel(QAbstractItemModel *model);
338 void setModelMapping(int categories, int bottomBoundary, int topBoundary, Qt::Orientation orientation = Qt::Vertical);
339 void setModelMappingRange(int first, int count = -1);
340 */
341 269 QTEST_MAIN(tst_QPercentBarSeries)
342 270
343 271 #include "tst_qpercentbarseries.moc"
344 272
@@ -1,344 +1,272
1 1 /****************************************************************************
2 2 **
3 3 ** Copyright (C) 2012 Digia Plc
4 4 ** All rights reserved.
5 5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 6 **
7 7 ** This file is part of the Qt Commercial Charts Add-on.
8 8 **
9 9 ** $QT_BEGIN_LICENSE$
10 10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 11 ** accordance with the Qt Commercial License Agreement provided with the
12 12 ** Software or, alternatively, in accordance with the terms contained in
13 13 ** a written agreement between you and Digia.
14 14 **
15 15 ** If you have questions regarding the use of this file, please use
16 16 ** contact form at http://qt.digia.com
17 17 ** $QT_END_LICENSE$
18 18 **
19 19 ****************************************************************************/
20 20
21 21 #include <QtTest/QtTest>
22 22 #include <qstackedbarseries.h>
23 23 #include <qbarset.h>
24 24 #include <qchartview.h>
25 25 #include <qchart.h>
26 26
27 27 QTCOMMERCIALCHART_USE_NAMESPACE
28 28
29 29 Q_DECLARE_METATYPE(QBarSet*)
30 30
31 31 class tst_QStackedBarSeries : public QObject
32 32 {
33 33 Q_OBJECT
34 34
35 35 public slots:
36 36 void initTestCase();
37 37 void cleanupTestCase();
38 38 void init();
39 39 void cleanup();
40 40
41 41 private slots:
42 42 void qstackedbarseries_data();
43 43 void qstackedbarseries();
44 44 void type_data();
45 45 void type();
46 46 void mouseclicked_data();
47 47 void mouseclicked();
48 48 void mousehovered_data();
49 49 void mousehovered();
50 50
51 51 private:
52 52 QStackedBarSeries* m_barseries;
53 53 };
54 54
55 55 void tst_QStackedBarSeries::initTestCase()
56 56 {
57 57 qRegisterMetaType<QBarSet*>("QBarSet*");
58 58 }
59 59
60 60 void tst_QStackedBarSeries::cleanupTestCase()
61 61 {
62 62 }
63 63
64 64 void tst_QStackedBarSeries::init()
65 65 {
66 66 m_barseries = new QStackedBarSeries();
67 67 }
68 68
69 69 void tst_QStackedBarSeries::cleanup()
70 70 {
71 71 delete m_barseries;
72 72 m_barseries = 0;
73 73 }
74 74
75 75 void tst_QStackedBarSeries::qstackedbarseries_data()
76 76 {
77 77 }
78 78
79 79 void tst_QStackedBarSeries::qstackedbarseries()
80 80 {
81 81 QStackedBarSeries *barseries = new QStackedBarSeries();
82 82 QVERIFY(barseries != 0);
83 83 }
84 84
85 85 void tst_QStackedBarSeries::type_data()
86 86 {
87 87
88 88 }
89 89
90 90 void tst_QStackedBarSeries::type()
91 91 {
92 92 QVERIFY(m_barseries->type() == QAbstractSeries::SeriesTypeStackedBar);
93 93 }
94 94
95 95 void tst_QStackedBarSeries::mouseclicked_data()
96 96 {
97 97
98 98 }
99 99
100 100 void tst_QStackedBarSeries::mouseclicked()
101 101 {
102 102 QStackedBarSeries* series = new QStackedBarSeries();
103 103 QBarCategories categories;
104 104 categories << "test1" << "test2" << "test3";
105 105 series->setCategories(categories);
106 106
107 107 QBarSet* set1 = new QBarSet(QString("set 1"));
108 108 *set1 << 10 << 10 << 10;
109 109 series->append(set1);
110 110
111 111 QBarSet* set2 = new QBarSet(QString("set 2"));
112 112 *set2 << 10 << 10 << 10;
113 113 series->append(set2);
114 114
115 QSignalSpy setSpy1(set1, SIGNAL(clicked(QString)));
116 QSignalSpy setSpy2(set2, SIGNAL(clicked(QString)));
117 115 QSignalSpy seriesSpy(series,SIGNAL(clicked(QBarSet*,QString)));
118 116
119 117 QChartView view(new QChart());
120 118 view.resize(400,300);
121 119 view.chart()->addSeries(series);
122 120 view.show();
123 121 QTest::qWaitForWindowShown(&view);
124 122
125 123 //====================================================================================
126 124 // barset 1, category test1
127 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(115,230));
125 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(106,190));
128 126 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
129 127
130 QCOMPARE(setSpy1.count(), 1);
131 QCOMPARE(setSpy2.count(), 0);
132 128 QCOMPARE(seriesSpy.count(), 1);
133 QList<QVariant> setSpyArg = setSpy1.takeFirst();
134 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
135 QVERIFY(setSpyArg.at(0).toString().compare(QString("test1")) == 0);
136 129
137 130 QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
138 131 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
132 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test1")) == 0);
139 133
140 134 //====================================================================================
141 135 // barset 1, category test2
142 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(205,230));
136 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(199,190));
143 137 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
144 138
145 QCOMPARE(setSpy1.count(), 1);
146 QCOMPARE(setSpy2.count(), 0);
147 139 QCOMPARE(seriesSpy.count(), 1);
148 setSpyArg = setSpy1.takeFirst();
149 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
150 QVERIFY(setSpyArg.at(0).toString().compare(QString("test2")) == 0);
151 140
152 141 seriesSpyArg = seriesSpy.takeFirst();
153 142 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
143 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test2")) == 0);
154 144
155 145 //====================================================================================
156 146 // barset 1, category test3
157 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(300,230));
147 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(292,190));
158 148 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
159 149
160 QCOMPARE(setSpy1.count(), 1);
161 QCOMPARE(setSpy2.count(), 0);
162 150 QCOMPARE(seriesSpy.count(), 1);
163 setSpyArg = setSpy1.takeFirst();
164 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
165 QVERIFY(setSpyArg.at(0).toString().compare(QString("test3")) == 0);
166 151
167 152 seriesSpyArg = seriesSpy.takeFirst();
168 153 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
154 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test3")) == 0);
169 155
170 156 //====================================================================================
171 157 // barset 2, category test1
172 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(115,140));
158 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(106,95));
173 159 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
174 160
175 QCOMPARE(setSpy1.count(), 0);
176 QCOMPARE(setSpy2.count(), 1);
177 161 QCOMPARE(seriesSpy.count(), 1);
178 setSpyArg = setSpy2.takeFirst();
179 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
180 QVERIFY(setSpyArg.at(0).toString().compare(QString("test1")) == 0);
181 162
182 163 seriesSpyArg = seriesSpy.takeFirst();
183 164 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
165 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test1")) == 0);
184 166
185 167 //====================================================================================
186 168 // barset 2, category test2
187 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(205,140));
169 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(199,95));
188 170 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
189 171
190 QCOMPARE(setSpy1.count(), 0);
191 QCOMPARE(setSpy2.count(), 1);
192 172 QCOMPARE(seriesSpy.count(), 1);
193 setSpyArg = setSpy2.takeFirst();
194 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
195 QVERIFY(setSpyArg.at(0).toString().compare(QString("test2")) == 0);
196 173
197 174 seriesSpyArg = seriesSpy.takeFirst();
198 175 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
176 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test2")) == 0);
199 177
200 178 //====================================================================================
201 179 // barset 2, category test3
202 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(300,140));
180 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(292,95));
203 181 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
204 182
205 QCOMPARE(setSpy1.count(), 0);
206 QCOMPARE(setSpy2.count(), 1);
207 183 QCOMPARE(seriesSpy.count(), 1);
208 setSpyArg = setSpy2.takeFirst();
209 QVERIFY(setSpyArg.at(0).type() == QVariant::String);
210 QVERIFY(setSpyArg.at(0).toString().compare(QString("test3")) == 0);
211 184
212 185 seriesSpyArg = seriesSpy.takeFirst();
213 186 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
214
215 //====================================================================================
216 // no event cases
217 QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(1,1)); // Outside of both sets
218 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(1,1)); // Right mouse button outside and inside sets
219 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(115,230)); // barset 1, category test1
220 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(205,230)); // barset 1, category test2
221 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(300,230)); // barset 1, category test3
222 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(115,140)); // barset 2, category test1
223 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(205,140)); // barset 2, category test2
224 QTest::mouseClick(view.viewport(), Qt::RightButton, 0, QPoint(300,140)); // barset 2, category test3
225
226 QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
227 QCOMPARE(setSpy1.count(), 0);
228 QCOMPARE(setSpy2.count(), 0);
229 QCOMPARE(seriesSpy.count(), 0);
187 QVERIFY(seriesSpyArg.at(1).toString().compare(QString("test3")) == 0);
230 188 }
231 189
232 190 void tst_QStackedBarSeries::mousehovered_data()
233 191 {
234 192
235 193 }
236 194
237 195 void tst_QStackedBarSeries::mousehovered()
238 196 {
239 197 QStackedBarSeries* series = new QStackedBarSeries();
240 198 QBarCategories categories;
241 199 categories << "test1" << "test2" << "test3";
242 200 series->setCategories(categories);
243 201
244 202 QBarSet* set1 = new QBarSet(QString("set 1"));
245 203 *set1 << 10 << 10 << 10;
246 204 series->append(set1);
247 205
248 206 QBarSet* set2 = new QBarSet(QString("set 2"));
249 207 *set2 << 10 << 10 << 10;
250 208 series->append(set2);
251 209
252 QSignalSpy setSpy1(set1, SIGNAL(hovered(bool)));
253 QSignalSpy setSpy2(set2, SIGNAL(hovered(bool)));
254 210 QSignalSpy seriesSpy(series,SIGNAL(hovered(QBarSet*,bool)));
255 211
256 212 QChartView view(new QChart());
257 213 view.resize(400,300);
258 214 view.chart()->addSeries(series);
259 215 view.show();
260 216 QTest::qWaitForWindowShown(&view);
261 217
218 //this is hack since view does not get events otherwise
219 view.setMouseTracking(true);
220
262 221 //=======================================================================
263 222 // move mouse to left border
264 QTest::mouseMove(view.viewport(), QPoint(0, 230));
223 QTest::mouseMove(view.viewport(), QPoint(0, 190));
265 224
266 QVERIFY(setSpy1.count() == 0);
267 QVERIFY(setSpy2.count() == 0);
268 225 QVERIFY(seriesSpy.count() == 0);
269 226
270 227 //=======================================================================
271 228 // move mouse on top of set1
272 QTest::mouseMove(view.viewport(), QPoint(115,230));
229 QTest::mouseMove(view.viewport(), QPoint(106,190));
273 230
274 QVERIFY(setSpy1.count() == 1);
275 QVERIFY(setSpy2.count() == 0);
276 231 QVERIFY(seriesSpy.count() == 1);
277 232
278 QList<QVariant> setSpyArg = setSpy1.takeFirst();
279 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
280 QVERIFY(setSpyArg.at(0).toBool() == true);
281
282 233 QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
283 234 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
235 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
236 QVERIFY(seriesSpyArg.at(1).toBool() == true);
284 237
285 238 //=======================================================================
286 239 // move mouse from top of set1 to top of set2
287 QTest::mouseMove(view.viewport(), QPoint(115,140));
240 QTest::mouseMove(view.viewport(), QPoint(106,95));
288 241
289 QVERIFY(setSpy1.count() == 1);
290 QVERIFY(setSpy2.count() == 1);
291 242 QVERIFY(seriesSpy.count() == 2);
292 243
293 244 // should leave set1
294 setSpyArg = setSpy1.takeFirst();
295 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
296 QVERIFY(setSpyArg.at(0).toBool() == false);
297
298 // should enter set2
299 setSpyArg = setSpy2.takeFirst();
300 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
301 QVERIFY(setSpyArg.at(0).toBool() == true);
302
303 // should leave set1
304 245 seriesSpyArg = seriesSpy.takeFirst();
305 246 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set1);
306 247 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
307 248 QVERIFY(seriesSpyArg.at(1).toBool() == false);
308 249
309 250 // should enter set2
310 251 seriesSpyArg = seriesSpy.takeFirst();
311 252 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
312 253 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
313 254 QVERIFY(seriesSpyArg.at(1).toBool() == true);
314 255
315 256 //=======================================================================
316 257 // move mouse from top of set2 to background
317 QTest::mouseMove(view.viewport(), QPoint(0,140));
258 QTest::mouseMove(view.viewport(), QPoint(106,0));
318 259
319 QVERIFY(setSpy1.count() == 0);
320 QVERIFY(setSpy2.count() == 1);
321 260 QVERIFY(seriesSpy.count() == 1);
322 261
323 // should leave set2 (event via set)
324 setSpyArg = setSpy2.takeFirst();
325 QVERIFY(setSpyArg.at(0).type() == QVariant::Bool);
326 QVERIFY(setSpyArg.at(0).toBool() == false);
327
328 // should leave set2 (event via series)
262 // should leave set2
329 263 seriesSpyArg = seriesSpy.takeFirst();
330 264 QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(0)), set2);
331 265 QVERIFY(seriesSpyArg.at(1).type() == QVariant::Bool);
332 266 QVERIFY(seriesSpyArg.at(1).toBool() == false);
333 267 }
334 268
335
336 /*
337 bool setModel(QAbstractItemModel *model);
338 void setModelMapping(int categories, int bottomBoundary, int topBoundary, Qt::Orientation orientation = Qt::Vertical);
339 void setModelMappingRange(int first, int count = -1);
340 */
341 269 QTEST_MAIN(tst_QStackedBarSeries)
342 270
343 271 #include "tst_qstackedbarseries.moc"
344 272
General Comments 0
You need to be logged in to leave comments. Login now