summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/cpp2dtest/qgpieseries/tst_qgpieseries.cpp81
-rw-r--r--tests/auto/qml2dtest/pies/tst_pieseries.qml77
2 files changed, 152 insertions, 6 deletions
diff --git a/tests/auto/cpp2dtest/qgpieseries/tst_qgpieseries.cpp b/tests/auto/cpp2dtest/qgpieseries/tst_qgpieseries.cpp
index ce31f867..3a9c2b0d 100644
--- a/tests/auto/cpp2dtest/qgpieseries/tst_qgpieseries.cpp
+++ b/tests/auto/cpp2dtest/qgpieseries/tst_qgpieseries.cpp
@@ -26,6 +26,7 @@ private slots:
void calculatedValues();
void sliceSeries();
void destruction();
+ void adjust_limits_and_mode();
private:
void verifyCalculatedData(const QPieSeries &series, bool *ok);
@@ -62,6 +63,8 @@ void tst_qgpieseries::properties()
QSignalSpy sumSpy(m_series, SIGNAL(sumChanged()));
QSignalSpy opacitySpy(m_series, SIGNAL(opacityChanged()));
QSignalSpy valuesMultiplierSpy(m_series, SIGNAL(valuesMultiplierChanged()));
+ QSignalSpy angleSpanVisibleLimitSpy(m_series, SIGNAL(angleSpanVisibleLimitChanged()));
+ QSignalSpy angleSpanVisibleModeSpy(m_series, SIGNAL(angleSpanVisibleModeChanged()));
QVERIFY(m_series->type() == QAbstractSeries::SeriesType::Pie);
QVERIFY(m_series->count() == 0);
@@ -74,6 +77,8 @@ void tst_qgpieseries::properties()
QCOMPARE(m_series->endAngle(), 360.0);
QCOMPARE(m_series->opacity(), 1.0);
QCOMPARE(m_series->valuesMultiplier(), 1.0);
+ QCOMPARE(m_series->angleSpanVisibleLimit(), 0.0);
+ QCOMPARE(m_series->angleSpanVisibleMode(), QPieSeries::VisibleMode::First);
m_series->append("s1", 1);
m_series->append("s2", 1);
@@ -151,6 +156,20 @@ void tst_qgpieseries::properties()
m_series->setValuesMultiplier(0);
QCOMPARE(m_series->valuesMultiplier(), 0);
QCOMPARE(valuesMultiplierSpy.size(), 2);
+
+ m_series->setAngleSpanVisibleLimit(0.5);
+ QCOMPARE(m_series->angleSpanVisibleLimit(), 0.5);
+ QCOMPARE(angleSpanVisibleLimitSpy.size(), 1);
+ m_series->setAngleSpanVisibleLimit(10.0);
+ QCOMPARE(m_series->angleSpanVisibleLimit(), 10.0);
+ QCOMPARE(angleSpanVisibleLimitSpy.size(), 2);
+
+ m_series->setAngleSpanVisibleMode(QPieSeries::VisibleMode::None);
+ QCOMPARE(m_series->angleSpanVisibleMode(), QPieSeries::VisibleMode::None);
+ QCOMPARE(angleSpanVisibleModeSpy.size(), 1);
+ m_series->setAngleSpanVisibleMode(QPieSeries::VisibleMode::EveryOther);
+ QCOMPARE(m_series->angleSpanVisibleMode(), QPieSeries::VisibleMode::EveryOther);
+ QCOMPARE(angleSpanVisibleModeSpy.size(), 2);
}
void tst_qgpieseries::append()
@@ -592,6 +611,68 @@ void tst_qgpieseries::destruction()
QCOMPARE(spy3.size(), 1);
}
+void tst_qgpieseries::adjust_limits_and_mode()
+{
+ int visiblecount = 0;
+
+ QPieSeries series;
+ for (int i = 0; i < 10; ++i) {
+ auto slice = new QPieSlice("slice", i + 0.1); // Angle span between 0.8 and 72
+ series.append(slice);
+ }
+
+ // Every slice label under the limit should be hidden
+ series.setAngleSpanVisibleMode(QPieSeries::VisibleMode::None);
+ series.setAngleSpanVisibleLimit(35);
+ for (const QPieSlice *slice : series.slices()) {
+ if (slice->angleSpan() < series.angleSpanVisibleLimit())
+ QCOMPARE(slice->isLabelVisible(), false);
+ else
+ QCOMPARE(slice->isLabelVisible(), true);
+ visiblecount += slice->isLabelVisible();
+ }
+ QCOMPARE(visiblecount, 5);
+
+ series.setAngleSpanVisibleLimit(20);
+ visiblecount = 0;
+ for (const QPieSlice *slice : series.slices()) {
+ if (slice->angleSpan() < series.angleSpanVisibleLimit())
+ QCOMPARE(slice->isLabelVisible(), false);
+ else
+ QCOMPARE(slice->isLabelVisible(), true);
+ visiblecount += slice->isLabelVisible();
+ }
+ QCOMPARE(visiblecount, 7);
+
+ // Only the first label of slices under the limit should be visible
+ series.setAngleSpanVisibleMode(QPieSeries::VisibleMode::First);
+ series.setAngleSpanVisibleLimit(36); // mid-point; half of the labels plus one should be visible
+ visiblecount = 0;
+ for (const QPieSlice *slice : series.slices())
+ visiblecount += slice->isLabelVisible();
+ QCOMPARE(visiblecount, 6);
+
+ series.setAngleSpanVisibleLimit(75); // over max; only one label should be visible
+ visiblecount = 0;
+ for (const QPieSlice *slice : series.slices())
+ visiblecount += slice->isLabelVisible();
+ QCOMPARE(visiblecount, 1);
+
+ // Every other label of slices under the limit should be visible
+ series.setAngleSpanVisibleMode(QPieSeries::VisibleMode::EveryOther);
+ series.setAngleSpanVisibleLimit(36);
+ visiblecount = 0;
+ for (const QPieSlice *slice : series.slices())
+ visiblecount += slice->isLabelVisible();
+ QCOMPARE(visiblecount, 8);
+
+ series.setAngleSpanVisibleLimit(75);
+ visiblecount = 0;
+ for (const QPieSlice *slice : series.slices())
+ visiblecount += slice->isLabelVisible();
+ QCOMPARE(visiblecount, 5);
+}
+
QList<QPoint> tst_qgpieseries::slicePoints(QRectF rect)
{
qreal x1 = rect.topLeft().x() + (rect.width() / 4);
diff --git a/tests/auto/qml2dtest/pies/tst_pieseries.qml b/tests/auto/qml2dtest/pies/tst_pieseries.qml
index 91447baa..3d8542ab 100644
--- a/tests/auto/qml2dtest/pies/tst_pieseries.qml
+++ b/tests/auto/qml2dtest/pies/tst_pieseries.qml
@@ -33,12 +33,22 @@ Item {
target: pieSeries
signalName: "countChanged"
}
+ SignalSpy {
+ id: spanChangedSpy
+ target: pieSeries
+ signalName: "angleSpanVisibleLimitChanged"
+ }
+ SignalSpy {
+ id: modeChangedSpy
+ target: pieSeries
+ signalName: "angleSpanVisibleModeChanged"
+ }
}
TestCase {
name: "tst_qml-qtquicktest PieSeries"
- function test_properties() {
+ function test_01_properties() {
compare(pieSeries.endAngle, 360)
compare(pieSeries.holeSize, 0)
compare(pieSeries.horizontalPosition, 0.5)
@@ -46,9 +56,13 @@ Item {
compare(pieSeries.startAngle, 0)
compare(pieSeries.sum, 0)
compare(pieSeries.verticalPosition, 0.5)
+ compare(pieSeries.angleSpanVisibleLimit, 0)
+ compare(pieSeries.angleSpanVisibleMode, PieSeries.VisibleMode.First)
+
+ pieSeries.clear()
}
- function test_sliceproperties() {
+ function test_02_sliceproperties() {
var slice = pieSeries.append("slice", 10)
compare(slice.angleSpan, 360.0)
verify(slice.borderColor !== undefined)
@@ -69,7 +83,7 @@ Item {
pieSeries.clear()
}
- function test_take() {
+ function test_03_take() {
var count = 20
for (var i = 0; i < count; i++)
pieSeries.append("slice" + i, Math.random() + 0.01)
@@ -77,9 +91,11 @@ Item {
verify(pieSeries.take(pieSeries.find("slice" + 5)))
verify(pieSeries.take(pieSeries.find("slice" + 6)))
compare(pieSeries.count, 18)
+
+ pieSeries.clear()
}
- function test_append() {
+ function test_04_append() {
addedSpy.clear()
countChangedSpy.clear()
sumChangedSpy.clear()
@@ -93,7 +109,7 @@ Item {
pieSeries.clear()
}
- function test_remove() {
+ function test_05_remove() {
removedSpy.clear()
countChangedSpy.clear()
sumChangedSpy.clear()
@@ -127,7 +143,7 @@ Item {
pieSeries.clear()
}
- function test_find_and_at() {
+ function test_06_find_and_at() {
var count = 50
for (var i = 0; i < count; i++)
pieSeries.append("slice" + i,
@@ -137,5 +153,54 @@ Item {
}
pieSeries.clear()
}
+
+ function test_07_adjust_limit_and_mode() {
+ modeChangedSpy.clear()
+ spanChangedSpy.clear()
+
+ var count = 10
+ for (let i = 0; i < count; i++)
+ pieSeries.append("slice" + i, i + 0.1) // Produces angle span range from ~0.8 to ~71.2
+
+ pieSeries.angleSpanVisibleMode = PieSeries.VisibleMode.None
+ compare(modeChangedSpy.count, 1)
+
+ pieSeries.angleSpanVisibleLimit = 20
+ compare(spanChangedSpy.count, 1)
+
+ var visiblecount = 0
+ for (let i = 0; i < count; i++)
+ visiblecount += pieSeries.at(i).labelVisible
+ compare(visiblecount, 7)
+
+ pieSeries.angleSpanVisibleLimit = 35
+ compare(spanChangedSpy.count, 2)
+
+ visiblecount = 0
+ for (let i = 0; i < count; i++)
+ visiblecount += pieSeries.at(i).labelVisible
+ compare(visiblecount, 5)
+
+ pieSeries.angleSpanVisibleMode = PieSeries.VisibleMode.First
+ compare(modeChangedSpy.count, 2)
+
+ pieSeries.angleSpanVisibleLimit = 75 // This covers all the slices
+ compare(spanChangedSpy.count, 3)
+
+ visiblecount = 0
+ for (let i = 0; i < count; i++)
+ visiblecount += pieSeries.at(i).labelVisible
+ compare(visiblecount, 1)
+
+ pieSeries.angleSpanVisibleMode = PieSeries.VisibleMode.EveryOther
+ compare(modeChangedSpy.count, 3)
+
+ visiblecount = 0
+ for (let i = 0; i < count; i++)
+ visiblecount += pieSeries.at(i).labelVisible
+ compare(visiblecount, 5)
+
+ pieSeries.clear()
+ }
}
}