QString: change test data to compile with QT_NO_CAST_FROM_ASCII [8/13]

Change-Id: I72ebb7bb19e35a10aa85ea7da6ee6b1b332050a5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit 448683809bc0dd7deb3b939d8a2e95e61e67e948)
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
Ahmad Samir 2023-01-23 22:43:36 +02:00
parent 785e8fde49
commit 2c117edf7c

View File

@ -2943,72 +2943,60 @@ void tst_QString::insert_data(DataOptions options)
void tst_QString::insert_special_cases() void tst_QString::insert_special_cases()
{ {
QString a; QString a;
a = u"Ys"_s;
QCOMPARE(a.insert(1, u'e'), u"Yes");
QCOMPARE(a.insert(3, u'!'), u"Yes!");
QCOMPARE(a.insert(5, u'?'), u"Yes! ?");
QCOMPARE(a.insert(-1, u'a'), u"Yes! a?");
a = "Ys"; a = u"ABC"_s;
QCOMPARE(a.insert(1,'e'), QString("Yes")); QCOMPARE(a.insert(5, u"DEF"_s), u"ABC DEF"_s);
QCOMPARE(a.insert(3,'!'), QString("Yes!"));
QCOMPARE(a.insert(5,'?'), QString("Yes! ?"));
QCOMPARE(a.insert(-1,'a'), QString("Yes! a?"));
a = "ABC"; a = u"ABC"_s;
QCOMPARE(a.insert(5,"DEF"), QString("ABC DEF")); QCOMPARE(a.insert(2, QString()), u"ABC");
QCOMPARE(a.insert(0, u"ABC"_s), u"ABCABC");
QCOMPARE(a, u"ABCABC");
QCOMPARE(a.insert(0, a), u"ABCABCABCABC");
QCOMPARE(a, u"ABCABCABCABC");
QCOMPARE(a.insert(0, u'<'), u"<ABCABCABCABC");
QCOMPARE(a.insert(1, u'>'), u"<>ABCABCABCABC");
a = "ABC"; a = u"Meal"_s;
QCOMPARE(a.insert(2, QString()), QString("ABC"));
QCOMPARE(a.insert(0,"ABC"), QString("ABCABC"));
QCOMPARE(a, QString("ABCABC"));
QCOMPARE(a.insert(0,a), QString("ABCABCABCABC"));
QCOMPARE(a, QString("ABCABCABCABC"));
QCOMPARE(a.insert(0,'<'), QString("<ABCABCABCABC"));
QCOMPARE(a.insert(1,'>'), QString("<>ABCABCABCABC"));
a = "Meal";
const QString montreal = QStringLiteral("Montreal"); const QString montreal = QStringLiteral("Montreal");
QCOMPARE(a.insert(1, QLatin1String("ontr")), montreal); QCOMPARE(a.insert(1, "ontr"_L1), montreal);
QCOMPARE(a.insert(4, ""), montreal); QCOMPARE(a.insert(4, ""_L1), montreal);
QCOMPARE(a.insert(3, QLatin1String("")), montreal); QCOMPARE(a.insert(3, ""_L1), montreal);
QCOMPARE(a.insert(3, QLatin1String(nullptr)), montreal); QCOMPARE(a.insert(3, QLatin1String(nullptr)), montreal);
QCOMPARE(a.insert(3, static_cast<const char *>(0)), montreal); QCOMPARE(a.insert(3, static_cast<const char *>(0)), montreal);
QCOMPARE(a.insert(0, QLatin1String("a")), QLatin1String("aMontreal")); QCOMPARE(a.insert(0, u"a"_s), "aMontreal"_L1);
a = "Mont"; a = u"Mont"_s;
QCOMPARE(a.insert(a.size(), QLatin1String("real")), montreal); QCOMPARE(a.insert(a.size(), "real"_L1), montreal);
QCOMPARE(a.insert(a.size() + 1, QLatin1String("ABC")), QString("Montreal ABC")); QCOMPARE(a.insert(a.size() + 1, "ABC"_L1), u"Montreal ABC");
a = "AEF"; a = u"AEF"_s;
QCOMPARE(a.insert(1, QLatin1String("BCD")), QString("ABCDEF")); QCOMPARE(a.insert(1, "BCD"_L1), u"ABCDEF");
QCOMPARE(a.insert(3, QLatin1String("-")), QString("ABC-DEF")); QCOMPARE(a.insert(3, "-"_L1), u"ABC-DEF");
QCOMPARE(a.insert(a.size() + 1, QLatin1String("XYZ")), QString("ABC-DEF XYZ")); QCOMPARE(a.insert(a.size() + 1, "XYZ"_L1), u"ABC-DEF XYZ");
{ {
a = "one"; a = u"one"_s;
a.prepend(u'a'); a.prepend(u'a');
QString b(a.data_ptr()->freeSpaceAtEnd(), u'b'); QString b(a.data_ptr()->freeSpaceAtEnd(), u'b');
QCOMPARE(a.insert(a.size() + 1, QLatin1String(b.toLatin1())), QString("aone ") + b); QCOMPARE(a.insert(a.size() + 1, QLatin1String(b.toLatin1())), u"aone "_s + b);
} }
{ {
a = "onetwothree"; a = u"one"_s;
a.prepend(u'a');
QString b(a.data_ptr()->freeSpaceAtEnd(), u'b');
QCOMPARE(a.insert(a.size() + 1, b), u"aone "_s + b);
}
{
a = u"onetwothree"_s;
while (a.size() - 1) while (a.size() - 1)
a.remove(0, 1); a.remove(0, 1);
QString b(a.data_ptr()->freeSpaceAtEnd() + 1, u'b'); QString b(a.data_ptr()->freeSpaceAtEnd() + 1, u'b');
QCOMPARE(a.insert(a.size() + 1, QLatin1String(b.toLatin1())), QString("e ") + b); QCOMPARE(a.insert(a.size() + 1, QLatin1String(b.toLatin1())), u"e "_s + b);
}
{
a = "one";
a.prepend(u'a');
QString b(a.data_ptr()->freeSpaceAtEnd(), u'b');
QCOMPARE(a.insert(a.size() + 1, b), QString("aone ") + b);
}
{
a = "onetwothree";
while (a.size() - 1)
a.remove(0, 1);
QString b(a.data_ptr()->freeSpaceAtEnd() + 1, u'b');
QCOMPARE(a.insert(a.size() + 1, b), QString("e ") + b);
} }
} }
@ -3114,7 +3102,7 @@ void tst_QString::append_special_cases()
QString a; QString a;
a.append(unicode, len); a.append(unicode, len);
QCOMPARE(a, QLatin1String("Hello, World!")); QCOMPARE(a, QLatin1String("Hello, World!"));
static const QChar nl('\n'); static const QChar nl(u'\n');
a.append(&nl, 1); a.append(&nl, 1);
QCOMPARE(a, QLatin1String("Hello, World!\n")); QCOMPARE(a, QLatin1String("Hello, World!\n"));
a.append(unicode, len); a.append(unicode, len);
@ -3137,45 +3125,45 @@ void tst_QString::append_special_cases()
} }
{ {
QString a = "one"; QString a = u"one"_s;
a.prepend(u'a'); a.prepend(u'a');
QString b(a.data_ptr()->freeSpaceAtEnd(), u'b'); QString b(a.data_ptr()->freeSpaceAtEnd(), u'b');
QCOMPARE(a.append(QLatin1String(b.toLatin1())), QString("aone") + b); QCOMPARE(a.append(QLatin1String(b.toLatin1())), u"aone"_s + b);
} }
{ {
QString a = "onetwothree"; QString a = u"onetwothree"_s;
while (a.size() - 1) while (a.size() - 1)
a.remove(0, 1); a.remove(0, 1);
QString b(a.data_ptr()->freeSpaceAtEnd(), u'b'); QString b(a.data_ptr()->freeSpaceAtEnd(), u'b');
QCOMPARE(a.append(QLatin1String(b.toLatin1())), QString("e") + b); QCOMPARE(a.append(QLatin1String(b.toLatin1())), u'e' + b);
} }
{ {
QString a = "one"; QString a = u"one"_s;
a.prepend(u'a'); a.prepend(u'a');
QString b(a.data_ptr()->freeSpaceAtEnd(), u'b'); QString b(a.data_ptr()->freeSpaceAtEnd(), u'b');
QCOMPARE(a.append(b), QString("aone") + b); QCOMPARE(a.append(b), u"aone"_s + b);
} }
{ {
QString a = "onetwothree"; QString a = u"onetwothree"_s;
while (a.size() - 1) while (a.size() - 1)
a.remove(0, 1); a.remove(0, 1);
QString b(a.data_ptr()->freeSpaceAtEnd() + 1, u'b'); QString b(a.data_ptr()->freeSpaceAtEnd() + 1, u'b');
QCOMPARE(a.append(b), QString("e") + b); QCOMPARE(a.append(b), u'e' + b);
} }
{ {
QString a = "one"; QString a = u"one"_s;
a.prepend(u'a'); a.prepend(u'a');
QCOMPARE(a.append(u'b'), QString("aoneb")); QCOMPARE(a.append(u'b'), u"aoneb");
} }
{ {
QString a = "onetwothree"; QString a = u"onetwothree"_s;
a.erase(a.cbegin(), std::prev(a.cend())); a.erase(a.cbegin(), std::prev(a.cend()));
QCOMPARE(a.append(u'b'), QString("eb")); QCOMPARE(a.append(u'b'), u"eb");
} }
} }
@ -3315,9 +3303,8 @@ void tst_QString::operator_eqeq_bytearray()
void tst_QString::swap() void tst_QString::swap()
{ {
QString s1, s2; QString s1 = QString::fromUtf8("s1");
s1 = "s1"; QString s2 = QString::fromUtf8("s2");
s2 = "s2";
s1.swap(s2); s1.swap(s2);
QCOMPARE(s1,QLatin1String("s2")); QCOMPARE(s1,QLatin1String("s2"));
QCOMPARE(s2,QLatin1String("s1")); QCOMPARE(s2,QLatin1String("s1"));
@ -3502,9 +3489,9 @@ void tst_QString::replace_uint_uint_extra()
{ {
{ {
QString s; QString s;
s.insert(0, QChar('A')); s.insert(0, QChar(u'A'));
auto bigReplacement = QString("B").repeated(s.capacity() * 3); auto bigReplacement = QString(u'B').repeated(s.capacity() * 3);
s.replace( 0, 1, bigReplacement ); s.replace( 0, 1, bigReplacement );
QCOMPARE( s, bigReplacement ); QCOMPARE( s, bigReplacement );
@ -3514,7 +3501,7 @@ void tst_QString::replace_uint_uint_extra()
QString s; QString s;
s.insert(0, QLatin1String("BBB")); s.insert(0, QLatin1String("BBB"));
auto smallReplacement = QString("C"); auto smallReplacement = QString(u'C');
s.replace( 0, 3, smallReplacement ); s.replace( 0, 3, smallReplacement );
QCOMPARE( s, smallReplacement ); QCOMPARE( s, smallReplacement );
@ -3524,7 +3511,7 @@ void tst_QString::replace_uint_uint_extra()
QString s; QString s;
s.insert(0, QLatin1String("BBB")); s.insert(0, QLatin1String("BBB"));
auto smallReplacement = QString("C"); auto smallReplacement = QString(u'C');
s.replace( 5, 3, smallReplacement ); s.replace( 5, 3, smallReplacement );
QCOMPARE( s, QLatin1String("BBB") ); QCOMPARE( s, QLatin1String("BBB") );
@ -3537,11 +3524,11 @@ void tst_QString::replace_extra()
This test is designed to be extremely slow if QString::replace() doesn't optimize the case This test is designed to be extremely slow if QString::replace() doesn't optimize the case
len == after.size(). len == after.size().
*/ */
QString str("dsfkljfdsjklsdjsfjklfsdjkldfjslkjsdfkllkjdsfjklsfdkjsdflkjlsdfjklsdfkjldsflkjsddlkj"); QString str(u"dsfkljfdsjklsdjsfjklfsdjkldfjslkjsdfkllkjdsfjklsfdkjsdflkjlsdfjklsdfkjldsflkjsddlkj"_s);
for (int j = 1; j < 12; ++j) for (int j = 1; j < 12; ++j)
str += str; str += str;
QString str2("aaaaaaaaaaaaaaaaaaaa"); QString str2(u"aaaaaaaaaaaaaaaaaaaa"_s);
for (int i = 0; i < 2000000; ++i) { for (int i = 0; i < 2000000; ++i) {
str.replace(10, 20, str2); str.replace(10, 20, str2);
} }
@ -3557,26 +3544,26 @@ void tst_QString::replace_extra()
/* /*
Make sure that replacing a part of oneself with itself works. Make sure that replacing a part of oneself with itself works.
*/ */
QString str3("abcdefghij"); QString str3(u"abcdefghij"_s);
str3.replace(0, 1, str3); str3.replace(0, 1, str3);
QCOMPARE(str3, QString("abcdefghijbcdefghij")); QCOMPARE(str3, u"abcdefghijbcdefghij");
QString str4("abcdefghij"); QString str4(u"abcdefghij"_s);
str4.replace(1, 3, str4); str4.replace(1, 3, str4);
QCOMPARE(str4, QString("aabcdefghijefghij")); QCOMPARE(str4, u"aabcdefghijefghij");
QString str5("abcdefghij"); QString str5(u"abcdefghij"_s);
str5.replace(8, 10, str5); str5.replace(8, 10, str5);
QCOMPARE(str5, QString("abcdefghabcdefghij")); QCOMPARE(str5, u"abcdefghabcdefghij");
// Replacements using only part of the string modified: // Replacements using only part of the string modified:
QString str6("abcdefghij"); QString str6(u"abcdefghij"_s);
str6.replace(1, 8, str6.constData() + 3, 3); str6.replace(1, 8, str6.constData() + 3, 3);
QCOMPARE(str6, QString("adefj")); QCOMPARE(str6, u"adefj");
QString str7("abcdefghibcdefghij"); QString str7(u"abcdefghibcdefghij"_s);
str7.replace(str7.constData() + 1, 6, str7.constData() + 2, 3); str7.replace(str7.constData() + 1, 6, str7.constData() + 2, 3);
QCOMPARE(str7, QString("acdehicdehij")); QCOMPARE(str7, u"acdehicdehij");
const int many = 1024; const int many = 1024;
/* /*
@ -3585,7 +3572,8 @@ void tst_QString::replace_extra()
changes to batch size), which lead to misbehaviour if ether QChar * array changes to batch size), which lead to misbehaviour if ether QChar * array
was part of the data being modified. was part of the data being modified.
*/ */
QString str8("abcdefg"), ans8("acdeg"); QString str8(u"abcdefg"_s);
QString ans8(u"acdeg"_s);
{ {
// Make str8 and ans8 repeat themselves many + 1 times: // Make str8 and ans8 repeat themselves many + 1 times:
int i = many; int i = many;
@ -3649,11 +3637,11 @@ void tst_QString::replace_string_extra()
{ {
{ {
QString s; QString s;
s.insert(0, QChar('A')); s.insert(0, u'A');
auto bigReplacement = QString("B").repeated(s.capacity() * 3); auto bigReplacement = QString(u'B').repeated(s.capacity() * 3);
s.replace( QString("A"), bigReplacement ); s.replace( u"A"_s, bigReplacement );
QCOMPARE( s, bigReplacement ); QCOMPARE( s, bigReplacement );
} }
@ -3661,9 +3649,9 @@ void tst_QString::replace_string_extra()
QString s; QString s;
s.insert(0, QLatin1String("BBB")); s.insert(0, QLatin1String("BBB"));
auto smallReplacement = QString("C"); auto smallReplacement = QString(u'C');
s.replace( QString("BBB"), smallReplacement ); s.replace( u"BBB"_s, smallReplacement );
QCOMPARE( s, smallReplacement ); QCOMPARE( s, smallReplacement );
} }
@ -3671,10 +3659,10 @@ void tst_QString::replace_string_extra()
QString s(QLatin1String("BBB")); QString s(QLatin1String("BBB"));
QString expected(QLatin1String("BBB")); QString expected(QLatin1String("BBB"));
for (int i = 0; i < 1028; ++i) { for (int i = 0; i < 1028; ++i) {
s.append("X"); s.append(u'X');
expected.append("GXU"); expected.append(u"GXU"_s);
} }
s.replace(QChar('X'), "GXU"); s.replace(QChar(u'X'), u"GXU"_s);
QCOMPARE(s, expected); QCOMPARE(s, expected);
} }
} }
@ -3701,11 +3689,11 @@ void tst_QString::replace_regexp_extra()
{ {
{ {
QString s; QString s;
s.insert(0, QChar('A')); s.insert(0, QChar(u'A'));
auto bigReplacement = QString("B").repeated(s.capacity() * 3); auto bigReplacement = QString(u'B').repeated(s.capacity() * 3);
QRegularExpression regularExpression(QString("A")); QRegularExpression regularExpression(u"A"_s);
QVERIFY(regularExpression.isValid()); QVERIFY(regularExpression.isValid());
s.replace( regularExpression, bigReplacement ); s.replace( regularExpression, bigReplacement );
@ -3716,9 +3704,9 @@ void tst_QString::replace_regexp_extra()
QString s; QString s;
s.insert(0, QLatin1String("BBB")); s.insert(0, QLatin1String("BBB"));
auto smallReplacement = QString("C"); auto smallReplacement = QString(u'C');
QRegularExpression regularExpression(QString("BBB")); QRegularExpression regularExpression(u"BBB"_s);
QVERIFY(regularExpression.isValid()); QVERIFY(regularExpression.isValid());
s.replace( regularExpression, smallReplacement ); s.replace( regularExpression, smallReplacement );
@ -3832,7 +3820,7 @@ void tst_QString::remove_regexp_data()
void tst_QString::remove_regexp() void tst_QString::remove_regexp()
{ {
static const QRegularExpression ignoreMessagePattern( static const QRegularExpression ignoreMessagePattern(
"^QString::replace\\(\\): called on an invalid QRegularExpression object" u"^QString::replace\\(\\): called on an invalid QRegularExpression object"_s
); );
QFETCH( QString, string ); QFETCH( QString, string );
@ -3852,7 +3840,7 @@ void tst_QString::remove_extra()
{ {
{ {
QString quickFox = "The quick brown fox jumps over the lazy dog. " QString quickFox = "The quick brown fox jumps over the lazy dog. "
"The lazy dog jumps over the quick brown fox."; "The lazy dog jumps over the quick brown fox."_L1;
QString s1 = quickFox; QString s1 = quickFox;
QVERIFY(s1.data_ptr().needsDetach()); QVERIFY(s1.data_ptr().needsDetach());
s1.remove(s1); s1.remove(s1);
@ -3865,7 +3853,7 @@ void tst_QString::remove_extra()
} }
{ {
QString s = "BCDEFGHJK"; QString s = u"BCDEFGHJK"_s;
QString s1 = s; QString s1 = s;
s1.insert(0, u'A'); // detaches s1.insert(0, u'A'); // detaches
s1.erase(s1.cbegin()); s1.erase(s1.cbegin());
@ -3873,13 +3861,13 @@ void tst_QString::remove_extra()
} }
{ {
QString s = "Clock"; QString s = u"Clock"_s;
s.removeFirst(); s.removeFirst();
QCOMPARE(s, "lock"); QCOMPARE(s, u"lock");
s.removeLast(); s.removeLast();
QCOMPARE(s, "loc"); QCOMPARE(s, u"loc");
s.removeAt(s.indexOf('o')); s.removeAt(s.indexOf(u'o'));
QCOMPARE(s, "lc"); QCOMPARE(s, u"lc");
s.clear(); s.clear();
// No crash on empty strings // No crash on empty strings
s.removeFirst(); s.removeFirst();
@ -3890,39 +3878,39 @@ void tst_QString::remove_extra()
void tst_QString::erase_single_arg() void tst_QString::erase_single_arg()
{ {
QString s = "abcdefg"; QString s = u"abcdefg"_s;
auto it = s.erase(s.cbegin()); auto it = s.erase(s.cbegin());
QCOMPARE_EQ(s, "bcdefg"); QCOMPARE_EQ(s, u"bcdefg");
QCOMPARE(it, s.cbegin()); QCOMPARE(it, s.cbegin());
it = s.erase(std::prev(s.end())); it = s.erase(std::prev(s.end()));
QCOMPARE_EQ(s, "bcdef"); QCOMPARE_EQ(s, u"bcdef");
QCOMPARE(it, s.cend()); QCOMPARE(it, s.cend());
it = s.erase(std::find(s.begin(), s.end(), QChar('d'))); it = s.erase(std::find(s.begin(), s.end(), QChar(u'd')));
QCOMPARE(it, s.begin() + 2); QCOMPARE(it, s.begin() + 2);
} }
void tst_QString::erase() void tst_QString::erase()
{ {
QString str = "abcdefg"; QString str = u"abcdefg"_s;
QString s = str; QString s = str;
auto it = s.erase(s.begin(), s.end()); auto it = s.erase(s.begin(), s.end());
QCOMPARE_EQ(s, ""); QCOMPARE_EQ(s, u"");
QCOMPARE(it, s.end()); QCOMPARE(it, s.end());
s = str; s = str;
it = s.erase(std::prev(s.end())); it = s.erase(std::prev(s.end()));
QCOMPARE_EQ(s, "abcdef"); QCOMPARE_EQ(s, u"abcdef");
QCOMPARE(it, s.end()); QCOMPARE(it, s.end());
it = s.erase(s.begin() + 2, s.end()); it = s.erase(s.begin() + 2, s.end());
QCOMPARE_EQ(s, "ab"); QCOMPARE_EQ(s, u"ab");
QCOMPARE(it, s.end()); QCOMPARE(it, s.end());
it = s.erase(s.begin(), s.begin() + 1); it = s.erase(s.begin(), s.begin() + 1);
QCOMPARE_EQ(s, "b"); QCOMPARE_EQ(s, u"b");
QCOMPARE(it, s.begin()); QCOMPARE(it, s.begin());
{ {
@ -3931,8 +3919,8 @@ void tst_QString::erase()
// erase() should return an iterator, not const_iterator // erase() should return an iterator, not const_iterator
auto it = s1.erase(s1.cbegin(), s1.cbegin()); auto it = s1.erase(s1.cbegin(), s1.cbegin());
*it = QLatin1Char('m'); *it = QLatin1Char('m');
QCOMPARE(s1, "mouse"); QCOMPARE(s1, u"mouse");
QCOMPARE(copy, "house"); QCOMPARE(copy, u"house");
} }
} }
@ -4145,11 +4133,11 @@ void tst_QString::toNum()
{ {
#if defined (Q_OS_WIN) && defined (Q_CC_MSVC) #if defined (Q_OS_WIN) && defined (Q_CC_MSVC)
#define TEST_TO_INT(num, func) \ #define TEST_TO_INT(num, func) \
a = #num; \ a = QLatin1StringView(#num); \
QVERIFY2(a.func(&ok) == num ## i64 && ok, "Failed: num=" #num ", func=" #func); QVERIFY2(a.func(&ok) == num ## i64 && ok, "Failed: num=" #num ", func=" #func);
#else #else
#define TEST_TO_INT(num, func) \ #define TEST_TO_INT(num, func) \
a = #num; \ a = QLatin1StringView(#num); \
QVERIFY2(a.func(&ok) == num ## LL && ok, "Failed: num=" #num ", func=" #func); QVERIFY2(a.func(&ok) == num ## LL && ok, "Failed: num=" #num ", func=" #func);
#endif #endif
@ -4183,11 +4171,11 @@ void tst_QString::toNum()
#if defined (Q_OS_WIN) && defined (Q_CC_MSVC) #if defined (Q_OS_WIN) && defined (Q_CC_MSVC)
#define TEST_TO_UINT(num, func) \ #define TEST_TO_UINT(num, func) \
a = #num; \ a = QLatin1StringView(#num); \
QVERIFY2(a.func(&ok) == num ## i64 && ok, "Failed: num=" #num ", func=" #func); QVERIFY2(a.func(&ok) == num ## i64 && ok, "Failed: num=" #num ", func=" #func);
#else #else
#define TEST_TO_UINT(num, func) \ #define TEST_TO_UINT(num, func) \
a = #num; \ a = QLatin1StringView(#num); \
QVERIFY2(a.func(&ok) == num ## ULL && ok, "Failed: num=" #num ", func=" #func); QVERIFY2(a.func(&ok) == num ## ULL && ok, "Failed: num=" #num ", func=" #func);
#endif #endif
@ -4212,7 +4200,7 @@ void tst_QString::toNum()
a.toULongLong(&ok, 10); a.toULongLong(&ok, 10);
QVERIFY(!ok); QVERIFY(!ok);
a = "FF"; a = u"FF"_s;
a.toULongLong(&ok, 0); a.toULongLong(&ok, 0);
QVERIFY(!ok); QVERIFY(!ok);