1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-23 23:04:36 +01:00

Make strlogicalcmp case insensitive

This commit is contained in:
Michał Janiszewski
2020-05-18 06:50:01 +02:00
parent 16d8c64cea
commit 7f8a65c095
2 changed files with 21 additions and 5 deletions

View File

@@ -333,8 +333,8 @@ int32_t strlogicalcmp(const char* s1, const char* s2)
return -1;
else if (!(isdigit(*s1) && isdigit(*s2)))
{
if (*s1 != *s2)
return (int)*s1 - (int)*s2;
if (tolower(*s1) != tolower(*s2))
return tolower(*s1) - tolower(*s2);
else
(++s1, ++s2);
}

View File

@@ -151,7 +151,23 @@ TEST_F(StringTest, ToUpper_Japanese)
TEST_F(StringTest, strlogicalcmp)
{
auto res1 = strlogicalcmp("foo1", "foo1_2");
auto res2 = strlogicalcmp("foo1_2", "foo1");
ASSERT_NE(res1, res2);
auto res_logical_1 = strlogicalcmp("foo1", "foo1_2");
auto res_logical_2 = strlogicalcmp("foo1_2", "foo1");
auto res_1 = strcmp("foo1", "foo1_2");
auto res_2 = strcmp("foo1_2", "foo1");
// We only care if sign is correct, actual values might not be.
EXPECT_GE(res_1 * res_logical_1, 1);
EXPECT_GE(res_2 * res_logical_2, 1);
EXPECT_NE(res_logical_1, res_logical_2);
EXPECT_GT(strlogicalcmp("foo12", "foo1"), 0);
EXPECT_LT(strlogicalcmp("foo12", "foo13"), 0);
EXPECT_EQ(strlogicalcmp("foo13", "foo13"), 0);
EXPECT_EQ(strlogicalcmp("foo13", "FOO13"), 0);
EXPECT_LT(strlogicalcmp("A", "b"), 0);
EXPECT_LT(strlogicalcmp("a", "B"), 0);
EXPECT_GT(strlogicalcmp("B", "a"), 0);
EXPECT_GT(strlogicalcmp("b", "A"), 0);
}