Rename literal operator

Qt 6.4 introduced `QString operator""_s()` and the previous `""_qs` is
deprecated since Qt 6.8.
This commit is contained in:
Chocobo1 2023-06-18 02:02:02 +08:00
parent f6b58f36e2
commit e6d85a468b
No known key found for this signature in database
GPG key ID: 210D9C873253A68C
141 changed files with 3610 additions and 3604 deletions

View file

@ -64,75 +64,75 @@ private slots:
}
{
const QString input = u"http://localhost:1234"_qs;
const Entries output = {{u"http://localhost:1234"_qs, 0}};
const QString input = u"http://localhost:1234"_s;
const Entries output = {{u"http://localhost:1234"_s, 0}};
QVERIFY(isEqual(BitTorrent::parseTrackerEntries(input), output));
}
{
const QString input = u" http://localhost:1234 "_qs;
const Entries output = {{u"http://localhost:1234"_qs, 0}};
const QString input = u" http://localhost:1234 "_s;
const Entries output = {{u"http://localhost:1234"_s, 0}};
QVERIFY(isEqual(BitTorrent::parseTrackerEntries(input), output));
}
{
const QString input = u"\nhttp://localhost:1234"_qs;
const Entries output = {{u"http://localhost:1234"_qs, 1}};
const QString input = u"\nhttp://localhost:1234"_s;
const Entries output = {{u"http://localhost:1234"_s, 1}};
QVERIFY(isEqual(BitTorrent::parseTrackerEntries(input), output));
}
{
const QString input = u"http://localhost:1234\n"_qs;
const Entries output = {{u"http://localhost:1234"_qs, 0}};
const QString input = u"http://localhost:1234\n"_s;
const Entries output = {{u"http://localhost:1234"_s, 0}};
QVERIFY(isEqual(BitTorrent::parseTrackerEntries(input), output));
}
{
const QString input = u"http://localhost:1234 \n http://[::1]:4567"_qs;
const QString input = u"http://localhost:1234 \n http://[::1]:4567"_s;
const Entries output =
{
{u"http://localhost:1234"_qs, 0},
{u"http://[::1]:4567"_qs, 0}
{u"http://localhost:1234"_s, 0},
{u"http://[::1]:4567"_s, 0}
};
QVERIFY(isEqual(BitTorrent::parseTrackerEntries(input), output));
}
{
const QString input = u"\n http://localhost:1234 \n http://[::1]:4567"_qs;
const QString input = u"\n http://localhost:1234 \n http://[::1]:4567"_s;
const Entries output =
{
{u"http://localhost:1234"_qs, 1},
{u"http://[::1]:4567"_qs, 1}
{u"http://localhost:1234"_s, 1},
{u"http://[::1]:4567"_s, 1}
};
QVERIFY(isEqual(BitTorrent::parseTrackerEntries(input), output));
}
{
const QString input = u"http://localhost:1234 \n http://[::1]:4567 \n \n \n"_qs;
const QString input = u"http://localhost:1234 \n http://[::1]:4567 \n \n \n"_s;
const Entries output =
{
{u"http://localhost:1234"_qs, 0},
{u"http://[::1]:4567"_qs, 0}
{u"http://localhost:1234"_s, 0},
{u"http://[::1]:4567"_s, 0}
};
QVERIFY(isEqual(BitTorrent::parseTrackerEntries(input), output));
}
{
const QString input = u"http://localhost:1234 \n \n http://[::1]:4567"_qs;
const QString input = u"http://localhost:1234 \n \n http://[::1]:4567"_s;
const Entries output =
{
{u"http://localhost:1234"_qs, 0},
{u"http://[::1]:4567"_qs, 1}
{u"http://localhost:1234"_s, 0},
{u"http://[::1]:4567"_s, 1}
};
QVERIFY(isEqual(BitTorrent::parseTrackerEntries(input), output));
}
{
const QString input = u"\n \n \n http://localhost:1234 \n \n \n \n http://[::1]:4567 \n \n \n"_qs;
const QString input = u"\n \n \n http://localhost:1234 \n \n \n \n http://[::1]:4567 \n \n \n"_s;
const Entries output =
{
{u"http://localhost:1234"_qs, 3},
{u"http://[::1]:4567"_qs, 6}
{u"http://localhost:1234"_s, 3},
{u"http://[::1]:4567"_s, 6}
};
QVERIFY(isEqual(BitTorrent::parseTrackerEntries(input), output));
}

View file

