diff options
author | thegeorg <thegeorg@yandex-team.com> | 2024-01-27 11:11:33 +0300 |
---|---|---|
committer | thegeorg <thegeorg@yandex-team.com> | 2024-01-27 11:48:34 +0300 |
commit | eda4f4ec39180fa0767e1ed1edc1a3a0e0edcdf2 (patch) | |
tree | 91e23472a53df80243414e5ecef9bdc1fe8b8154 /util/stream/str_ut.cpp | |
parent | 3db080a60e4abbeb2c6e0f0b65c402f82abee0fb (diff) | |
download | ydb-eda4f4ec39180fa0767e1ed1edc1a3a0e0edcdf2.tar.gz |
Support wide strings (and string_views) in Out<> / IOutputStream
Diffstat (limited to 'util/stream/str_ut.cpp')
-rw-r--r-- | util/stream/str_ut.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/util/stream/str_ut.cpp b/util/stream/str_ut.cpp index fc6b46c31a..534b58d71c 100644 --- a/util/stream/str_ut.cpp +++ b/util/stream/str_ut.cpp @@ -149,4 +149,42 @@ Y_UNIT_TEST_SUITE(TStringInputOutputTest) { // Check old stream is in a valid state output1 << "baz"; } + + // There is no distinct tests for Out<> via IOutputStream. + // Let's tests strings output here. + Y_UNIT_TEST(TestWritingWideStrings) { + using namespace std::literals::string_literals; + TString str; + TStringOutput stream(str); + + // test char16_t + const char16_t* utf16Data = u"Быть или не быть? Вот в чём вопрос"; + stream << std::u16string(utf16Data); + UNIT_ASSERT_STRINGS_EQUAL(str, "Быть или не быть? Вот в чём вопрос"); + str.clear(); + + stream << std::u16string_view(utf16Data); + UNIT_ASSERT_STRINGS_EQUAL(str, "Быть или не быть? Вот в чём вопрос"); + str.clear(); + + // test char32_t + const char32_t* utf32Data = U"Быть или не быть? Вот в чём вопрос"; + stream << std::u32string(utf32Data); + UNIT_ASSERT_STRINGS_EQUAL(str, "Быть или не быть? Вот в чём вопрос"); + str.clear(); + + stream << std::u32string_view(utf32Data); + UNIT_ASSERT_STRINGS_EQUAL(str, "Быть или не быть? Вот в чём вопрос"); + str.clear(); + + // test wchar_t + const wchar_t* wcharData = L"Быть или не быть? Вот в чём вопрос"; + stream << std::wstring(wcharData); + UNIT_ASSERT_STRINGS_EQUAL(str, "Быть или не быть? Вот в чём вопрос"); + str.clear(); + + stream << std::wstring_view(wcharData); + UNIT_ASSERT_STRINGS_EQUAL(str, "Быть или не быть? Вот в чём вопрос"); + str.clear(); + } } |