File indexing completed on 2025-01-19 03:42:37
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 #include "datasource/MapProxySource.h" 0012 0013 #define qs QStringLiteral 0014 0015 class MapProxySourceTest : public QObject 0016 { 0017 Q_OBJECT 0018 0019 private Q_SLOTS: 0020 void testCreate() 0021 { 0022 // Basic creation should create an empty source. 0023 auto source = new MapProxySource{}; 0024 0025 QCOMPARE(source->itemCount(), 0); 0026 QCOMPARE(source->item(0), QVariant{}); 0027 QCOMPARE(source->minimum(), QVariant{}); 0028 QCOMPARE(source->maximum(), QVariant{}); 0029 QCOMPARE(source->source(), nullptr); 0030 } 0031 0032 void testWithArray_data() 0033 { 0034 QTest::addColumn<QVariantList>("array"); 0035 QTest::addColumn<QVariantMap>("map"); 0036 QTest::addColumn<QVariantList>("expected"); 0037 QTest::addColumn<QVariant>("minimum"); 0038 QTest::addColumn<QVariant>("maximum"); 0039 0040 // clang-format off 0041 QTest::newRow("basic mapping") 0042 << QVariantList{qs("one"), qs("two"), qs("three"), qs("four")} 0043 << QVariantMap{{qs("one"), 4}, {qs("two"), 3}, {qs("three"), 2}, {qs("four"), 1}} 0044 << QVariantList{4, 3, 2, 1} 0045 << QVariant{1} 0046 << QVariant{4}; 0047 0048 QTest::newRow("colors") 0049 << QVariantList{qs("red"), qs("green"), qs("blue"), qs("red"), qs("green"), qs("blue")} 0050 << QVariantMap{{qs("red"), QColor{Qt::red}.rgba()}, {qs("green"), QColor{Qt::green}.rgba()}, {qs("blue"), QColor{Qt::blue}.rgba()}} 0051 << QVariantList{QColor{Qt::red}.rgba(), QColor{Qt::green}.rgba(), QColor{Qt::blue}.rgba(), QColor{Qt::red}.rgba(), QColor{Qt::green}.rgba(), QColor{Qt::blue}.rgba()} 0052 << QVariant{QColor{Qt::blue}.rgba()} 0053 << QVariant{QColor{Qt::red}.rgba()}; 0054 // clang-format on 0055 } 0056 0057 void testWithArray() 0058 { 0059 auto arraySource = new ArraySource{}; 0060 QFETCH(QVariantList, array); 0061 arraySource->setArray(array); 0062 0063 auto mapSource = new MapProxySource{}; 0064 mapSource->setSource(arraySource); 0065 0066 QFETCH(QVariantMap, map); 0067 mapSource->setMap(map); 0068 0069 QFETCH(QVariantList, expected); 0070 QCOMPARE(mapSource->itemCount(), expected.size()); 0071 0072 for (int i = 0; i < mapSource->itemCount(); ++i) { 0073 QCOMPARE(mapSource->item(i), expected.at(i)); 0074 } 0075 0076 QCOMPARE(mapSource->item(expected.size()), QVariant{}); 0077 0078 QFETCH(QVariant, minimum); 0079 QCOMPARE(mapSource->minimum(), minimum); 0080 0081 QFETCH(QVariant, maximum); 0082 QCOMPARE(mapSource->maximum(), maximum); 0083 } 0084 }; 0085 0086 QTEST_GUILESS_MAIN(MapProxySourceTest) 0087 0088 #include "MapProxySourceTest.moc"