diff options
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/cpp2dtest/qgpieseries/tst_qgpieseries.cpp | 81 | ||||
-rw-r--r-- | tests/auto/qml2dtest/pies/tst_pieseries.qml | 77 |
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() + } } } |