File indexing completed on 2024-04-28 05:50:33
0001 /* 0002 SPDX-FileCopyrightText: 2008 Robert Knight <robertknight@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 // Own 0008 #include "CharacterColorTest.h" 0009 0010 // Qt 0011 0012 // KDE 0013 #include <QTest> 0014 0015 using namespace Konsole; 0016 0017 const QColor CharacterColorTest::DefaultColorTable[TABLE_COLORS] = { 0018 QColor(0x00, 0x00, 0x00), // Dfore 0019 QColor(0xFF, 0xFF, 0xFF), // Dback 0020 QColor(0x00, 0x00, 0x00), // Black 0021 QColor(0xB2, 0x18, 0x18), // Red 0022 QColor(0x18, 0xB2, 0x18), // Green 0023 QColor(0xB2, 0x68, 0x18), // Yellow 0024 QColor(0x18, 0x18, 0xB2), // Blue 0025 QColor(0xB2, 0x18, 0xB2), // Magenta 0026 QColor(0x18, 0xB2, 0xB2), // Cyan 0027 QColor(0xB2, 0xB2, 0xB2), // White 0028 // intensive versions 0029 QColor(0x00, 0x00, 0x00), 0030 QColor(0xFF, 0xFF, 0xFF), 0031 QColor(0x68, 0x68, 0x68), 0032 QColor(0xFF, 0x54, 0x54), 0033 QColor(0x54, 0xFF, 0x54), 0034 QColor(0xFF, 0xFF, 0x54), 0035 QColor(0x54, 0x54, 0xFF), 0036 QColor(0xFF, 0x54, 0xFF), 0037 QColor(0x54, 0xFF, 0xFF), 0038 QColor(0xFF, 0xFF, 0xFF), 0039 // Here are faint intensities, which may not be good. 0040 // faint versions 0041 QColor(0x00, 0x00, 0x00), 0042 QColor(0xFF, 0xFF, 0xFF), 0043 QColor(0x00, 0x00, 0x00), 0044 QColor(0x65, 0x00, 0x00), 0045 QColor(0x00, 0x65, 0x00), 0046 QColor(0x65, 0x5E, 0x00), 0047 QColor(0x00, 0x00, 0x65), 0048 QColor(0x65, 0x00, 0x65), 0049 QColor(0x00, 0x65, 0x65), 0050 QColor(0x65, 0x65, 0x65), 0051 }; 0052 0053 void CharacterColorTest::init() 0054 { 0055 } 0056 0057 void CharacterColorTest::cleanup() 0058 { 0059 } 0060 0061 void CharacterColorTest::testColorEntry() 0062 { 0063 QColor black = QColor(0x00, 0x00, 0x00); 0064 QColor white = QColor(0xFF, 0xFF, 0xFF); 0065 QColor red = QColor(0xB2, 0x18, 0x18); 0066 QColor green = QColor(0x18, 0xB2, 0x18); 0067 0068 // Test operator== operator!= 0069 QCOMPARE(black == white, false); 0070 QCOMPARE(black != white, true); 0071 QCOMPARE(red == green, false); 0072 QCOMPARE(red != green, true); 0073 0074 QCOMPARE(red == green, false); 0075 QCOMPARE(red != green, true); 0076 0077 // Test operator= 0078 QColor tmpColorEntry; 0079 tmpColorEntry = red; 0080 QCOMPARE(tmpColorEntry == red, true); 0081 QCOMPARE(red == tmpColorEntry, true); 0082 0083 // Test QColor() 0084 QColor defaultColorEntry = QColor(); 0085 QCOMPARE(defaultColorEntry != green, true); 0086 QCOMPARE(defaultColorEntry != black, true); 0087 QCOMPARE(defaultColorEntry.isValid(), false); 0088 } 0089 0090 void CharacterColorTest::testDummyConstructor() 0091 { 0092 CharacterColor charColor; 0093 QCOMPARE(charColor.isValid(), false); 0094 } 0095 0096 void CharacterColorTest::testColorSpaceDefault_data() 0097 { 0098 QTest::addColumn<int>("colorValue"); 0099 QTest::addColumn<QColor>("expected"); 0100 0101 QTest::newRow("color 0") << 0 << DefaultColorTable[0]; 0102 QTest::newRow("color 1") << 1 << DefaultColorTable[1]; 0103 } 0104 0105 void CharacterColorTest::testColorSpaceDefault() 0106 { 0107 QFETCH(int, colorValue); 0108 QFETCH(QColor, expected); 0109 0110 CharacterColor charColor(COLOR_SPACE_DEFAULT, colorValue); 0111 const QColor result = charColor.color(DefaultColorTable); 0112 0113 QCOMPARE(result, expected); 0114 } 0115 0116 void CharacterColorTest::testColorSpaceSystem_data() 0117 { 0118 QTest::addColumn<int>("colorValue"); 0119 QTest::addColumn<QColor>("expected"); 0120 0121 QTest::newRow("color 0") << 0 << DefaultColorTable[2 + 0]; 0122 QTest::newRow("color 1") << 1 << DefaultColorTable[2 + 1]; 0123 QTest::newRow("color 7") << 7 << DefaultColorTable[2 + 7]; 0124 } 0125 0126 void CharacterColorTest::testColorSpaceSystem() 0127 { 0128 QFETCH(int, colorValue); 0129 QFETCH(QColor, expected); 0130 0131 CharacterColor charColor(COLOR_SPACE_SYSTEM, colorValue); 0132 const QColor result = charColor.color(DefaultColorTable); 0133 0134 QCOMPARE(result, expected); 0135 } 0136 0137 void CharacterColorTest::testColorSpaceRGB_data() 0138 { 0139 QTest::addColumn<int>("colorValue"); 0140 QTest::addColumn<QColor>("expected"); 0141 0142 // Pick colors to test or test all if needed 0143 for (const int i : {0, 1, 64, 127, 128, 215, 255}) { 0144 const QString name = QStringLiteral("color %1").arg(i); 0145 QTest::newRow(qPrintable(name)) << i << QColor(i >> 16, i >> 8, i); 0146 } 0147 } 0148 0149 void CharacterColorTest::testColorSpaceRGB() 0150 { 0151 QFETCH(int, colorValue); 0152 QFETCH(QColor, expected); 0153 0154 CharacterColor charColor(COLOR_SPACE_RGB, colorValue); 0155 const QColor result = charColor.color(DefaultColorTable); 0156 0157 QCOMPARE(result, expected); 0158 } 0159 void CharacterColorTest::testColor256_data() 0160 { 0161 QTest::addColumn<int>("colorValue"); 0162 QTest::addColumn<QColor>("expected"); 0163 0164 // This might be overkill 0165 for (int i = 0; i < 8; ++i) { 0166 const QString name = QStringLiteral("color256 color %1").arg(i); 0167 QTest::newRow(qPrintable(name)) << i << DefaultColorTable[i + 2]; 0168 } 0169 for (int i = 8; i < 16; ++i) { 0170 const QString name = QStringLiteral("color256 color %1").arg(i); 0171 QTest::newRow(qPrintable(name)) << i << DefaultColorTable[i + 2 + 10 - 8]; 0172 } 0173 for (int i = 16; i < 232; ++i) { 0174 const QString name = QStringLiteral("color256 color %1").arg(i); 0175 const auto u = i - 16; 0176 const auto color = QColor(((u / 36) % 6) != 0 ? (40 * ((u / 36) % 6) + 55) : 0, 0177 ((u / 6) % 6) != 0 ? (40 * ((u / 6) % 6) + 55) : 0, 0178 ((u / 1) % 6) != 0 ? (40 * ((u / 1) % 6) + 55) : 0); 0179 QTest::newRow(qPrintable(name)) << i << color; 0180 } 0181 for (int i = 232; i < 256; ++i) { 0182 const QString name = QStringLiteral("color256 color %1").arg(i); 0183 const auto gray = (i - 232) * 10 + 8; 0184 QTest::newRow(qPrintable(name)) << i << QColor(gray, gray, gray); 0185 } 0186 } 0187 0188 void CharacterColorTest::testColor256() 0189 { 0190 QFETCH(int, colorValue); 0191 QFETCH(QColor, expected); 0192 0193 const QColor result = color256(colorValue, DefaultColorTable); 0194 QCOMPARE(result, expected); 0195 } 0196 0197 QTEST_GUILESS_MAIN(CharacterColorTest) 0198 0199 #include "moc_CharacterColorTest.cpp"