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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user