##// END OF EJS Templates
Fixed bar label visibility...
Fixed bar label visibility Label for bars with zero value is not shown. This is done to avoid overlapping labels. Change-Id: Ife30c04e8ae4d9ac9df1209967cc3cd3ecb76a4f Task-number: QTRD-3695 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>

File last commit:

r2776:bc1f6aa59d42
r2814:79dc9c599f41
Show More
tst_qbarcategoryaxis.cpp
708 lines | 19.1 KiB | text/x-c | CppLexer
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd
** All rights reserved.
** For any questions to The Qt Company, please use contact form at http://qt.io
**
** This file is part of the Qt Charts module.
**
** Licensees holding valid commercial license for Qt may use this file in
** accordance with the Qt License Agreement provided with the Software
** or, alternatively, in accordance with the terms contained in a written
** agreement between you and The Qt Company.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.io
**
****************************************************************************/
#include "../qabstractaxis/tst_qabstractaxis.h"
#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QBarCategoryAxis>
class tst_QBarCategoriesAxis: public tst_QAbstractAxis
{
Q_OBJECT
public slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
private slots:
void qbarcategoryaxis_data();
void qbarcategoryaxis();
void append2_data();
void append2();
void append_data();
void append();
void at_data();
void at();
void categories_data();
void categories();
void clear_data();
void clear();
void count_data();
void count();
void insert_data();
void insert();
void remove_data();
void remove();
void max_raw_data();
void max_raw();
void max_data();
void max();
void max_animation_data();
void max_animation();
void min_raw_data();
void min_raw();
void min_data();
void min();
void min_animation_data();
void min_animation();
void range_raw_data();
void range_raw();
void range_data();
void range();
void range_animation_data();
void range_animation();
void noautoscale_data();
void noautoscale();
void autoscale_data();
void autoscale();
private:
QBarCategoryAxis* m_baraxis;
QBarSeries* m_series;
};
void tst_QBarCategoriesAxis::initTestCase()
{
}
void tst_QBarCategoriesAxis::cleanupTestCase()
{
QTest::qWait(1); // Allow final deleteLaters to run
}
void tst_QBarCategoriesAxis::init()
{
m_baraxis = new QBarCategoryAxis();
m_series = new QBarSeries();
QBarSet *set0 = new QBarSet("Jane");
QBarSet *set1 = new QBarSet("John");
QBarSet *set2 = new QBarSet("Axel");
QBarSet *set3 = new QBarSet("Mary");
QBarSet *set4 = new QBarSet("Samantha");
*set0 << 1 << 2 << 3 << 4 << 5 << 6;
*set1 << 5 << 0 << 0 << 4 << 0 << 7;
*set2 << 3 << 5 << 8 << 13 << 8 << 5;
*set3 << 5 << 6 << 7 << 3 << 4 << 5;
*set4 << 9 << 7 << 5 << 3 << 1 << 2;
m_series->append(set0);
m_series->append(set1);
m_series->append(set2);
m_series->append(set3);
m_series->append(set4);
QStringList categories;
categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
foreach(QString category, categories)
m_baraxis->append(category);
tst_QAbstractAxis::init(m_baraxis, m_series);
m_chart->addSeries(m_series);
m_chart->createDefaultAxes();
}
void tst_QBarCategoriesAxis::cleanup()
{
delete m_series;
delete m_baraxis;
m_series = 0;
m_baraxis = 0;
tst_QAbstractAxis::cleanup();
}
void tst_QBarCategoriesAxis::qbarcategoryaxis_data()
{
}
void tst_QBarCategoriesAxis::qbarcategoryaxis()
{
qabstractaxis();
QBarCategoryAxis axis;
axis.append(QStringList());
axis.append(QString());
QCOMPARE(axis.count(), 0);
QStringList test;
QCOMPARE(axis.categories(),test);
axis.clear();
QCOMPARE(axis.count(), 0);
axis.insert(-1, QString());
QCOMPARE(axis.max(), QString());
QCOMPARE(axis.min(), QString());
axis.remove(QString());
axis.setCategories(QStringList());
axis.setMax(QString());
axis.setMin(QString());
axis.setRange(QString(), QString());
QCOMPARE(axis.type(), QAbstractAxis::AxisTypeBarCategory);
}
void tst_QBarCategoriesAxis::append_data()
{
QTest::addColumn<QStringList>("categories");
QTest::newRow("Jan Feb Mar Apr") << (QStringList() << "Jan" << "Feb" << "Mar" << "Apr");
QTest::newRow("Jul Aug Sep") << (QStringList() << "Jul" << "Aug" << "Sep");
}
void tst_QBarCategoriesAxis::append()
{
QFETCH(QStringList, categories);
QBarCategoryAxis axis;
QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(&axis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(&axis, SIGNAL(countChanged()));
axis.append(categories);
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), 1);
m_chart->setAxisX(&axis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
QCOMPARE(axis.categories(), categories);
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), 1);
QCOMPARE(spy4.count(), 1);
}
void tst_QBarCategoriesAxis::append2_data()
{
QTest::addColumn<QStringList>("categories");
QTest::newRow("Jan Feb Mar Apr") << (QStringList() << "Jan" << "Feb" << "Mar" << "Apr");
QTest::newRow("Jul Aug Sep") << (QStringList() << "Jul" << "Aug" << "Sep");
}
void tst_QBarCategoriesAxis::append2()
{
QFETCH(QStringList, categories);
QBarCategoryAxis axis;
QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(&axis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(&axis, SIGNAL(countChanged()));
foreach(QString category, categories)
axis.append(category);
QCOMPARE(spy0.count(), categories.count());
QCOMPARE(spy1.count(), categories.count());
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), categories.count());
m_chart->setAxisX(&axis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
QCOMPARE(axis.categories(), categories);
QCOMPARE(spy0.count(), categories.count());
QCOMPARE(spy1.count(), categories.count());
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), categories.count());
QCOMPARE(spy4.count(), categories.count());
}
void tst_QBarCategoriesAxis::at_data()
{
QTest::addColumn<QStringList>("categories");
QTest::addColumn<int>("index");
QTest::addColumn<QString>("string");
QTest::newRow("Jul Aug Sep 0 Jul") << (QStringList() << "Jul" << "Aug" << "Sep") << 0 << "Jul";
QTest::newRow("Jul Aug Sep 2 Sep") << (QStringList() << "Jul" << "Aug" << "Sep") << 2 << "Sep";
QTest::newRow("Jul Aug Sep 1 Aug") << (QStringList() << "Jul" << "Aug" << "Sep") << 1 << "Aug";
}
void tst_QBarCategoriesAxis::at()
{
QFETCH(int, index);
QFETCH(QString, string);
QFETCH(QStringList, categories);
QBarCategoryAxis axis;
axis.append(categories);
QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(&axis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(&axis, SIGNAL(countChanged()));
QCOMPARE(axis.at(index), string);
QCOMPARE(spy0.count(), 0);
QCOMPARE(spy1.count(), 0);
QCOMPARE(spy2.count(), 0);
QCOMPARE(spy3.count(), 0);
m_chart->setAxisX(&axis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
QCOMPARE(axis.at(index), string);
QCOMPARE(spy0.count(), 0);
QCOMPARE(spy1.count(), 0);
QCOMPARE(spy2.count(), 0);
QCOMPARE(spy3.count(), 0);
QCOMPARE(spy4.count(), 0);
}
void tst_QBarCategoriesAxis::categories_data()
{
QTest::addColumn<QStringList>("categories");
QTest::newRow("Jul Aug Sep") << (QStringList() << "Jul" << "Aug" << "Sep");
}
void tst_QBarCategoriesAxis::categories()
{
QFETCH(QStringList, categories);
QBarCategoryAxis axis;
QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(&axis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(&axis, SIGNAL(countChanged()));
axis.setCategories(categories);
QCOMPARE(axis.categories(), categories);
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), 1);
m_chart->setAxisX(&axis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
QCOMPARE(axis.categories(), categories);
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), 1);
QCOMPARE(spy4.count(), 1);
}
void tst_QBarCategoriesAxis::clear_data()
{
QTest::addColumn<QStringList>("categories");
QTest::newRow("Jul Aug Sep") << (QStringList() << "Jul" << "Aug" << "Sep");
}
void tst_QBarCategoriesAxis::clear()
{
QFETCH(QStringList, categories);
QBarCategoryAxis axis;
axis.setCategories(categories);
QCOMPARE(axis.categories(), categories);
QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(&axis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(&axis, SIGNAL(countChanged()));
axis.clear();
QCOMPARE(axis.categories(), QStringList());
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), 1);
m_chart->setAxisX(&axis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
QCOMPARE(spy0.count(), 2);
QCOMPARE(spy1.count(), 2);
QCOMPARE(spy2.count(), 2);
QCOMPARE(spy3.count(), 2);
axis.clear();
QCOMPARE(axis.categories().count(),0);
QCOMPARE(spy0.count(), 3);
QCOMPARE(spy1.count(), 3);
QCOMPARE(spy2.count(), 3);
QCOMPARE(spy3.count(), 3);
QCOMPARE(spy4.count(), 3);
}
void tst_QBarCategoriesAxis::count_data()
{
QTest::addColumn<QStringList>("categories");
QTest::addColumn<int>("count");
QTest::newRow("Jul Aug Sep") << (QStringList() << "Jul" << "Aug" << "Sep") << 3;
QTest::newRow("Jul Aug ") << (QStringList() << "Jul" << "Aug") << 2;
}
void tst_QBarCategoriesAxis::count()
{
QFETCH(QStringList, categories);
QFETCH(int, count);
QBarCategoryAxis axis;
axis.setCategories(categories);
QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(&axis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(&axis, SIGNAL(countChanged()));
QCOMPARE(axis.count(), count);
QCOMPARE(spy0.count(), 0);
QCOMPARE(spy1.count(), 0);
QCOMPARE(spy2.count(), 0);
QCOMPARE(spy3.count(), 0);
QCOMPARE(spy4.count(), 0);
m_chart->setAxisX(&axis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
QCOMPARE(axis.count(), count);
}
void tst_QBarCategoriesAxis::insert_data()
{
QTest::addColumn<QStringList>("categories");
QTest::addColumn<int>("index");
QTest::addColumn<QString>("category");
QTest::newRow("Jul Aug Sep 0 Jun") << (QStringList() << "Jul" << "Aug" << "Sep") << 1 << "Jun";
QTest::newRow("Jul Aug Sep 2 Summer") << (QStringList() << "Jul" << "Aug" << "Sep") << 2 << "Summer";
}
void tst_QBarCategoriesAxis::insert()
{
QFETCH(QStringList, categories);
QFETCH(int, index);
QFETCH(QString, category);
QBarCategoryAxis axis;
axis.append(categories);
QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(&axis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(&axis, SIGNAL(countChanged()));
axis.insert(index, category);
QCOMPARE(axis.at(index),category);
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), 0);
QCOMPARE(spy2.count(), 0);
QCOMPARE(spy3.count(), 0);
QCOMPARE(spy4.count(), 1);
m_chart->setAxisX(&axis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
}
void tst_QBarCategoriesAxis::remove_data()
{
QTest::addColumn<QStringList>("categories");
QTest::addColumn<QString>("category");
QTest::addColumn<QStringList>("result");
QTest::newRow("Jul Aug Sep 0") << (QStringList() << "Jul" << "Aug" << "Sep") << "Jul" << (QStringList() << "Aug" << "Sep");
QTest::newRow("Jul Aug Sep 1") << (QStringList() << "Jul" << "Aug" << "Sep") << "Aug"<< (QStringList() << "Jul" << "Sep");
}
void tst_QBarCategoriesAxis::remove()
{
QFETCH(QStringList, categories);
QFETCH(QString, category);
QFETCH(QStringList, result);
QBarCategoryAxis axis;
axis.append(categories);
int maxCount = axis.max() == category;
int minCount = axis.min() == category;
int rangeCount = maxCount + minCount;
QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(&axis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(&axis, SIGNAL(countChanged()));
axis.remove(category);
QCOMPARE(axis.categories(),result);
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), maxCount);
QCOMPARE(spy2.count(), minCount);
QCOMPARE(spy3.count(), rangeCount);
QCOMPARE(spy4.count(), 1);
}
void tst_QBarCategoriesAxis::max_raw_data()
{
//"Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
QTest::addColumn<QString>("max");
QTest::newRow("Feb") << "Feb";
QTest::newRow("Apr") << "Apr";
QTest::newRow("May") << "May";
}
void tst_QBarCategoriesAxis::max_raw()
{
QFETCH(QString, max);
QSignalSpy spy0(m_baraxis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(m_baraxis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(m_baraxis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(m_baraxis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(m_baraxis, SIGNAL(countChanged()));
m_baraxis->setMax(max);
QCOMPARE(m_baraxis->max(), max);
QCOMPARE(spy0.count(), 0);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 0);
QCOMPARE(spy3.count(), 1);
QCOMPARE(spy4.count(), 0);
}
void tst_QBarCategoriesAxis::max_data()
{
max_raw_data();
}
void tst_QBarCategoriesAxis::max()
{
m_chart->setAxisX(m_baraxis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
max_raw();
}
void tst_QBarCategoriesAxis::max_animation_data()
{
max_data();
}
void tst_QBarCategoriesAxis::max_animation()
{
m_chart->setAnimationOptions(QChart::GridAxisAnimations);
max();
}
void tst_QBarCategoriesAxis::min_raw_data()
{
//"Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
QTest::addColumn<QString>("min");
QTest::newRow("Feb") << "Feb";
QTest::newRow("Apr") << "Apr";
QTest::newRow("May") << "May";
}
void tst_QBarCategoriesAxis::min_raw()
{
QFETCH(QString, min);
QSignalSpy spy0(m_baraxis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(m_baraxis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(m_baraxis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(m_baraxis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(m_baraxis, SIGNAL(countChanged()));
m_baraxis->setMin(min);
QCOMPARE(m_baraxis->min(), min);
QCOMPARE(spy0.count(), 0);
QCOMPARE(spy1.count(), 0);
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), 1);
QCOMPARE(spy4.count(), 0);
}
void tst_QBarCategoriesAxis::min_data()
{
min_raw_data();
}
void tst_QBarCategoriesAxis::min()
{
min_raw();
m_chart->setAxisX(m_baraxis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
}
void tst_QBarCategoriesAxis::min_animation_data()
{
min_data();
}
void tst_QBarCategoriesAxis::min_animation()
{
m_chart->setAnimationOptions(QChart::GridAxisAnimations);
min();
}
void tst_QBarCategoriesAxis::range_raw_data()
{
//"Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
QTest::addColumn<QString>("min");
QTest::addColumn<QString>("max");
QTest::newRow("Feb - Apr") << "Feb" << "Apr";
QTest::newRow("Feb - May") << "Feb" << "May";
QTest::newRow("Mar - Apr") << "Mar" << "Apr";
}
void tst_QBarCategoriesAxis::range_raw()
{
QFETCH(QString, min);
QFETCH(QString, max);
QSignalSpy spy0(m_baraxis, SIGNAL(categoriesChanged()));
QSignalSpy spy1(m_baraxis, SIGNAL(maxChanged(QString)));
QSignalSpy spy2(m_baraxis, SIGNAL(minChanged(QString)));
QSignalSpy spy3(m_baraxis, SIGNAL(rangeChanged(QString,QString)));
QSignalSpy spy4(m_baraxis, SIGNAL(countChanged()));
m_baraxis->setRange(min, max);
QCOMPARE(m_baraxis->min(), min);
QCOMPARE(m_baraxis->max(), max);
QCOMPARE(spy0.count(), 0);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), 1);
QCOMPARE(spy4.count(), 0);
}
void tst_QBarCategoriesAxis::range_data()
{
range_raw_data();
}
void tst_QBarCategoriesAxis::range()
{
range_raw();
m_chart->setAxisX(m_baraxis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
}
void tst_QBarCategoriesAxis::range_animation_data()
{
range_data();
}
void tst_QBarCategoriesAxis::range_animation()
{
m_chart->setAnimationOptions(QChart::GridAxisAnimations);
range();
}
void tst_QBarCategoriesAxis::noautoscale_data()
{
QTest::addColumn<QString>("min");
QTest::addColumn<QString>("max");
QTest::newRow("Feb - Mar") << "Feb" << "Mar";
QTest::newRow("Feb - May") << "Feb" << "May";
QTest::newRow("Apr - May") << "Apr" << "May";
}
void tst_QBarCategoriesAxis::noautoscale()
{
QFETCH(QString, min);
QFETCH(QString, max);
QSignalSpy spy0(m_baraxis, SIGNAL(maxChanged(QString)));
QSignalSpy spy1(m_baraxis, SIGNAL(minChanged(QString)));
QSignalSpy spy2(m_baraxis, SIGNAL(rangeChanged(QString,QString)));
m_baraxis->setRange(min, max);
QCOMPARE(m_baraxis->min(),min);
QCOMPARE(m_baraxis->max(),max);
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
m_chart->setAxisX(m_baraxis, m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
QCOMPARE(m_baraxis->min(),min);
QCOMPARE(m_baraxis->max(),max);
}
void tst_QBarCategoriesAxis::autoscale_data()
{
}
void tst_QBarCategoriesAxis::autoscale()
{
delete m_baraxis;
m_baraxis = new QBarCategoryAxis();
QSignalSpy spy0(m_baraxis, SIGNAL(maxChanged(QString)));
QSignalSpy spy1(m_baraxis, SIGNAL(minChanged(QString)));
QSignalSpy spy2(m_baraxis, SIGNAL(rangeChanged(QString,QString)));
QCOMPARE(m_baraxis->min(),QString());
QCOMPARE(m_baraxis->max(),QString());
m_chart->setAxisX(m_baraxis, m_series);
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
m_view->show();
QTest::qWaitForWindowShown(m_view);
QCOMPARE(m_baraxis->min(),QString("1"));
QCOMPARE(m_baraxis->max(),QString("6"));
}
QTEST_MAIN(tst_QBarCategoriesAxis)
#include "tst_qbarcategoryaxis.moc"