summaryrefslogtreecommitdiff
path: root/Source/UnitTests/Common/StringUtilTest.cpp
diff options
context:
space:
mode:
authorJoshua Vandaƫle <joshua@vandaele.software>2025-08-04 19:34:31 +0200
committerJoshua Vandaƫle <joshua@vandaele.software>2025-08-04 19:34:31 +0200
commitf8b85edd0cdf87c9f9a8507258b7989023d028bf (patch)
treebcb5c202dbe2dcc12ab45a89078f5fae1bf23d89 /Source/UnitTests/Common/StringUtilTest.cpp
parent6ca486ffb20bd20d8e3efa20f5dc45beb18613c2 (diff)
Qt: Better wayland detection to enforce xcb
In certain cases, the platform can be "wayland-egl", "wayland-xcomposite", and other values for which I haven't found a full list yet. Instead of matching only "wayland", we now look for "wayland" anywhere in the `QT_QPA_PLATFORM` string in a case-insensitive manner. Acknowledgements: `CaseInsensitiveContains`' implementation was heavily inspired by GNU's non-standard glibc `strcasestr` function, which can be found here licensed under GPLv2 or later: https://ftp.gnu.org/gnu/libc/
Diffstat (limited to 'Source/UnitTests/Common/StringUtilTest.cpp')
-rw-r--r--Source/UnitTests/Common/StringUtilTest.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/Source/UnitTests/Common/StringUtilTest.cpp b/Source/UnitTests/Common/StringUtilTest.cpp
index 2be462a1b5..28bd150c06 100644
--- a/Source/UnitTests/Common/StringUtilTest.cpp
+++ b/Source/UnitTests/Common/StringUtilTest.cpp
@@ -225,3 +225,34 @@ TEST(StringUtil, SplitPathWindowsPathWithDriveLetter)
EXPECT_EQ(extension, "");
}
#endif
+
+TEST(StringUtil, CaseInsensitiveContains_BasicMatches)
+{
+ EXPECT_TRUE(Common::CaseInsensitiveContains("hello world", "hello"));
+ EXPECT_TRUE(Common::CaseInsensitiveContains("hello world", "world"));
+ EXPECT_TRUE(Common::CaseInsensitiveContains("HELLO WORLD", "hello"));
+ EXPECT_TRUE(Common::CaseInsensitiveContains("HeLLo WoRLd", "WORLD"));
+}
+
+TEST(StringUtil, CaseInsensitiveContains_SubstringNotFound)
+{
+ EXPECT_FALSE(Common::CaseInsensitiveContains("hello world", "hey"));
+}
+
+TEST(StringUtil, CaseInsensitiveContains_EmptyStrings)
+{
+ EXPECT_TRUE(Common::CaseInsensitiveContains("", ""));
+ EXPECT_TRUE(Common::CaseInsensitiveContains("hello", ""));
+ EXPECT_FALSE(Common::CaseInsensitiveContains("", "world"));
+}
+
+TEST(StringUtil, CaseInsensitiveContains_EntireStringMatch)
+{
+ EXPECT_TRUE(Common::CaseInsensitiveContains("Test", "TEST"));
+}
+
+TEST(StringUtil, CaseInsensitiveContains_OverlappingMatches)
+{
+ EXPECT_TRUE(Common::CaseInsensitiveContains("aaaaaa", "aa"));
+ EXPECT_TRUE(Common::CaseInsensitiveContains("ababababa", "bABa"));
+}