summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/painting/qcolor/tst_qcolor.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-08-19 09:48:14 +0200
committerMarc Mutz <marc.mutz@kdab.com>2016-09-23 04:39:41 +0000
commit0889e9da20b8f016795ec2e7352b1e2f1678098d (patch)
treef311b708338554057dec9e5ba758c8cb18ac2c07 /tests/auto/gui/painting/qcolor/tst_qcolor.cpp
parentceb3c2ea621a5c5542eb6d127625a934b865e869 (diff)
QColor: provide QLatin1String overloads of functions taking QString
The inefficiency of QColor(const char*) came to light by a recent refactoring which showed that the existing char* overload of qt_get_hex_rgb() was never called. So, provide a QLatin1String interface for named colors that allows user code to reach that internal function without converting to QString first. Change-Id: I74df7b570ef28c00e35ca4adf46c4b7c7e9994b3 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Anton Kudryavtsev <a.kudryavtsev@netris.ru>
Diffstat (limited to 'tests/auto/gui/painting/qcolor/tst_qcolor.cpp')
-rw-r--r--tests/auto/gui/painting/qcolor/tst_qcolor.cpp52
1 files changed, 38 insertions, 14 deletions
diff --git a/tests/auto/gui/painting/qcolor/tst_qcolor.cpp b/tests/auto/gui/painting/qcolor/tst_qcolor.cpp
index 00e7436c0f..ab893385e3 100644
--- a/tests/auto/gui/painting/qcolor/tst_qcolor.cpp
+++ b/tests/auto/gui/painting/qcolor/tst_qcolor.cpp
@@ -52,6 +52,7 @@ private slots:
void name();
void namehex_data();
void namehex();
+ void setNamedColor_data();
void setNamedColor();
void constructNamedColorWithSpace();
@@ -525,26 +526,49 @@ static const int rgbTblSize = sizeof(rgbTbl) / sizeof(RGBData);
#undef rgb
-void tst_QColor::setNamedColor()
+void tst_QColor::setNamedColor_data()
{
- for (int i = 0; i < rgbTblSize; ++i) {
- QColor expected;
- expected.setRgba(rgbTbl[i].value);
-
- QColor color;
- color.setNamedColor(QLatin1String(rgbTbl[i].name));
- QCOMPARE(color, expected);
+ QTest::addColumn<QColor>("byCtor");
+ QTest::addColumn<QColor>("bySetNamedColor");
+ QTest::addColumn<QColor>("expected");
+ for (const auto e : rgbTbl) {
+ QColor expected;
+ expected.setRgba(e.value);
+
+#define ROW(expr) \
+ do { \
+ QColor bySetNamedColor; \
+ bySetNamedColor.setNamedColor(expr); \
+ auto byCtor = QColor(expr); \
+ QTest::newRow(e.name + QByteArrayLiteral(#expr)) \
+ << byCtor << bySetNamedColor << expected; \
+ } while (0) \
+ /*end*/
+
+ ROW(QLatin1String(e.name));
+ ROW(QString(QLatin1String(e.name)));
// name should be case insensitive
- color.setNamedColor(QString(rgbTbl[i].name).toUpper());
- QCOMPARE(color, expected);
-
+ ROW(QLatin1String(QByteArray(e.name).toUpper()));
+ ROW(QString(e.name).toUpper());
// spaces should be ignored
- color.setNamedColor(QString(rgbTbl[i].name).insert(1, ' '));
- QCOMPARE(color, expected);
+ ROW(QLatin1String(QByteArray(e.name).insert(1, ' ')));
+ ROW(QString(e.name).insert(1, ' '));
+#undef ROW
}
}
+void tst_QColor::setNamedColor()
+{
+ QFETCH(QColor, byCtor);
+ QFETCH(QColor, bySetNamedColor);
+ QFETCH(QColor, expected);
+
+ QCOMPARE(byCtor, expected);
+ QCOMPARE(bySetNamedColor, expected);
+}
+
+
void tst_QColor::constructNamedColorWithSpace()
{
QColor whiteSmoke("white smoke");
@@ -556,7 +580,7 @@ void tst_QColor::colorNames()
QStringList all = QColor::colorNames();
QCOMPARE(all.size(), rgbTblSize);
for (int i = 0; i < all.size(); ++i)
- QCOMPARE(all.at(i), QString::fromLatin1(rgbTbl[i].name));
+ QCOMPARE(all.at(i), QLatin1String(rgbTbl[i].name));
}
void tst_QColor::spec()