123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- #include "test_theme.h"
- #include <QHash>
- #include <theme.h>
- using namespace tests;
- using namespace vnotex;
- TestTheme::TestTheme(QObject *p_parent)
- : QObject(p_parent)
- {
- }
- void TestTheme::checkKeyValue(const QJsonObject &p_obj,
- const QString &p_key,
- const QString &p_val)
- {
- auto val = Theme::findValueByKeyPath(p_obj, p_key);
- QCOMPARE(val.toString(), p_val);
- }
- void TestTheme::testTranslatePaletteObject()
- {
- QJsonObject palette;
- // Normal.
- {
- QJsonObject base;
- base["a"] = "green";
- base["b"] = "blue";
- palette["base"] = base;
- auto ret = Theme::translatePaletteObjectOnce(palette, palette, "base");
- QCOMPARE(ret.first, false);
- QCOMPARE(ret.second, 0);
- checkKeyValue(palette, "base#a", "green");
- checkKeyValue(palette, "base#b", "blue");
- }
- // @.
- {
- auto baseObj = palette["base"].toObject();
- baseObj["c"] = "@base#b";
- palette["base"] = baseObj;
- auto ret = Theme::translatePaletteObjectOnce(palette, palette, "base");
- QCOMPARE(ret.first, true);
- QCOMPARE(ret.second, 0);
- checkKeyValue(palette, "base#a", "green");
- checkKeyValue(palette, "base#b", "blue");
- checkKeyValue(palette, "base#c", "blue");
- }
- // @&@.
- {
- auto baseObj = palette["base"].toObject();
- baseObj["e"] = "@base#d";
- baseObj["d"] = "@base#a";
- palette["base"] = baseObj;
- auto ret = Theme::translatePaletteObjectOnce(palette, palette, "base");
- QCOMPARE(ret.first, true);
- QCOMPARE(ret.second, 1);
- ret = Theme::translatePaletteObjectOnce(palette, palette, "base");
- QCOMPARE(ret.first, true);
- QCOMPARE(ret.second, 0);
- checkKeyValue(palette, "base#d", "green");
- checkKeyValue(palette, "base#e", "green");
- }
- // Cyclic @.
- {
- auto baseObj = palette["base"].toObject();
- baseObj["f"] = "@base#g";
- baseObj["g"] = "@base#h";
- baseObj["h"] = "@base#f";
- palette["base"] = baseObj;
- auto ret = Theme::translatePaletteObjectOnce(palette, palette, "base");
- QCOMPARE(ret.first, true);
- QCOMPARE(ret.second, 3);
- ret = Theme::translatePaletteObjectOnce(palette, palette, "base");
- QCOMPARE(ret.first, true);
- QCOMPARE(ret.second, 3);
- checkKeyValue(palette, "base#a", "green");
- checkKeyValue(palette, "base#b", "blue");
- checkKeyValue(palette, "base#c", "blue");
- checkKeyValue(palette, "base#d", "green");
- checkKeyValue(palette, "base#e", "green");
- QVERIFY(Theme::isRef(Theme::findValueByKeyPath(palette, "base#f").toString()));
- QVERIFY(Theme::isRef(Theme::findValueByKeyPath(palette, "base#g").toString()));
- QVERIFY(Theme::isRef(Theme::findValueByKeyPath(palette, "base#h").toString()));
- }
- }
- void TestTheme::testTranslateStyleByPalette()
- {
- QJsonObject palette;
- {
- QJsonObject baseObj;
- baseObj["a"] = "green";
- baseObj["b"] = "blue";
- baseObj["c"] = "red";
- palette["base"] = baseObj;
- }
- // Space or column prefix.
- {
- QString style = "color: @base#a;\n background:@base#b;";
- Theme::translateStyleByPalette(palette, style);
- QVERIFY(style == "color: green;\n background:blue;");
- }
- // Reference beyond palette.
- {
- QString style = "color: @base#a;\n background: @base#d;";
- Theme::translateStyleByPalette(palette, style);
- QVERIFY(style == "color: green;\n background: @base#d;");
- }
- }
- void TestTheme::testTranslateUrlToAbsolute()
- {
- #if defined(Q_OS_WIN)
- const QString basePath("C:\\vnotex\\theme");
- QString style = "image: url(menu.svg); image:url(c:/vnotex/abs.svg);";
- Theme::translateUrlToAbsolute(basePath, style);
- QVERIFY(style == "image: url(C:/vnotex/theme/menu.svg); image:url(c:/vnotex/abs.svg);");
- #else
- const QString basePath("/usr/bin/vnotex/theme");
- QString style = "image: url(menu.svg); image:url(/usr/bin/abs.svg);";
- Theme::translateUrlToAbsolute(basePath, style);
- QVERIFY(style == "image: url(/usr/bin/vnotex/theme/menu.svg); image:url(/usr/bin/abs.svg);");
- #endif
- }
- void TestTheme::testTranslateScaledSize()
- {
- const qreal factor = 1.5;
- {
- QString style = "width: $20px; height:$-4px;";
- Theme::translateScaledSize(factor, style);
- QVERIFY(style == "width: 30px; height:-6px;");
- }
- }
- QTEST_MAIN(tests::TestTheme)
|