summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/gui/text/qcssparser/tst_qcssparser.cpp')
-rw-r--r--tests/auto/gui/text/qcssparser/tst_qcssparser.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
index a438d7ebc8..2d57719884 100644
--- a/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
+++ b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
@@ -56,6 +56,12 @@ private slots:
void quotedAndUnquotedIdentifiers();
void whitespaceValues_data();
void whitespaceValues();
+ void strokeLineCapValues_data();
+ void strokeLineCapValues();
+ void strokeLineJoinValues_data();
+ void strokeLineJoinValues();
+ void borderColor_data();
+ void borderColor();
};
void tst_QCssParser::scanner_data()
@@ -1759,6 +1765,108 @@ void tst_QCssParser::whitespaceValues()
QCOMPARE(rule.declarations.at(0).d->values.first().toString(), value);
}
+void tst_QCssParser::strokeLineCapValues_data()
+{
+ QTest::addColumn<QString>("value");
+
+ QTest::newRow("flatcap") << "flatcap";
+ QTest::newRow("roundcap") << "roundcap";
+ QTest::newRow("squarecap") << "squarecap";
+}
+
+void tst_QCssParser::strokeLineCapValues()
+{
+ QFETCH(QString, value);
+ QCss::Parser parser(QString("foo { -qt-stroke-linecap: %1 }").arg(value));
+ QCss::StyleSheet sheet;
+ QVERIFY(parser.parse(&sheet));
+
+ QCss::StyleRule rule = (!sheet.styleRules.isEmpty()) ?
+ sheet.styleRules.at(0) : *sheet.nameIndex.begin();
+ QCOMPARE(rule.declarations.size(), 1);
+
+ QCOMPARE(rule.declarations.at(0).d->property, QLatin1String("-qt-stroke-linecap"));
+ QCOMPARE(rule.declarations.at(0).d->values.first().type, QCss::Value::KnownIdentifier);
+ QCOMPARE(rule.declarations.at(0).d->values.first().toString(), value);
+}
+
+void tst_QCssParser::strokeLineJoinValues_data()
+{
+ QTest::addColumn<QString>("value");
+
+ QTest::newRow("beveljoin") << "beveljoin";
+ QTest::newRow("miterjoin") << "miterjoin";
+ QTest::newRow("roundjoin") << "roundjoin";
+ QTest::newRow("svgmiterjoin") << "svgmiterjoin";
+}
+
+void tst_QCssParser::strokeLineJoinValues()
+{
+ QFETCH(QString, value);
+ QCss::Parser parser(QString("foo { -qt-stroke-linejoin: %1 }").arg(value));
+ QCss::StyleSheet sheet;
+ QVERIFY(parser.parse(&sheet));
+
+ QCss::StyleRule rule = (!sheet.styleRules.isEmpty()) ?
+ sheet.styleRules.at(0) : *sheet.nameIndex.begin();
+ QCOMPARE(rule.declarations.size(), 1);
+
+ QCOMPARE(rule.declarations.at(0).d->property, QLatin1String("-qt-stroke-linejoin"));
+ QCOMPARE(rule.declarations.at(0).d->values.first().type, QCss::Value::KnownIdentifier);
+ QCOMPARE(rule.declarations.at(0).d->values.first().toString(), value);
+}
+
+void tst_QCssParser::borderColor_data()
+{
+ QTest::addColumn<QString>("css");
+ QTest::addColumn<QColor>("expectedTopColor");
+ QTest::addColumn<QColor>("expectedRightColor");
+ QTest::addColumn<QColor>("expectedBottomColor");
+ QTest::addColumn<QColor>("expectedLeftColor");
+
+ QTest::newRow("four values") << "border-color: red green blue white" << QColor("red") << QColor("green") << QColor("blue") << QColor("white");
+ QTest::newRow("three values") << "border-color: red green blue" << QColor("red") << QColor("green") << QColor("blue") << QColor("green");
+ QTest::newRow("two values") << "border-color: red green" << QColor("red") << QColor("green") << QColor("red") << QColor("green");
+ QTest::newRow("one value") << "border-color: red" << QColor("red") << QColor("red") << QColor("red") << QColor("red");
+}
+
+void tst_QCssParser::borderColor()
+{
+ QFETCH(QString, css);
+ QFETCH(QColor, expectedTopColor);
+ QFETCH(QColor, expectedRightColor);
+ QFETCH(QColor, expectedBottomColor);
+ QFETCH(QColor, expectedLeftColor);
+
+ css.prepend("dummy {");
+ css.append(QLatin1Char('}'));
+
+ QCss::Parser parser(css);
+ QCss::StyleSheet sheet;
+ QVERIFY(parser.parse(&sheet));
+
+ QCOMPARE(sheet.styleRules.size() + sheet.nameIndex.size(), 1);
+ QCss::StyleRule rule = (!sheet.styleRules.isEmpty()) ?
+ sheet.styleRules.at(0) : *sheet.nameIndex.begin();
+ const QList<QCss::Declaration> decls = rule.declarations;
+ QVERIFY(decls.size() == 1);
+ QVERIFY(decls[0].d->propertyId == QCss::BorderColor);
+
+ QBrush colors[4];
+
+ decls[0].brushValues(colors);
+ QCOMPARE(colors[QCss::TopEdge].color(), expectedTopColor);
+ QCOMPARE(colors[QCss::RightEdge].color(), expectedRightColor);
+ QCOMPARE(colors[QCss::BottomEdge].color(), expectedBottomColor);
+ QCOMPARE(colors[QCss::LeftEdge].color(), expectedLeftColor);
+
+ //QTBUG-126381 : a second evaluation should give the same results
+ QCOMPARE(colors[QCss::TopEdge].color(), expectedTopColor);
+ QCOMPARE(colors[QCss::RightEdge].color(), expectedRightColor);
+ QCOMPARE(colors[QCss::BottomEdge].color(), expectedBottomColor);
+ QCOMPARE(colors[QCss::LeftEdge].color(), expectedLeftColor);
+}
+
QTEST_MAIN(tst_QCssParser)
#include "tst_qcssparser.moc"