File indexing completed on 2024-04-28 15:19:44
0001 /* 0002 SPDX-FileCopyrightText: 2019 Milian Wolff <mail@milianw.de> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include <QAbstractItemModel> 0008 #include <QObject> 0009 #include <QTest> 0010 0011 #include "kcolorscheme.h" 0012 #include "kcolorschememanager.h" 0013 0014 class KColorSchemeTest : public QObject 0015 { 0016 Q_OBJECT 0017 0018 private Q_SLOTS: 0019 void benchConstruction_data() 0020 { 0021 KColorSchemeManager manager; 0022 if (manager.model()->rowCount() <= 1) { 0023 QSKIP("no scheme files found, cannot run benchmark"); 0024 } 0025 0026 const auto anyScheme = manager.model()->index(1, 0).data(Qt::UserRole).toString(); 0027 QVERIFY(QFile::exists(anyScheme)); 0028 0029 QTest::addColumn<QString>("file"); 0030 0031 QTest::newRow("default") << QString(); 0032 QTest::newRow("explicit") << anyScheme; 0033 } 0034 0035 void benchConstruction() 0036 { 0037 QFETCH(QString, file); 0038 qApp->setProperty("KDE_COLOR_SCHEME_PATH", file); 0039 0040 QBENCHMARK { 0041 KColorScheme scheme(QPalette::Active); 0042 } 0043 } 0044 void readColors_data() 0045 { 0046 QTest::addColumn<int>("colorSet"); 0047 0048 QTest::newRow("View") << static_cast<int>(KColorScheme::View); 0049 QTest::newRow("Window") << static_cast<int>(KColorScheme::Window); 0050 QTest::newRow("Button") << static_cast<int>(KColorScheme::Button); 0051 QTest::newRow("Selection") << static_cast<int>(KColorScheme::Selection); 0052 QTest::newRow("Tooltip") << static_cast<int>(KColorScheme::Tooltip); 0053 QTest::newRow("Complementary") << static_cast<int>(KColorScheme::Complementary); 0054 QTest::newRow("Header") << static_cast<int>(KColorScheme::Header); 0055 } 0056 0057 void readColors() 0058 { 0059 QFETCH(int, colorSet); 0060 auto file = QFINDTESTDATA("kcolorschemetest.colors"); 0061 KColorScheme activeScheme(QPalette::Active, static_cast<KColorScheme::ColorSet>(colorSet), KSharedConfig::openConfig(file, KConfig::SimpleConfig)); 0062 KColorScheme inactiveScheme(QPalette::Inactive, static_cast<KColorScheme::ColorSet>(colorSet), KSharedConfig::openConfig(file, KConfig::SimpleConfig)); 0063 0064 #define checkBackgroundRole(role) \ 0065 QCOMPARE(activeScheme.background(role).color(), QColor(colorSet, role, QPalette::Active)); \ 0066 QCOMPARE(inactiveScheme.background(role).color(), QColor(colorSet, role, QPalette::Inactive)); 0067 0068 checkBackgroundRole(KColorScheme::NormalBackground); 0069 checkBackgroundRole(KColorScheme::AlternateBackground); 0070 0071 #define checkForegroundRole(role) \ 0072 QCOMPARE(activeScheme.foreground(role).color(), QColor(colorSet, role + KColorScheme::NBackgroundRoles, QPalette::Active)); \ 0073 QCOMPARE(inactiveScheme.foreground(role).color(), QColor(colorSet, role + KColorScheme::NBackgroundRoles, QPalette::Inactive)); 0074 0075 checkForegroundRole(KColorScheme::NormalText); 0076 checkForegroundRole(KColorScheme::InactiveText); 0077 checkForegroundRole(KColorScheme::ActiveText); 0078 checkForegroundRole(KColorScheme::LinkText); 0079 checkForegroundRole(KColorScheme::VisitedText); 0080 checkForegroundRole(KColorScheme::NegativeText); 0081 checkForegroundRole(KColorScheme::NeutralText); 0082 checkForegroundRole(KColorScheme::PositiveText); 0083 0084 #define checkDecorationRole(role) \ 0085 QCOMPARE(activeScheme.decoration(role).color(), \ 0086 QColor(colorSet, role + KColorScheme::NBackgroundRoles + KColorScheme::NForegroundRoles, QPalette::Active)); \ 0087 QCOMPARE(inactiveScheme.decoration(role).color(), \ 0088 QColor(colorSet, role + KColorScheme::NBackgroundRoles + KColorScheme::NForegroundRoles, QPalette::Inactive)); 0089 0090 checkDecorationRole(KColorScheme::FocusColor); 0091 checkDecorationRole(KColorScheme::HoverColor); 0092 } 0093 0094 void readContrast() 0095 { 0096 auto file = QFINDTESTDATA("kcolorschemetest.colors"); 0097 QCOMPARE(KColorScheme::contrastF(KSharedConfig::openConfig(file, KConfig::SimpleConfig)), 0.5); 0098 } 0099 }; 0100 0101 QTEST_MAIN(KColorSchemeTest) 0102 0103 #include "kcolorschemetest.moc"