summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/text/qstringview/tst_qstringview.cpp
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-01-10 01:01:15 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-01-10 01:01:15 +0100
commit0dc5562fa4f01140e98e55ceaa743b0f4fc276c7 (patch)
tree85fe2bfd06469a8d92a1d4ab233bc14d1b57aff4 /tests/auto/corelib/text/qstringview/tst_qstringview.cpp
parent6074ebf728668288e082cf7dca15de215cc0f653 (diff)
parent5507d0f1b04ea6b1d91be9ade30bc31d1830c220 (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Diffstat (limited to 'tests/auto/corelib/text/qstringview/tst_qstringview.cpp')
-rw-r--r--tests/auto/corelib/text/qstringview/tst_qstringview.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/auto/corelib/text/qstringview/tst_qstringview.cpp b/tests/auto/corelib/text/qstringview/tst_qstringview.cpp
index 47ce9a6f63..631bcce508 100644
--- a/tests/auto/corelib/text/qstringview/tst_qstringview.cpp
+++ b/tests/auto/corelib/text/qstringview/tst_qstringview.cpp
@@ -221,6 +221,8 @@ private Q_SLOTS:
void comparison();
+ void overloadResolution();
+
private:
template <typename String>
void conversion_tests(String arg) const;
@@ -678,5 +680,61 @@ void tst_QStringView::comparison()
QVERIFY(bb.compare(aa) > 0);
}
+namespace QStringViewOverloadResolution {
+static void test(QString) = delete;
+static void test(QStringView) {}
+}
+
+// Compile-time only test: overload resolution prefers QStringView over QString
+void tst_QStringView::overloadResolution()
+{
+ {
+ QChar qcharArray[42] = {};
+ QStringViewOverloadResolution::test(qcharArray);
+ QChar *qcharPointer = qcharArray;
+ QStringViewOverloadResolution::test(qcharPointer);
+ }
+
+ {
+ ushort ushortArray[42] = {};
+ QStringViewOverloadResolution::test(ushortArray);
+ ushort *ushortPointer = ushortArray;
+ QStringViewOverloadResolution::test(ushortPointer);
+ }
+
+ {
+ QStringRef stringRef;
+ QStringViewOverloadResolution::test(stringRef);
+ QStringViewOverloadResolution::test(qAsConst(stringRef));
+ QStringViewOverloadResolution::test(std::move(stringRef));
+ }
+
+#if defined(Q_OS_WIN)
+ {
+ wchar_t wchartArray[42] = {};
+ QStringViewOverloadResolution::test(wchartArray);
+ QStringViewOverloadResolution::test(L"test");
+ }
+#endif
+
+#if defined(Q_COMPILER_UNICODE_STRINGS)
+ {
+ char16_t char16Array[] = u"test";
+ QStringViewOverloadResolution::test(char16Array);
+ char16_t *char16Pointer = char16Array;
+ QStringViewOverloadResolution::test(char16Pointer);
+ }
+#endif
+
+#if defined(Q_STDLIB_UNICODE_STRINGS)
+ {
+ std::u16string string;
+ QStringViewOverloadResolution::test(string);
+ QStringViewOverloadResolution::test(qAsConst(string));
+ QStringViewOverloadResolution::test(std::move(string));
+ }
+#endif
+}
+
QTEST_APPLESS_MAIN(tst_QStringView)
#include "tst_qstringview.moc"