@ -45,20 +45,20 @@ private slots:
#if __cplusplus < 202002L
void testContains() const
{
const OrderedSet<QString> set {u"a"_qs, u"b"_qs, u"c"_qs};
QVERIFY(set.contains(u"a"_qs));
QVERIFY(set.contains(u"b"_qs));
QVERIFY(set.contains(u"c"_qs));
QVERIFY(!set.contains(u"z"_qs));
const OrderedSet<QString> set {u"a"_s, u"b"_s, u"c"_s};
QVERIFY(set.contains(u"a"_s));
QVERIFY(set.contains(u"b"_s));
QVERIFY(set.contains(u"c"_s));
QVERIFY(!set.contains(u"z"_s));
const OrderedSet<QString> emptySet;
QVERIFY(!emptySet.contains(u"a"_qs));
QVERIFY(!emptySet.contains(u"a"_s));
}
#endif
void testCount() const
{
const OrderedSet<QString> set {u"a"_qs, u"b"_qs, u"c"_qs, u"c"_qs};
const OrderedSet<QString> set {u"a"_s, u"b"_s, u"c"_s, u"c"_s};
QCOMPARE(set.count(), 3);
const OrderedSet<QString> emptySet;
@ -67,19 +67,19 @@ private slots:
void testIntersect() const
{
OrderedSet<QString> set {u"a"_qs, u"b"_qs, u"c"_qs};
set.intersect({u"c"_qs, u"a"_qs});
OrderedSet<QString> set {u"a"_s, u"b"_s, u"c"_s};
set.intersect({u"c"_s, u"a"_s});
QCOMPARE(set.size(), 2);
QCOMPARE(set.join(u","_qs), u"a,c"_qs);
QCOMPARE(set.join(u","_s), u"a,c"_s);
OrderedSet<QString> emptySet;
emptySet.intersect({u"a"_qs}).intersect({u"c"_qs});;
emptySet.intersect({u"a"_s}).intersect({u"c"_s});;
QVERIFY(emptySet.isEmpty());
}
void testIsEmpty() const
{
const OrderedSet<QString> set {u"a"_qs, u"b"_qs, u"c"_qs};
const OrderedSet<QString> set {u"a"_s, u"b"_s, u"c"_s};
QVERIFY(!set.isEmpty());
const OrderedSet<QString> emptySet;
@ -88,62 +88,62 @@ private slots:
void testJoin() const
{
const OrderedSet<QString> set {u"a"_qs, u"b"_qs, u"c"_qs};
QCOMPARE(set.join(u","_qs), u"a,b,c"_qs);
const OrderedSet<QString> set {u"a"_s, u"b"_s, u"c"_s};
QCOMPARE(set.join(u","_s), u"a,b,c"_s);
const OrderedSet<QString> emptySet;
QCOMPARE(emptySet.join(u","_qs), u""_qs);
QCOMPARE(emptySet.join(u","_s), u""_s);
}
void testRemove() const
{
OrderedSet<QString> set {u"a"_qs, u"b"_qs, u"c"_qs};
QVERIFY(!set.remove(u"z"_qs));
QCOMPARE(set.join(u","_qs), u"a,b,c"_qs);
QVERIFY(set.remove(u"b"_qs));
QCOMPARE(set.join(u","_qs), u"a,c"_qs);
QVERIFY(set.remove(u"a"_qs));
QCOMPARE(set.join(u","_qs), u"c"_qs);
QVERIFY(set.remove(u"c"_qs));
OrderedSet<QString> set {u"a"_s, u"b"_s, u"c"_s};
QVERIFY(!set.remove(u"z"_s));
QCOMPARE(set.join(u","_s), u"a,b,c"_s);
QVERIFY(set.remove(u"b"_s));
QCOMPARE(set.join(u","_s), u"a,c"_s);
QVERIFY(set.remove(u"a"_s));
QCOMPARE(set.join(u","_s), u"c"_s);
QVERIFY(set.remove(u"c"_s));
QVERIFY(set.isEmpty());
OrderedSet<QString> emptySet;
QVERIFY(!emptySet.remove(u"a"_qs));
QVERIFY(!emptySet.remove(u"a"_s));
QVERIFY(emptySet.isEmpty());
}
void testUnite() const
{
const OrderedSet<QString> newData1 {u"z"_qs};
const OrderedSet<QString> newData2 {u"y"_qs};
const QSet<QString> newData3 {u"c"_qs, u"d"_qs, u"e"_qs};
const OrderedSet<QString> newData1 {u"z"_s};
const OrderedSet<QString> newData2 {u"y"_s};
const QSet<QString> newData3 {u"c"_s, u"d"_s, u"e"_s};
OrderedSet<QString> set {u"a"_qs, u"b"_qs, u"c"_qs};
OrderedSet<QString> set {u"a"_s, u"b"_s, u"c"_s};
set.unite(newData1);
QCOMPARE(set.join(u","_qs), u"a,b,c,z"_qs);
QCOMPARE(set.join(u","_s), u"a,b,c,z"_s);
set.unite(newData2);
QCOMPARE(set.join(u","_qs), u"a,b,c,y,z"_qs);
QCOMPARE(set.join(u","_s), u"a,b,c,y,z"_s);
set.unite(newData3);
QCOMPARE(set.join(u","_qs), u"a,b,c,d,e,y,z"_qs);
QCOMPARE(set.join(u","_s), u"a,b,c,d,e,y,z"_s);
OrderedSet<QString> emptySet;
emptySet.unite(newData1).unite(newData2).unite(newData3);
QCOMPARE(emptySet.join(u","_qs), u"c,d,e,y,z"_qs);
QCOMPARE(emptySet.join(u","_s), u"c,d,e,y,z"_s);
}
void testUnited() const
{
const OrderedSet<QString> newData1 {u"z"_qs};
const OrderedSet<QString> newData2 {u"y"_qs};
const QSet<QString> newData3 {u"c"_qs, u"d"_qs, u"e"_qs};
const OrderedSet<QString> newData1 {u"z"_s};
const OrderedSet<QString> newData2 {u"y"_s};
const QSet<QString> newData3 {u"c"_s, u"d"_s, u"e"_s};
OrderedSet<QString> set {u"a"_qs, u"b"_qs, u"c"_qs};
OrderedSet<QString> set {u"a"_s, u"b"_s, u"c"_s};
QCOMPARE(set.united(newData1).join(u","_qs), u"a,b,c,z"_qs);
QCOMPARE(set.united(newData2).join(u","_qs), u"a,b,c,y"_qs);
QCOMPARE(set.united(newData3).join(u","_qs), u"a,b,c,d,e"_qs);
QCOMPARE(set.united(newData1).join(u","_s), u"a,b,c,z"_s);
QCOMPARE(set.united(newData2).join(u","_s), u"a,b,c,y"_s);
QCOMPARE(set.united(newData3).join(u","_s), u"a,b,c,d,e"_s);
QCOMPARE(OrderedSet<QString>().united(newData1).united(newData2).united(newData3).join(u","_qs), u"c,d,e,y,z"_qs);
QCOMPARE(OrderedSet<QString>().united(newData1).united(newData2).united(newData3).join(u","_s), u"c,d,e,y,z"_s);
}
};

View file

@ -43,246 +43,246 @@ public:
private slots:
void testConstructors() const
{
QVERIFY(Path(u""_qs) == Path(std::string("")));
QVERIFY(Path(u"abc"_qs) == Path(std::string("abc")));
QVERIFY(Path(u"/abc"_qs) == Path(std::string("/abc")));
QVERIFY(Path(uR"(\abc)"_qs) == Path(std::string(R"(\abc)")));
QVERIFY(Path(u""_s) == Path(std::string("")));
QVERIFY(Path(u"abc"_s) == Path(std::string("abc")));
QVERIFY(Path(u"/abc"_s) == Path(std::string("/abc")));
QVERIFY(Path(uR"(\abc)"_s) == Path(std::string(R"(\abc)")));
#ifdef Q_OS_WIN
QVERIFY(Path(uR"(c:)"_qs) == Path(std::string(R"(c:)")));
QVERIFY(Path(uR"(c:/)"_qs) == Path(std::string(R"(c:/)")));
QVERIFY(Path(uR"(c:/)"_qs) == Path(std::string(R"(c:\)")));
QVERIFY(Path(uR"(c:\)"_qs) == Path(std::string(R"(c:/)")));
QVERIFY(Path(uR"(c:\)"_qs) == Path(std::string(R"(c:\)")));
QVERIFY(Path(uR"(c:)"_s) == Path(std::string(R"(c:)")));
QVERIFY(Path(uR"(c:/)"_s) == Path(std::string(R"(c:/)")));
QVERIFY(Path(uR"(c:/)"_s) == Path(std::string(R"(c:\)")));
QVERIFY(Path(uR"(c:\)"_s) == Path(std::string(R"(c:/)")));
QVERIFY(Path(uR"(c:\)"_s) == Path(std::string(R"(c:\)")));
QVERIFY(Path(uR"(\\?\C:)"_qs) == Path(std::string(R"(\\?\C:)")));
QVERIFY(Path(uR"(\\?\C:/)"_qs) == Path(std::string(R"(\\?\C:/)")));
QVERIFY(Path(uR"(\\?\C:/)"_qs) == Path(std::string(R"(\\?\C:\)")));
QVERIFY(Path(uR"(\\?\C:\)"_qs) == Path(std::string(R"(\\?\C:/)")));
QVERIFY(Path(uR"(\\?\C:\)"_qs) == Path(std::string(R"(\\?\C:\)")));
QVERIFY(Path(uR"(\\?\C:)"_s) == Path(std::string(R"(\\?\C:)")));
QVERIFY(Path(uR"(\\?\C:/)"_s) == Path(std::string(R"(\\?\C:/)")));
QVERIFY(Path(uR"(\\?\C:/)"_s) == Path(std::string(R"(\\?\C:\)")));
QVERIFY(Path(uR"(\\?\C:\)"_s) == Path(std::string(R"(\\?\C:/)")));
QVERIFY(Path(uR"(\\?\C:\)"_s) == Path(std::string(R"(\\?\C:\)")));
QVERIFY(Path(uR"(\\?\C:\abc)"_qs) == Path(std::string(R"(\\?\C:\abc)")));
QVERIFY(Path(uR"(\\?\C:\abc)"_s) == Path(std::string(R"(\\?\C:\abc)")));
#endif
}
void testIsValid() const
{
QCOMPARE(Path().isValid(), false);
QCOMPARE(Path(u""_qs).isValid(), false);
QCOMPARE(Path(u""_s).isValid(), false);
QCOMPARE(Path(u"/"_qs).isValid(), true);
QCOMPARE(Path(uR"(\)"_qs).isValid(), true);
QCOMPARE(Path(u"/"_s).isValid(), true);
QCOMPARE(Path(uR"(\)"_s).isValid(), true);
QCOMPARE(Path(u"a"_qs).isValid(), true);
QCOMPARE(Path(u"/a"_qs).isValid(), true);
QCOMPARE(Path(uR"(\a)"_qs).isValid(), true);
QCOMPARE(Path(u"a"_s).isValid(), true);
QCOMPARE(Path(u"/a"_s).isValid(), true);
QCOMPARE(Path(uR"(\a)"_s).isValid(), true);
QCOMPARE(Path(u"a/b"_qs).isValid(), true);
QCOMPARE(Path(uR"(a\b)"_qs).isValid(), true);
QCOMPARE(Path(u"/a/b"_qs).isValid(), true);
QCOMPARE(Path(uR"(/a\b)"_qs).isValid(), true);
QCOMPARE(Path(uR"(\a/b)"_qs).isValid(), true);
QCOMPARE(Path(uR"(\a\b)"_qs).isValid(), true);
QCOMPARE(Path(u"a/b"_s).isValid(), true);
QCOMPARE(Path(uR"(a\b)"_s).isValid(), true);
QCOMPARE(Path(u"/a/b"_s).isValid(), true);
QCOMPARE(Path(uR"(/a\b)"_s).isValid(), true);
QCOMPARE(Path(uR"(\a/b)"_s).isValid(), true);
QCOMPARE(Path(uR"(\a\b)"_s).isValid(), true);
QCOMPARE(Path(u"//"_qs).isValid(), true);
QCOMPARE(Path(uR"(\\)"_qs).isValid(), true);
QCOMPARE(Path(u"//a"_qs).isValid(), true);
QCOMPARE(Path(uR"(\\a)"_qs).isValid(), true);
QCOMPARE(Path(u"//"_s).isValid(), true);
QCOMPARE(Path(uR"(\\)"_s).isValid(), true);
QCOMPARE(Path(u"//a"_s).isValid(), true);
QCOMPARE(Path(uR"(\\a)"_s).isValid(), true);
#if defined Q_OS_MACOS
QCOMPARE(Path(u"\0"_qs).isValid(), false);
QCOMPARE(Path(u":"_qs).isValid(), false);
QCOMPARE(Path(u"\0"_s).isValid(), false);
QCOMPARE(Path(u":"_s).isValid(), false);
#elif defined Q_OS_WIN
QCOMPARE(Path(u"c:"_qs).isValid(), false);
QCOMPARE(Path(u"c:/"_qs).isValid(), true);
QCOMPARE(Path(uR"(c:\)"_qs).isValid(), true);
QCOMPARE(Path(uR"(c:\a)"_qs).isValid(), true);
QCOMPARE(Path(uR"(c:\a\b)"_qs).isValid(), true);
QCOMPARE(Path(u"c:"_s).isValid(), false);
QCOMPARE(Path(u"c:/"_s).isValid(), true);
QCOMPARE(Path(uR"(c:\)"_s).isValid(), true);
QCOMPARE(Path(uR"(c:\a)"_s).isValid(), true);
QCOMPARE(Path(uR"(c:\a\b)"_s).isValid(), true);
for (int i = 0; i <= 31; ++i)
QCOMPARE(Path(QChar(i)).isValid(), false);
QCOMPARE(Path(u":"_qs).isValid(), false);
QCOMPARE(Path(u"?"_qs).isValid(), false);
QCOMPARE(Path(u"\""_qs).isValid(), false);
QCOMPARE(Path(u"*"_qs).isValid(), false);
QCOMPARE(Path(u"<"_qs).isValid(), false);
QCOMPARE(Path(u">"_qs).isValid(), false);
QCOMPARE(Path(u"|"_qs).isValid(), false);
QCOMPARE(Path(u":"_s).isValid(), false);
QCOMPARE(Path(u"?"_s).isValid(), false);
QCOMPARE(Path(u"\""_s).isValid(), false);
QCOMPARE(Path(u"*"_s).isValid(), false);
QCOMPARE(Path(u"<"_s).isValid(), false);
QCOMPARE(Path(u">"_s).isValid(), false);
QCOMPARE(Path(u"|"_s).isValid(), false);
#else
QCOMPARE(Path(u"\0"_qs).isValid(), false);
QCOMPARE(Path(u"\0"_s).isValid(), false);
#endif
}
void testIsEmpty() const
{
QCOMPARE(Path().isEmpty(), true);
QCOMPARE(Path(u""_qs).isEmpty(), true);
QCOMPARE(Path(u""_s).isEmpty(), true);
QCOMPARE(Path(u"\0"_qs).isEmpty(), false);
QCOMPARE(Path(u"\0"_s).isEmpty(), false);
QCOMPARE(Path(u"/"_qs).isEmpty(), false);
QCOMPARE(Path(uR"(\)"_qs).isEmpty(), false);
QCOMPARE(Path(u"/"_s).isEmpty(), false);
QCOMPARE(Path(uR"(\)"_s).isEmpty(), false);
QCOMPARE(Path(u"a"_qs).isEmpty(), false);
QCOMPARE(Path(u"/a"_qs).isEmpty(), false);
QCOMPARE(Path(uR"(\a)"_qs).isEmpty(), false);
QCOMPARE(Path(u"a"_s).isEmpty(), false);
QCOMPARE(Path(u"/a"_s).isEmpty(), false);
QCOMPARE(Path(uR"(\a)"_s).isEmpty(), false);
QCOMPARE(Path(uR"(c:)"_qs).isEmpty(), false);
QCOMPARE(Path(uR"(c:/)"_qs).isEmpty(), false);
QCOMPARE(Path(uR"(c:\)"_qs).isEmpty(), false);
QCOMPARE(Path(uR"(c:)"_s).isEmpty(), false);
QCOMPARE(Path(uR"(c:/)"_s).isEmpty(), false);
QCOMPARE(Path(uR"(c:\)"_s).isEmpty(), false);
}
void testIsAbsolute() const
{
QCOMPARE(Path().isAbsolute(), false);
QCOMPARE(Path(u""_qs).isAbsolute(), false);
QCOMPARE(Path(u""_s).isAbsolute(), false);
#ifdef Q_OS_WIN
QCOMPARE(Path(u"/"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\)"_qs).isAbsolute(), true);
QCOMPARE(Path(u"/"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\)"_s).isAbsolute(), true);
QCOMPARE(Path(u"a"_qs).isAbsolute(), false);
QCOMPARE(Path(u"/a"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\a)"_qs).isAbsolute(), true);
QCOMPARE(Path(u"a"_s).isAbsolute(), false);
QCOMPARE(Path(u"/a"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\a)"_s).isAbsolute(), true);
QCOMPARE(Path(u"//"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\\)"_qs).isAbsolute(), true);
QCOMPARE(Path(u"//a"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\\a)"_qs).isAbsolute(), true);
QCOMPARE(Path(u"//"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\\)"_s).isAbsolute(), true);
QCOMPARE(Path(u"//a"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\\a)"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(c:)"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(c:/)"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(c:\)"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(c:\a)"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(c:\a\b)"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(c:)"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(c:/)"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(c:\)"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(c:\a)"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(c:\a\b)"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\\?\C:)"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\\?\C:/)"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\\?\C:\)"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\\?\C:\a)"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\\?\C:\a\b)"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\\?\C:)"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\\?\C:/)"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\\?\C:\)"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\\?\C:\a)"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\\?\C:\a\b)"_s).isAbsolute(), true);
#else
QCOMPARE(Path(u"/"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\)"_qs).isAbsolute(), false);
QCOMPARE(Path(u"/"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\)"_s).isAbsolute(), false);
QCOMPARE(Path(u"a"_qs).isAbsolute(), false);
QCOMPARE(Path(u"/a"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\a)"_qs).isAbsolute(), false);
QCOMPARE(Path(u"a"_s).isAbsolute(), false);
QCOMPARE(Path(u"/a"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\a)"_s).isAbsolute(), false);
QCOMPARE(Path(u"//"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\\)"_qs).isAbsolute(), false);
QCOMPARE(Path(u"//a"_qs).isAbsolute(), true);
QCOMPARE(Path(uR"(\\a)"_qs).isAbsolute(), false);
QCOMPARE(Path(u"//"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\\)"_s).isAbsolute(), false);
QCOMPARE(Path(u"//a"_s).isAbsolute(), true);
QCOMPARE(Path(uR"(\\a)"_s).isAbsolute(), false);
#endif
}
void testIsRelative() const
{
QCOMPARE(Path().isRelative(), true);
QCOMPARE(Path(u""_qs).isRelative(), true);
QCOMPARE(Path(u""_s).isRelative(), true);
#if defined Q_OS_WIN
QCOMPARE(Path(u"/"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\)"_qs).isRelative(), false);
QCOMPARE(Path(u"/"_s).isRelative(), false);
QCOMPARE(Path(uR"(\)"_s).isRelative(), false);
QCOMPARE(Path(u"a"_qs).isRelative(), true);
QCOMPARE(Path(u"/a"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\a)"_qs).isRelative(), false);
QCOMPARE(Path(u"a"_s).isRelative(), true);
QCOMPARE(Path(u"/a"_s).isRelative(), false);
QCOMPARE(Path(uR"(\a)"_s).isRelative(), false);
QCOMPARE(Path(u"//"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\\)"_qs).isRelative(), false);
QCOMPARE(Path(u"//a"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\\a)"_qs).isRelative(), false);
QCOMPARE(Path(u"//"_s).isRelative(), false);
QCOMPARE(Path(uR"(\\)"_s).isRelative(), false);
QCOMPARE(Path(u"//a"_s).isRelative(), false);
QCOMPARE(Path(uR"(\\a)"_s).isRelative(), false);
QCOMPARE(Path(uR"(c:)"_qs).isRelative(), false);
QCOMPARE(Path(uR"(c:/)"_qs).isRelative(), false);
QCOMPARE(Path(uR"(c:\)"_qs).isRelative(), false);
QCOMPARE(Path(uR"(c:\a)"_qs).isRelative(), false);
QCOMPARE(Path(uR"(c:\a\b)"_qs).isRelative(), false);
QCOMPARE(Path(uR"(c:)"_s).isRelative(), false);
QCOMPARE(Path(uR"(c:/)"_s).isRelative(), false);
QCOMPARE(Path(uR"(c:\)"_s).isRelative(), false);
QCOMPARE(Path(uR"(c:\a)"_s).isRelative(), false);
QCOMPARE(Path(uR"(c:\a\b)"_s).isRelative(), false);
QCOMPARE(Path(uR"(\\?\C:)"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\\?\C:/)"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\\?\C:\)"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\\?\C:\a)"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\\?\C:\a\b)"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\\?\C:)"_s).isRelative(), false);
QCOMPARE(Path(uR"(\\?\C:/)"_s).isRelative(), false);
QCOMPARE(Path(uR"(\\?\C:\)"_s).isRelative(), false);
QCOMPARE(Path(uR"(\\?\C:\a)"_s).isRelative(), false);
QCOMPARE(Path(uR"(\\?\C:\a\b)"_s).isRelative(), false);
#else
QCOMPARE(Path(u"/"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\)"_qs).isRelative(), true);
QCOMPARE(Path(u"/"_s).isRelative(), false);
QCOMPARE(Path(uR"(\)"_s).isRelative(), true);
QCOMPARE(Path(u"a"_qs).isRelative(), true);
QCOMPARE(Path(u"/a"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\a)"_qs).isRelative(), true);
QCOMPARE(Path(u"a"_s).isRelative(), true);
QCOMPARE(Path(u"/a"_s).isRelative(), false);
QCOMPARE(Path(uR"(\a)"_s).isRelative(), true);
QCOMPARE(Path(u"//"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\\)"_qs).isRelative(), true);
QCOMPARE(Path(u"//a"_qs).isRelative(), false);
QCOMPARE(Path(uR"(\\a)"_qs).isRelative(), true);
QCOMPARE(Path(u"//"_s).isRelative(), false);
QCOMPARE(Path(uR"(\\)"_s).isRelative(), true);
QCOMPARE(Path(u"//a"_s).isRelative(), false);
QCOMPARE(Path(uR"(\\a)"_s).isRelative(), true);
#endif
}
void testRootItem() const
{
QCOMPARE(Path().rootItem(), Path());
QCOMPARE(Path(u""_qs).rootItem(), Path());
QCOMPARE(Path(u""_s).rootItem(), Path());
QCOMPARE(Path(u"/"_qs).rootItem(), Path(u"/"_qs));
QCOMPARE(Path(uR"(\)"_qs).rootItem(), Path(uR"(\)"_qs));
QCOMPARE(Path(u"/"_s).rootItem(), Path(u"/"_s));
QCOMPARE(Path(uR"(\)"_s).rootItem(), Path(uR"(\)"_s));
QCOMPARE(Path(u"a"_qs).rootItem(), Path(u"a"_qs));
QCOMPARE(Path(u"/a"_qs).rootItem(), Path(u"/"_qs));
QCOMPARE(Path(u"/a/b"_qs).rootItem(), Path(u"/"_qs));
QCOMPARE(Path(u"a"_s).rootItem(), Path(u"a"_s));
QCOMPARE(Path(u"/a"_s).rootItem(), Path(u"/"_s));
QCOMPARE(Path(u"/a/b"_s).rootItem(), Path(u"/"_s));
QCOMPARE(Path(u"//"_qs).rootItem(), Path(u"/"_qs));
QCOMPARE(Path(uR"(\\)"_qs).rootItem(), Path(uR"(\\)"_qs));
QCOMPARE(Path(u"//a"_qs).rootItem(), Path(u"/"_qs));
QCOMPARE(Path(u"//"_s).rootItem(), Path(u"/"_s));
QCOMPARE(Path(uR"(\\)"_s).rootItem(), Path(uR"(\\)"_s));
QCOMPARE(Path(u"//a"_s).rootItem(), Path(u"/"_s));
#ifdef Q_OS_WIN
QCOMPARE(Path(uR"(\a)"_qs).rootItem(), Path(uR"(\)"_qs));
QCOMPARE(Path(uR"(\\a)"_qs).rootItem(), Path(uR"(\)"_qs));
QCOMPARE(Path(uR"(\a)"_s).rootItem(), Path(uR"(\)"_s));
QCOMPARE(Path(uR"(\\a)"_s).rootItem(), Path(uR"(\)"_s));
QCOMPARE(Path(uR"(c:)"_qs).rootItem(), Path(uR"(c:)"_qs));
QCOMPARE(Path(uR"(c:/)"_qs).rootItem(), Path(uR"(c:/)"_qs));
QCOMPARE(Path(uR"(c:\)"_qs).rootItem(), Path(uR"(c:\)"_qs));
QCOMPARE(Path(uR"(c:\)"_qs).rootItem(), Path(uR"(c:/)"_qs));
QCOMPARE(Path(uR"(c:\a)"_qs).rootItem(), Path(uR"(c:\)"_qs));
QCOMPARE(Path(uR"(c:\a\b)"_qs).rootItem(), Path(uR"(c:\)"_qs));
QCOMPARE(Path(uR"(c:)"_s).rootItem(), Path(uR"(c:)"_s));
QCOMPARE(Path(uR"(c:/)"_s).rootItem(), Path(uR"(c:/)"_s));
QCOMPARE(Path(uR"(c:\)"_s).rootItem(), Path(uR"(c:\)"_s));
QCOMPARE(Path(uR"(c:\)"_s).rootItem(), Path(uR"(c:/)"_s));
QCOMPARE(Path(uR"(c:\a)"_s).rootItem(), Path(uR"(c:\)"_s));
QCOMPARE(Path(uR"(c:\a\b)"_s).rootItem(), Path(uR"(c:\)"_s));
#else
QCOMPARE(Path(uR"(\a)"_qs).rootItem(), Path(uR"(\a)"_qs));
QCOMPARE(Path(uR"(\\a)"_qs).rootItem(), Path(uR"(\\a)"_qs));
QCOMPARE(Path(uR"(\a)"_s).rootItem(), Path(uR"(\a)"_s));
QCOMPARE(Path(uR"(\\a)"_s).rootItem(), Path(uR"(\\a)"_s));
#endif
}
void testParentPath() const
{
QCOMPARE(Path().parentPath(), Path());
QCOMPARE(Path(u""_qs).parentPath(), Path());
QCOMPARE(Path(u""_s).parentPath(), Path());
QCOMPARE(Path(u"/"_qs).parentPath(), Path());
QCOMPARE(Path(uR"(\)"_qs).parentPath(), Path());
QCOMPARE(Path(u"/"_s).parentPath(), Path());
QCOMPARE(Path(uR"(\)"_s).parentPath(), Path());
QCOMPARE(Path(u"a"_qs).parentPath(), Path());
QCOMPARE(Path(u"/a"_qs).parentPath(), Path(u"/"_qs));
QCOMPARE(Path(u"a"_s).parentPath(), Path());
QCOMPARE(Path(u"/a"_s).parentPath(), Path(u"/"_s));
QCOMPARE(Path(u"//"_qs).parentPath(), Path());
QCOMPARE(Path(uR"(\\)"_qs).parentPath(), Path());
QCOMPARE(Path(u"//a"_qs).parentPath(), Path(u"/"_qs));
QCOMPARE(Path(u"//"_s).parentPath(), Path());
QCOMPARE(Path(uR"(\\)"_s).parentPath(), Path());
QCOMPARE(Path(u"//a"_s).parentPath(), Path(u"/"_s));
QCOMPARE(Path(u"a/b"_qs).parentPath(), Path(u"a"_qs));
QCOMPARE(Path(u"a/b"_s).parentPath(), Path(u"a"_s));
#ifdef Q_OS_WIN
QCOMPARE(Path(uR"(\a)"_qs).parentPath(), Path(uR"(\)"_qs));
QCOMPARE(Path(uR"(\\a)"_qs).parentPath(), Path(uR"(\)"_qs));
QCOMPARE(Path(uR"(a\b)"_qs).parentPath(), Path(u"a"_qs));
QCOMPARE(Path(uR"(\a)"_s).parentPath(), Path(uR"(\)"_s));
QCOMPARE(Path(uR"(\\a)"_s).parentPath(), Path(uR"(\)"_s));
QCOMPARE(Path(uR"(a\b)"_s).parentPath(), Path(u"a"_s));
QCOMPARE(Path(uR"(c:)"_qs).parentPath(), Path());
QCOMPARE(Path(uR"(c:/)"_qs).parentPath(), Path());
QCOMPARE(Path(uR"(c:\)"_qs).parentPath(), Path());
QCOMPARE(Path(uR"(c:\a)"_qs).parentPath(), Path(uR"(c:\)"_qs));
QCOMPARE(Path(uR"(c:\a\b)"_qs).parentPath(), Path(uR"(c:\a)"_qs));
QCOMPARE(Path(uR"(c:)"_s).parentPath(), Path());
QCOMPARE(Path(uR"(c:/)"_s).parentPath(), Path());
QCOMPARE(Path(uR"(c:\)"_s).parentPath(), Path());
QCOMPARE(Path(uR"(c:\a)"_s).parentPath(), Path(uR"(c:\)"_s));
QCOMPARE(Path(uR"(c:\a\b)"_s).parentPath(), Path(uR"(c:\a)"_s));
#else
QCOMPARE(Path(uR"(\a)"_qs).parentPath(), Path());
QCOMPARE(Path(uR"(\\a)"_qs).parentPath(), Path());
QCOMPARE(Path(uR"(a\b)"_qs).parentPath(), Path());
QCOMPARE(Path(uR"(\a)"_s).parentPath(), Path());
QCOMPARE(Path(uR"(\\a)"_s).parentPath(), Path());
QCOMPARE(Path(uR"(a\b)"_s).parentPath(), Path());
#endif
}

View file

@ -53,48 +53,48 @@ namespace
const TestData testData[] =
{
{u""_qs, u""_qs, CompareResult::Equal, CompareResult::Equal},
{u""_qs, u"a"_qs, CompareResult::Less, CompareResult::Less},
{u"a"_qs, u""_qs, CompareResult::Greater, CompareResult::Greater},
{u""_s, u""_s, CompareResult::Equal, CompareResult::Equal},
{u""_s, u"a"_s, CompareResult::Less, CompareResult::Less},
{u"a"_s, u""_s, CompareResult::Greater, CompareResult::Greater},
{u"a"_qs, u"a"_qs, CompareResult::Equal, CompareResult::Equal},
{u"A"_qs, u"a"_qs, CompareResult::Equal, CompareResult::Less}, // ascii code of 'A' is smaller than 'a'
{u"a"_qs, u"A"_qs, CompareResult::Equal, CompareResult::Greater},
{u"a"_s, u"a"_s, CompareResult::Equal, CompareResult::Equal},
{u"A"_s, u"a"_s, CompareResult::Equal, CompareResult::Less}, // ascii code of 'A' is smaller than 'a'
{u"a"_s, u"A"_s, CompareResult::Equal, CompareResult::Greater},
{u"0"_qs, u"0"_qs, CompareResult::Equal, CompareResult::Equal},
{u"1"_qs, u"0"_qs, CompareResult::Greater, CompareResult::Greater},
{u"0"_qs, u"1"_qs, CompareResult::Less, CompareResult::Less},
{u"0"_s, u"0"_s, CompareResult::Equal, CompareResult::Equal},
{u"1"_s, u"0"_s, CompareResult::Greater, CompareResult::Greater},
{u"0"_s, u"1"_s, CompareResult::Less, CompareResult::Less},
{u"😀"_qs, u"😀"_qs, CompareResult::Equal, CompareResult::Equal},
{u"😀"_qs, u"😁"_qs, CompareResult::Less, CompareResult::Less},
{u"😁"_qs, u"😀"_qs, CompareResult::Greater, CompareResult::Greater},
{u"😀"_s, u"😀"_s, CompareResult::Equal, CompareResult::Equal},
{u"😀"_s, u"😁"_s, CompareResult::Less, CompareResult::Less},
{u"😁"_s, u"😀"_s, CompareResult::Greater, CompareResult::Greater},
{u"a1"_qs, u"a1"_qs, CompareResult::Equal, CompareResult::Equal},
{u"A1"_qs, u"a1"_qs, CompareResult::Equal, CompareResult::Less},
{u"a1"_qs, u"A1"_qs, CompareResult::Equal, CompareResult::Greater},
{u"a1"_s, u"a1"_s, CompareResult::Equal, CompareResult::Equal},
{u"A1"_s, u"a1"_s, CompareResult::Equal, CompareResult::Less},
{u"a1"_s, u"A1"_s, CompareResult::Equal, CompareResult::Greater},
{u"a1"_qs, u"a2"_qs, CompareResult::Less, CompareResult::Less},
{u"A1"_qs, u"a2"_qs, CompareResult::Less, CompareResult::Less},
{u"a1"_qs, u"A2"_qs, CompareResult::Less, CompareResult::Greater},
{u"A1"_qs, u"A2"_qs, CompareResult::Less, CompareResult::Less},
{u"a1"_s, u"a2"_s, CompareResult::Less, CompareResult::Less},
{u"A1"_s, u"a2"_s, CompareResult::Less, CompareResult::Less},
{u"a1"_s, u"A2"_s, CompareResult::Less, CompareResult::Greater},
{u"A1"_s, u"A2"_s, CompareResult::Less, CompareResult::Less},
{u"abc100"_qs, u"abc99"_qs, CompareResult::Greater, CompareResult::Greater},
{u"ABC100"_qs, u"abc99"_qs, CompareResult::Greater, CompareResult::Less},
{u"abc100"_qs, u"ABC99"_qs, CompareResult::Greater, CompareResult::Greater},
{u"ABC100"_qs, u"ABC99"_qs, CompareResult::Greater, CompareResult::Greater},
{u"abc100"_s, u"abc99"_s, CompareResult::Greater, CompareResult::Greater},
{u"ABC100"_s, u"abc99"_s, CompareResult::Greater, CompareResult::Less},
{u"abc100"_s, u"ABC99"_s, CompareResult::Greater, CompareResult::Greater},
{u"ABC100"_s, u"ABC99"_s, CompareResult::Greater, CompareResult::Greater},
{u"100abc"_qs, u"99abc"_qs, CompareResult::Greater, CompareResult::Greater},
{u"100ABC"_qs, u"99abc"_qs, CompareResult::Greater, CompareResult::Greater},
{u"100abc"_qs, u"99ABC"_qs, CompareResult::Greater, CompareResult::Greater},
{u"100ABC"_qs, u"99ABC"_qs, CompareResult::Greater, CompareResult::Greater},
{u"100abc"_s, u"99abc"_s, CompareResult::Greater, CompareResult::Greater},
{u"100ABC"_s, u"99abc"_s, CompareResult::Greater, CompareResult::Greater},
{u"100abc"_s, u"99ABC"_s, CompareResult::Greater, CompareResult::Greater},
{u"100ABC"_s, u"99ABC"_s, CompareResult::Greater, CompareResult::Greater},
{u"😀😀😀99"_qs, u"😀😀😀100"_qs, CompareResult::Less, CompareResult::Less},
{u"😀😀😀100"_qs, u"😀😀😀99"_qs, CompareResult::Greater, CompareResult::Greater}
{u"😀😀😀99"_s, u"😀😀😀100"_s, CompareResult::Less, CompareResult::Less},
{u"😀😀😀100"_s, u"😀😀😀99"_s, CompareResult::Greater, CompareResult::Greater}
};
void testCompare(const TestData &data, const int actual, const CompareResult expected)
{
const auto errorMessage = u"Wrong result. LHS: \"%1\". RHS: \"%2\". Result: %3"_qs
const auto errorMessage = u"Wrong result. LHS: \"%1\". RHS: \"%2\". Result: %3"_s
.arg(data.lhs, data.rhs, QString::number(actual));
switch (expected)
@ -116,7 +116,7 @@ namespace
void testLessThan(const TestData &data, const bool actual, const CompareResult expected)
{
const auto errorMessage = u"Wrong result. LHS: \"%1\". RHS: \"%2\". Result: %3"_qs
const auto errorMessage = u"Wrong result. LHS: \"%1\". RHS: \"%2\". Result: %3"_s
.arg(data.lhs, data.rhs, QString::number(actual));
switch (expected)

View file

@ -44,9 +44,9 @@ public:
private slots:
void testReadFile() const
{
const Path testFolder = Path(QString::fromUtf8(__FILE__)).parentPath() / Path(u"testdata"_qs);
const Path testFolder = Path(QString::fromUtf8(__FILE__)).parentPath() / Path(u"testdata"_s);
const Path size10File = testFolder / Path(u"size10.txt"_qs);
const Path size10File = testFolder / Path(u"size10.txt"_s);
const QByteArray size10Data = QByteArrayLiteral("123456789\n");
{
@ -78,7 +78,7 @@ private slots:
}
{
const Path nonExistFile = testFolder / Path(u".non_existent_file_1234"_qs);
const Path nonExistFile = testFolder / Path(u".non_existent_file_1234"_s);
const auto readResult = Utils::IO::readFile(nonExistFile, 1);
QCOMPARE(readResult.has_value(), false);
QCOMPARE(readResult.error().status, Utils::IO::ReadError::NotExist);
@ -87,23 +87,23 @@ private slots:
#ifdef Q_OS_UNIX
{
const auto readResult = Utils::IO::readFile(Path(u"/dev/null"_qs), 10);
const auto readResult = Utils::IO::readFile(Path(u"/dev/null"_s), 10);
QCOMPARE(readResult.has_value(), true);
QCOMPARE(readResult.value().length(), 0);
}
{
const auto readResult = Utils::IO::readFile(Path(u"/dev/null"_qs), -1);
const auto readResult = Utils::IO::readFile(Path(u"/dev/null"_s), -1);
QCOMPARE(readResult.has_value(), true);
QCOMPARE(readResult.value().length(), 0);
}
{
const auto readResult = Utils::IO::readFile(Path(u"/dev/zero"_qs), 10);
const auto readResult = Utils::IO::readFile(Path(u"/dev/zero"_s), 10);
QCOMPARE(readResult.has_value(), true);
QCOMPARE(readResult.value().length(), 0);
}
{
const auto readResult = Utils::IO::readFile(Path(u"/dev/zero"_qs), -1);
const auto readResult = Utils::IO::readFile(Path(u"/dev/zero"_s), -1);
QCOMPARE(readResult.has_value(), true);
QCOMPARE(readResult.value().length(), 0);
}

View file

@ -43,15 +43,15 @@ private slots:
void testSplitCommand() const
{
QCOMPARE(Utils::String::splitCommand({}), {});
QCOMPARE(Utils::String::splitCommand(u""_qs), {});
QCOMPARE(Utils::String::splitCommand(u" "_qs), {});
QCOMPARE(Utils::String::splitCommand(uR"("")"_qs), {uR"("")"_qs});
QCOMPARE(Utils::String::splitCommand(uR"(" ")"_qs), {uR"(" ")"_qs});
QCOMPARE(Utils::String::splitCommand(u"\"\"\""_qs), {u"\"\"\""_qs});
QCOMPARE(Utils::String::splitCommand(uR"(" """)"_qs), {uR"(" """)"_qs});
QCOMPARE(Utils::String::splitCommand(u" app a b c "_qs), QStringList({u"app"_qs, u"a"_qs, u"b"_qs, u"c"_qs}));
QCOMPARE(Utils::String::splitCommand(u" cmd.exe /d --arg2 \"arg3\" \"\" arg5 \"\"arg6 \"arg7 "_qs)
, QStringList({u"cmd.exe"_qs, u"/d"_qs, u"--arg2"_qs, u"\"arg3\""_qs, u"\"\""_qs, u"arg5"_qs, u"\"\"arg6"_qs, u"\"arg7 "_qs}));
QCOMPARE(Utils::String::splitCommand(u""_s), {});
QCOMPARE(Utils::String::splitCommand(u" "_s), {});
QCOMPARE(Utils::String::splitCommand(uR"("")"_s), {uR"("")"_s});
QCOMPARE(Utils::String::splitCommand(uR"(" ")"_s), {uR"(" ")"_s});
QCOMPARE(Utils::String::splitCommand(u"\"\"\""_s), {u"\"\"\""_s});
QCOMPARE(Utils::String::splitCommand(uR"(" """)"_s), {uR"(" """)"_s});
QCOMPARE(Utils::String::splitCommand(u" app a b c "_s), QStringList({u"app"_s, u"a"_s, u"b"_s, u"c"_s}));
QCOMPARE(Utils::String::splitCommand(u" cmd.exe /d --arg2 \"arg3\" \"\" arg5 \"\"arg6 \"arg7 "_s)
, QStringList({u"cmd.exe"_s, u"/d"_s, u"--arg2"_s, u"\"arg3\""_s, u"\"\""_s, u"arg5"_s, u"\"\"arg6"_s, u"\"arg7 "_s}));
}
};

View file

@ -130,38 +130,38 @@ private slots:
void testToString() const
{
using OneMandatory = Utils::Version<2, 1>;
QCOMPARE(OneMandatory(10).toString(), u"10"_qs);
QCOMPARE(OneMandatory(2).toString(), u"2"_qs);
QCOMPARE(OneMandatory(2, 0).toString(), u"2"_qs);
QCOMPARE(OneMandatory(2, 2).toString(), u"2.2"_qs);
QCOMPARE(OneMandatory(10).toString(), u"10"_s);
QCOMPARE(OneMandatory(2).toString(), u"2"_s);
QCOMPARE(OneMandatory(2, 0).toString(), u"2"_s);
QCOMPARE(OneMandatory(2, 2).toString(), u"2.2"_s);
using FourDigits = Utils::Version<4>;
QCOMPARE(FourDigits(10, 11, 12, 13).toString(), u"10.11.12.13"_qs);
QCOMPARE(FourDigits(10, 11, 12, 13).toString(), u"10.11.12.13"_s);
}
void testFromString() const
{
using OneMandatory = Utils::Version<2, 1>;
const OneMandatory default1 {10, 11};
QCOMPARE(OneMandatory::fromString(u"1"_qs, default1), OneMandatory(1));
QCOMPARE(OneMandatory::fromString(u"1.2"_qs, default1), OneMandatory(1, 2));
QCOMPARE(OneMandatory::fromString(u"100.2000"_qs, default1), OneMandatory(100, 2000));
QCOMPARE(OneMandatory::fromString(u"1,2"_qs), OneMandatory());
QCOMPARE(OneMandatory::fromString(u"1,2"_qs, default1), default1);
QCOMPARE(OneMandatory::fromString(u"1.2a"_qs), OneMandatory());
QCOMPARE(OneMandatory::fromString(u"1.2.a"_qs), OneMandatory());
QCOMPARE(OneMandatory::fromString(u""_qs), OneMandatory());
QCOMPARE(OneMandatory::fromString(u""_qs, default1), default1);
QCOMPARE(OneMandatory::fromString(u"random_string"_qs), OneMandatory());
QCOMPARE(OneMandatory::fromString(u"random_string"_qs, default1), default1);
QCOMPARE(OneMandatory::fromString(u"1"_s, default1), OneMandatory(1));
QCOMPARE(OneMandatory::fromString(u"1.2"_s, default1), OneMandatory(1, 2));
QCOMPARE(OneMandatory::fromString(u"100.2000"_s, default1), OneMandatory(100, 2000));
QCOMPARE(OneMandatory::fromString(u"1,2"_s), OneMandatory());
QCOMPARE(OneMandatory::fromString(u"1,2"_s, default1), default1);
QCOMPARE(OneMandatory::fromString(u"1.2a"_s), OneMandatory());
QCOMPARE(OneMandatory::fromString(u"1.2.a"_s), OneMandatory());
QCOMPARE(OneMandatory::fromString(u""_s), OneMandatory());
QCOMPARE(OneMandatory::fromString(u""_s, default1), default1);
QCOMPARE(OneMandatory::fromString(u"random_string"_s), OneMandatory());
QCOMPARE(OneMandatory::fromString(u"random_string"_s, default1), default1);
using FourDigits = Utils::Version<4, 3>;
const FourDigits default2 {10, 11, 12, 13};
QCOMPARE(FourDigits::fromString(u"1"_qs, default2), default2);
QCOMPARE(FourDigits::fromString(u"1.2"_qs), FourDigits());
QCOMPARE(FourDigits::fromString(u"1.2.3"_qs), FourDigits(1, 2, 3));
QCOMPARE(FourDigits::fromString(u"1.2.3.0"_qs), FourDigits(1, 2, 3));
QCOMPARE(FourDigits::fromString(u"1.2.3.4"_qs), FourDigits(1, 2, 3, 4));
QCOMPARE(FourDigits::fromString(u"1"_s, default2), default2);
QCOMPARE(FourDigits::fromString(u"1.2"_s), FourDigits());
QCOMPARE(FourDigits::fromString(u"1.2.3"_s), FourDigits(1, 2, 3));
QCOMPARE(FourDigits::fromString(u"1.2.3.0"_s), FourDigits(1, 2, 3));
QCOMPARE(FourDigits::fromString(u"1.2.3.4"_s), FourDigits(1, 2, 3, 4));
}
void testComparisons() const