From 03293bcede95ef82d43cf0d052e2a5c5ee2a9d05 Mon Sep 17 00:00:00 2001 From: "Dr Mark C. Sinclair" Date: Thu, 29 Aug 2024 18:18:27 +0100 Subject: [PATCH] fix(developer): add u16rtrim test --- common/cpp/km_u16.cpp | 4 +++- .../src/kmcmplib/tests/gtest-km_u16-test.cpp | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/common/cpp/km_u16.cpp b/common/cpp/km_u16.cpp index 5db4122930..3028a1aa83 100644 --- a/common/cpp/km_u16.cpp +++ b/common/cpp/km_u16.cpp @@ -394,7 +394,9 @@ const KMX_WCHAR* u16ltrim(const KMX_WCHAR* p) { } KMX_WCHAR* u16rtrim(KMX_WCHAR *p) { - PKMX_WCHAR q = p + u16len(p); + if (!p || (u16len(p) == 0)) return p; + PKMX_WCHAR q = p + u16len(p) - 1; + if (iswspace(*q)) { while (iswspace(*q) && q > p) q--; if (!iswspace(*q)) q++; diff --git a/developer/src/kmcmplib/tests/gtest-km_u16-test.cpp b/developer/src/kmcmplib/tests/gtest-km_u16-test.cpp index 6b0caf4db3..110b83076f 100644 --- a/developer/src/kmcmplib/tests/gtest-km_u16-test.cpp +++ b/developer/src/kmcmplib/tests/gtest-km_u16-test.cpp @@ -169,6 +169,9 @@ TEST(km_u16_Test, u16tok_str_compare_to_strtok) { TEST(km_u16_Test, u16ltrim) { EXPECT_TRUE(!u16ltrim(nullptr)); + EXPECT_TRUE(!u16cmp(u"", u16ltrim(u""))); + EXPECT_TRUE(!u16cmp(u"", u16ltrim(u" "))); + EXPECT_TRUE(!u16cmp(u"", u16ltrim(u" "))); EXPECT_TRUE(!u16cmp(u"abc", u16ltrim(u"abc"))); EXPECT_TRUE(!u16cmp(u"abc", u16ltrim(u" abc"))); EXPECT_TRUE(!u16cmp(u"abc", u16ltrim(u" abc"))); @@ -177,5 +180,23 @@ TEST(km_u16_Test, u16ltrim) { } TEST(km_u16_Test, u16rtrim) { + KMX_WCHAR str[LINESIZE]; + EXPECT_TRUE(!u16rtrim(nullptr)); + u16cpy(str, u""); + EXPECT_TRUE(!u16cmp(u"", u16rtrim(str))); + u16cpy(str, u" "); + EXPECT_TRUE(!u16cmp(u"", u16rtrim(str))); + u16cpy(str, u" "); + EXPECT_TRUE(!u16cmp(u"", u16rtrim(str))); + u16cpy(str, u"abc"); + EXPECT_TRUE(!u16cmp(u"abc", u16rtrim(str))); + u16cpy(str, u"abc "); + EXPECT_TRUE(!u16cmp(u"abc", u16rtrim(str))); + u16cpy(str, u"abc "); + EXPECT_TRUE(!u16cmp(u"abc", u16rtrim(str))); + u16cpy(str, u" abc"); + EXPECT_TRUE(!u16cmp(u" abc", u16rtrim(str))); + u16cpy(str, u"abc\t"); + EXPECT_TRUE(!u16cmp(u"abc", u16rtrim(str))); }