From 05fd4b369ac0babce7c7e60f9cfefb275404a9cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans-J=C3=BCrgen=20Tappe?= Date: Thu, 6 Jun 2024 09:52:20 +0200 Subject: [PATCH] Fix for unit test in the new structure. --- engine/src/rgbmatrix.cpp | 6 +-- engine/test/rgbmatrix/rgbmatrix_test.cpp | 59 ++++++++++++++---------- 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/engine/src/rgbmatrix.cpp b/engine/src/rgbmatrix.cpp index c929a14777..7089aa87cc 100644 --- a/engine/src/rgbmatrix.cpp +++ b/engine/src/rgbmatrix.cpp @@ -430,8 +430,8 @@ bool RGBMatrix::loadXML(QXmlStreamReader &root) { QString colorNumText = root.name().string()->right( root.name().length() - KXMLQLCRGBMatrixColorBase.length()); - uint colorNum = colorNumText.toUInt(); - setColor(colorNum, QColor::fromRgb(QRgb(root.readElementText().toUInt()))); + uint colorIdx = colorNumText.toUInt() - 1; + setColor(colorIdx, QColor::fromRgb(QRgb(root.readElementText().toUInt()))); } else if (root.name() == KXMLQLCRGBMatrixControlMode) { @@ -490,7 +490,7 @@ bool RGBMatrix::saveXML(QXmlStreamWriter *doc) uint count = 0; while (colorIt.hasNext()) { QColor color = colorIt.next(); - QString elementName = KXMLQLCRGBMatrixColorBase.append(QString::number(count)); + QString elementName = KXMLQLCRGBMatrixColorBase.append(QString::number(count + 1)); doc->writeTextElement(elementName, QString::number(color.rgb())); count ++; } diff --git a/engine/test/rgbmatrix/rgbmatrix_test.cpp b/engine/test/rgbmatrix/rgbmatrix_test.cpp index f34b53e017..1dfb801ea2 100644 --- a/engine/test/rgbmatrix/rgbmatrix_test.cpp +++ b/engine/test/rgbmatrix/rgbmatrix_test.cpp @@ -240,7 +240,8 @@ void RGBMatrix_Test::loadSave() QCOMPARE(xmlReader.attributes().value("ID").toString(), QString::number(mtx->id())); QCOMPARE(xmlReader.attributes().value("Name").toString(), QString("Xyzzy")); - int speed = 0, dir = 0, run = 0, algo = 0, color1 = 0, color2 = 0, color3 = 0, color4 = 0, color5 = 0, grp = 0, colormode = 0; + int speed = 0, dir = 0, run = 0, algo = 0, grp = 0, color1 = 0, color2 = 0, color3 = 0, color4 = 0, color5 = 0, colormode = 0; + QVector colors; while (xmlReader.readNextStartElement()) { @@ -268,30 +269,40 @@ void RGBMatrix_Test::loadSave() algo++; xmlReader.skipCurrentElement(); } - else if (xmlReader.name().toString() == "Color1") + else if (xmlReader.name().toString().startsWith("Color", Qt::CaseSensitive)) { - QCOMPARE(xmlReader.readElementText().toUInt(), QColor(Qt::magenta).rgb()); - color1++; - } - else if (xmlReader.name().toString() == "Color2") - { - QCOMPARE(xmlReader.readElementText().toUInt(), QColor(Qt::blue).rgb()); - color2++; - } - else if (xmlReader.name().toString() == "Color3") - { - QCOMPARE(xmlReader.readElementText().toUInt(), QColor(Qt::green).rgb()); - color3++; - } - else if (xmlReader.name().toString() == "Color4") - { - QCOMPARE(xmlReader.readElementText().toUInt(), QColor(Qt::red).rgb()); - color4++; - } - else if (xmlReader.name().toString() == "Color5") - { - QCOMPARE(xmlReader.readElementText().toUInt(), QColor(Qt::yellow).rgb()); - color5++; + bool ok = false; + QString colorNumText = xmlReader.name().toString().right( + xmlReader.name().toString().length() - QString("Color").length()); + int colorNum = colorNumText.toInt(&ok, 10); + QVERIFY(ok); + + switch (colorNum) { + case 1: + QCOMPARE(xmlReader.readElementText().toUInt(), QColor(Qt::magenta).rgb()); + color1 ++; + break; + case 2: + QCOMPARE(xmlReader.readElementText().toUInt(), QColor(Qt::blue).rgb()); + color2++; + break; + case 3: + QCOMPARE(xmlReader.readElementText().toUInt(), QColor(Qt::green).rgb()); + color3++; + break; + case 4: + QCOMPARE(xmlReader.readElementText().toUInt(), QColor(Qt::red).rgb()); + color4++; + break; + case 5: + QCOMPARE(xmlReader.readElementText().toUInt(), QColor(Qt::yellow).rgb()); + color5++; + break; + default: + // The color number can be between 1 and MAXINT, but here we expect only 5. + QVERIFY(colorNum > 0 && colorNum <= 5); + break; + } } else if (xmlReader.name().toString() == "FixtureGroup") {