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"