summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/text
diff options
context:
space:
mode:
authorAndrei Golubev <andrei.golubev@qt.io>2020-08-17 09:48:20 +0200
committerAndrei Golubev <andrei.golubev@qt.io>2020-08-29 14:20:06 +0200
commita2b1b0292d3d9909a690ba701f0a447cdf1a66fa (patch)
tree5dfa51a1e6a7e37c59acef510c83331968fb5941 /tests/auto/corelib/text
parent4b9ec005340ac0d8aa103009c0f8ceda623de8cc (diff)
Prepend optimize QString
Added prepend optimization to QString Task-number: QTBUG-84320 Change-Id: Iaa8df790a10c56ecceb06f7143718fb94874ce76 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/corelib/text')
-rw-r--r--tests/auto/corelib/text/qstring/tst_qstring.cpp103
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/auto/corelib/text/qstring/tst_qstring.cpp b/tests/auto/corelib/text/qstring/tst_qstring.cpp
index 172e8c41af..126bc08903 100644
--- a/tests/auto/corelib/text/qstring/tst_qstring.cpp
+++ b/tests/auto/corelib/text/qstring/tst_qstring.cpp
@@ -360,11 +360,14 @@ private slots:
void replace_qchar_qstring();
void replace_uint_uint_data();
void replace_uint_uint();
+ void replace_uint_uint_extra();
void replace_extra();
void replace_string_data();
void replace_string();
+ void replace_string_extra();
void replace_regexp_data();
void replace_regexp();
+ void replace_regexp_extra();
void remove_uint_uint_data();
void remove_uint_uint();
void remove_string_data();
@@ -2367,6 +2370,15 @@ void tst_QString::insert_special_cases()
QCOMPARE(a.insert(3, QLatin1String(0)), montreal);
QCOMPARE(a.insert(3, static_cast<const char *>(0)), montreal);
QCOMPARE(a.insert(0, QLatin1String("a")), QLatin1String("aMontreal"));
+
+ a = "Mont";
+ QCOMPARE(a.insert(a.size(), QLatin1String("real")), montreal);
+ QCOMPARE(a.insert(a.size() + 1, QLatin1String("ABC")), QString("Montreal ABC"));
+
+ a = "AEF";
+ QCOMPARE(a.insert(1, QLatin1String("BCD")), QString("ABCDEF"));
+ QCOMPARE(a.insert(3, QLatin1String("-")), QString("ABC-DEF"));
+ QCOMPARE(a.insert(a.size() + 1, QLatin1String("XYZ")), QString("ABC-DEF XYZ"));
}
void tst_QString::append_data(bool emptyIsNoop)
@@ -2417,6 +2429,14 @@ void tst_QString::append_special_cases()
a.append(0, 1); // no-op
QCOMPARE(a, QLatin1String("Hello, World!\nHello, World!"));
}
+
+ {
+ QString a;
+ a.insert(0, QChar(u'A'));
+ QVERIFY(a.capacity() >= 3);
+ a.append(QLatin1String("BC"));
+ QCOMPARE(a, QLatin1String("ABC"));
+ }
}
void tst_QString::append_bytearray_special_cases_data()
@@ -2670,6 +2690,29 @@ void tst_QString::replace_uint_uint()
}
}
+void tst_QString::replace_uint_uint_extra()
+{
+ {
+ QString s;
+ s.insert(0, QChar('A'));
+
+ auto bigReplacement = QString("B").repeated(s.capacity() * 3);
+
+ s.replace( 0, 1, bigReplacement );
+ QCOMPARE( s, bigReplacement );
+ }
+
+ {
+ QString s;
+ s.insert(0, QLatin1String("BBB"));
+
+ auto smallReplacement = QString("C");
+
+ s.replace( 0, 3, smallReplacement );
+ QCOMPARE( s, smallReplacement );
+ }
+}
+
void tst_QString::replace_extra()
{
/*
@@ -2775,6 +2818,29 @@ void tst_QString::replace_string()
QTEST( s3, "result" );
}
+void tst_QString::replace_string_extra()
+{
+ {
+ QString s;
+ s.insert(0, QChar('A'));
+
+ auto bigReplacement = QString("B").repeated(s.capacity() * 3);
+
+ s.replace( QString("A"), bigReplacement );
+ QCOMPARE( s, bigReplacement );
+ }
+
+ {
+ QString s;
+ s.insert(0, QLatin1String("BBB"));
+
+ auto smallReplacement = QString("C");
+
+ s.replace( QString("BBB"), smallReplacement );
+ QCOMPARE( s, smallReplacement );
+ }
+}
+
void tst_QString::replace_regexp()
{
QFETCH( QString, string );
@@ -2789,6 +2855,35 @@ void tst_QString::replace_regexp()
QTEST( s2, "result" );
}
+void tst_QString::replace_regexp_extra()
+{
+ {
+ QString s;
+ s.insert(0, QChar('A'));
+
+ auto bigReplacement = QString("B").repeated(s.capacity() * 3);
+
+ QRegularExpression regularExpression(QString("A"));
+ QVERIFY(regularExpression.isValid());
+
+ s.replace( regularExpression, bigReplacement );
+ QCOMPARE( s, bigReplacement );
+ }
+
+ {
+ QString s;
+ s.insert(0, QLatin1String("BBB"));
+
+ auto smallReplacement = QString("C");
+
+ QRegularExpression regularExpression(QString("BBB"));
+ QVERIFY(regularExpression.isValid());
+
+ s.replace( regularExpression, smallReplacement );
+ QCOMPARE( s, smallReplacement );
+ }
+}
+
void tst_QString::remove_uint_uint()
{
QFETCH( QString, string );
@@ -2864,6 +2959,14 @@ void tst_QString::remove_extra()
"The lazy dog jumps over the quick brown fox.";
s.remove(s);
}
+
+ {
+ QString s = "BCDEFGHJK";
+ QString s1 = s;
+ s1.insert(0, u'A'); // detaches
+ s1.remove(0, 1);
+ QCOMPARE(s1, s);
+ }
}
void tst_QString::toNum()