From 635e59abea65ef91f1b065d61c79802f7610f35e Mon Sep 17 00:00:00 2001 From: Yury Melnichek Date: Thu, 26 May 2011 02:05:36 +0200 Subject: [PATCH] Add strings::MakeUniString(). --- base/base_tests/string_utils_test.cpp | 16 +++++++++++----- base/string_utils.hpp | 7 +++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/base/base_tests/string_utils_test.cpp b/base/base_tests/string_utils_test.cpp index 474152f464..d72214a9e3 100644 --- a/base/base_tests/string_utils_test.cpp +++ b/base/base_tests/string_utils_test.cpp @@ -65,17 +65,17 @@ UNIT_TEST(LowerUniChar) case 0: continue; case 1: { - m[uc] = us; - ++cCount; + m[uc] = us; + ++cCount; TEST_EQUAL(strings::LowerUniChar(uc), us[0], ()); - TEST_EQUAL(type, " C", ()); + TEST_EQUAL(type, " C", ()); break; } default: m[uc] = us; ++fCount; TEST_EQUAL(type, " F", ()); break; } } LOG(LINFO, ("Loaded", cCount, "common foldings and", fCount, "full foldings")); - + // full range unicode table test for (strings::UniChar c = 0; c < 0x11000; ++c) { @@ -111,7 +111,7 @@ UNIT_TEST(MakeLowerCase) string const utf8("Hola! 99-\xD0\xA3\xD0\x9F\xD0\xAF\xD0\xA7\xD0\x9A\xD0\x90"); TEST_EQUAL(strings::MakeLowerCase(utf8), "hola! 99-\xD1\x83\xD0\xBF\xD1\x8F\xD1\x87\xD0\xBA\xD0\xB0", ()); - + s = "\xc3\x9f"; // es-cet strings::MakeLowerCase(s); TEST_EQUAL(s, "ss", ()); @@ -246,3 +246,9 @@ UNIT_TEST(GetUniString) TEST_EQUAL(iter.GetUniString(), us, ()); } } + +UNIT_TEST(MakeUniString_Smoke) +{ + char const s [] = "Hello!"; + TEST_EQUAL(strings::UniString(&s[0], &s[0] + ARRAY_SIZE(s) - 1), strings::MakeUniString(s), ()); +} diff --git a/base/string_utils.hpp b/base/string_utils.hpp index 864406f1ab..c6e7cd6897 100644 --- a/base/string_utils.hpp +++ b/base/string_utils.hpp @@ -21,6 +21,13 @@ void MakeLowerCase(string & s); string MakeLowerCase(string const & s); bool EqualNoCase(string const & s1, string const & s2); +inline UniString MakeUniString(string const & s) +{ + UniString result; + utf8::unchecked::utf8to32(s.begin(), s.end(), back_inserter(result)); + return result; +} + template class TokenizeIterator {