File indexing completed on 2024-04-14 14:27:03

0001 /*
0002  * This file is part of KQuickCharts
0003  * SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
0004  *
0005  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006  */
0007 
0008 #include <QTest>
0009 
0010 #include "datasource/ArraySource.h"
0011 
0012 class ArraySourceTest : public QObject
0013 {
0014     Q_OBJECT
0015 
0016 private Q_SLOTS:
0017     void testCreate()
0018     {
0019         // Basic creation should create an empty source.
0020         auto source = new ArraySource{};
0021 
0022         QCOMPARE(source->itemCount(), 0);
0023         QCOMPARE(source->item(0), QVariant{});
0024         QCOMPARE(source->minimum(), QVariant{});
0025         QCOMPARE(source->maximum(), QVariant{});
0026     }
0027 
0028     void testWithArray_data()
0029     {
0030         QTest::addColumn<QVariantList>("array");
0031         QTest::addColumn<int>("itemCount");
0032         QTest::addColumn<QVariant>("firstItem");
0033         QTest::addColumn<QVariant>("lastItem");
0034         QTest::addColumn<QVariant>("minimum");
0035         QTest::addColumn<QVariant>("maximum");
0036 
0037         QTest::newRow("simple ints") << QVariantList{0, 1, 2, 3, 4} << 5 << QVariant{0} << QVariant{4} << QVariant{0} << QVariant{4};
0038         QTest::newRow("random ints") << QVariantList{-3, 6, 4, 9, 4} << 5 << QVariant{-3} << QVariant{4} << QVariant{-3} << QVariant{9};
0039         QTest::newRow("floats") << QVariantList{2.56, 4.45, 2.5, 5.3} << 4 << QVariant{2.56} << QVariant{5.3} << QVariant{2.5} << QVariant{5.3};
0040     }
0041 
0042     void testWithArray()
0043     {
0044         auto source = new ArraySource{};
0045         QFETCH(QVariantList, array);
0046         source->setArray(array);
0047 
0048         QFETCH(int, itemCount);
0049         QCOMPARE(source->itemCount(), itemCount);
0050 
0051         QFETCH(QVariant, firstItem);
0052         QCOMPARE(source->item(0), firstItem);
0053 
0054         QFETCH(QVariant, lastItem);
0055         QCOMPARE(source->item(itemCount - 1), lastItem);
0056 
0057         QCOMPARE(source->item(itemCount), QVariant{});
0058 
0059         QFETCH(QVariant, minimum);
0060         QCOMPARE(source->minimum(), minimum);
0061 
0062         QFETCH(QVariant, maximum);
0063         QCOMPARE(source->maximum(), maximum);
0064     }
0065 
0066     void testWrap_data()
0067     {
0068         QTest::addColumn<QVariantList>("array");
0069         QTest::addColumn<int>("itemCount");
0070         QTest::addColumn<QVariant>("firstItem");
0071         QTest::addColumn<QVariant>("lastItem");
0072 
0073         QTest::newRow("simple ints") << QVariantList{0, 1, 2, 3, 4} << 5 << QVariant{0} << QVariant{4};
0074         QTest::newRow("random ints") << QVariantList{-3, 6, 4, 9, 4} << 5 << QVariant{-3} << QVariant{4};
0075         QTest::newRow("floats") << QVariantList{2.56, 4.45, 2.5, 5.3} << 4 << QVariant{2.56} << QVariant{5.3};
0076     }
0077 
0078     void testWrap()
0079     {
0080         auto source = new ArraySource{};
0081         QFETCH(QVariantList, array);
0082         source->setArray(array);
0083         source->setWrap(true);
0084 
0085         QFETCH(int, itemCount);
0086         QFETCH(QVariant, firstItem);
0087         QFETCH(QVariant, lastItem);
0088 
0089         QCOMPARE(source->item(0), firstItem);
0090         QCOMPARE(source->item(itemCount - 1), lastItem);
0091         QCOMPARE(source->item(itemCount), firstItem);
0092         QCOMPARE(source->item(itemCount * 2 - 1), lastItem);
0093 
0094         QCOMPARE(source->item(itemCount * 99), firstItem);
0095     }
0096 };
0097 
0098 QTEST_GUILESS_MAIN(ArraySourceTest)
0099 
0100 #include "ArraySourceTest.moc"