From be8f62f3ccb954ba45fbf627ce418b5b0c2aaa19 Mon Sep 17 00:00:00 2001 From: robot-piglet <robot-piglet@yandex-team.com> Date: Thu, 13 Jun 2024 16:36:24 +0300 Subject: Intermediate changes --- .../ut_gtest/case_insensitive_string_compare.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'library/cpp/case_insensitive_string') diff --git a/library/cpp/case_insensitive_string/ut_gtest/case_insensitive_string_compare.cpp b/library/cpp/case_insensitive_string/ut_gtest/case_insensitive_string_compare.cpp index fa37e075b8..cecd6f5044 100644 --- a/library/cpp/case_insensitive_string/ut_gtest/case_insensitive_string_compare.cpp +++ b/library/cpp/case_insensitive_string/ut_gtest/case_insensitive_string_compare.cpp @@ -54,21 +54,24 @@ TEST(CaseInsensitiveAsciiString, CompareAsciiWithoutNullBytes) { } } -TEST(CaseInsensitiveAsciiString, MaySupportLocales) { +TEST(CaseInsensitiveAsciiString, UnspecifiedBehaviorForNonAsciiStrings) { TLocaleGuard loc("ru_RU.CP1251"); if (loc.Error()) { GTEST_SKIP() << "ru_RU.CP1251 locale is not available: " << loc.Error(); } - // strncasecmp is locale-dependent, not sure about strnicmp + // - strncasecmp in glibc is locale-dependent. + // - not sure about strnicmp (probably also locale-dependent). + // - strncasecmp in musl and bionic ignores locales. + // - ASan interceptor for strncasecmp ignores locales { - TCaseInsensitiveStringBuf s1 = "\xc0\xc1\xc2"; // "АБВ" - TCaseInsensitiveStringBuf s2 = "\xe0\xe1\xe2"; // "абв" - EXPECT_EQ(s1, s2); + TCaseInsensitiveAsciiStringBuf s1 = "\xc0\xc1\xc2"; // "АБВ" + TCaseInsensitiveAsciiStringBuf s2 = "\xe0\xe1\xe2"; // "абв" + EXPECT_TRUE(s1 == s2 || s1 < s2); } { - TCaseInsensitiveStringBuf s1 = "\xc0\xc1\xc3"; // "АБГ" - TCaseInsensitiveStringBuf s2 = "\xe0\xe1\xe2"; // "абв" - EXPECT_GT(s1, s2); + TCaseInsensitiveAsciiStringBuf s1 = "\xc0\xc1\xc3"; // "АБГ" + TCaseInsensitiveAsciiStringBuf s2 = "\xe0\xe1\xe2"; // "абв" + EXPECT_TRUE(s1 > s2 || s1 < s2); } } -- cgit v1.2.3