diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /library/cpp/protobuf/json/ut/string_transform_ut.cpp | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'library/cpp/protobuf/json/ut/string_transform_ut.cpp')
-rw-r--r-- | library/cpp/protobuf/json/ut/string_transform_ut.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/library/cpp/protobuf/json/ut/string_transform_ut.cpp b/library/cpp/protobuf/json/ut/string_transform_ut.cpp new file mode 100644 index 0000000000..a31dabcb0f --- /dev/null +++ b/library/cpp/protobuf/json/ut/string_transform_ut.cpp @@ -0,0 +1,106 @@ +#include "json.h" + +#include <library/cpp/testing/unittest/registar.h> +#include <library/cpp/protobuf/json/proto2json.h> + +Y_UNIT_TEST_SUITE(TDoubleEscapeTransform) { + Y_UNIT_TEST(TestEmptyString) { + const NProtobufJson::IStringTransform& transform = NProtobufJson::TDoubleEscapeTransform(); + TString s; + s = ""; + transform.Transform(s); + UNIT_ASSERT_EQUAL(s, ""); + } + + Y_UNIT_TEST(TestAlphabeticString) { + const NProtobufJson::IStringTransform& transform = NProtobufJson::TDoubleEscapeTransform(); + TString s; + s = "abacaba"; + transform.Transform(s); + UNIT_ASSERT_EQUAL(s, "abacaba"); + } + + Y_UNIT_TEST(TestRussianSymbols) { + const NProtobufJson::IStringTransform& transform = NProtobufJson::TDoubleEscapeTransform(); + TString s; + s = "тест"; + transform.Transform(s); + UNIT_ASSERT_EQUAL(s, "\\\\321\\\\202\\\\320\\\\265\\\\321\\\\201\\\\321\\\\202"); + } + + Y_UNIT_TEST(TestEscapeSpecialSymbols) { + const NProtobufJson::IStringTransform& transform = NProtobufJson::TDoubleEscapeTransform(); + TString s; + s = "aba\\ca\"ba"; + transform.Transform(s); + Cerr << "###" << s << Endl; + UNIT_ASSERT_EQUAL(s, "aba\\\\\\\\ca\\\\\\\"ba"); + } +} + +Y_UNIT_TEST_SUITE(TDoubleUnescapeTransform) { + Y_UNIT_TEST(TestEmptyString) { + const NProtobufJson::IStringTransform& transform = NProtobufJson::TDoubleUnescapeTransform(); + TString s; + s = ""; + transform.Transform(s); + UNIT_ASSERT_EQUAL("", s); + } + + Y_UNIT_TEST(TestAlphabeticString) { + const NProtobufJson::IStringTransform& transform = NProtobufJson::TDoubleUnescapeTransform(); + TString s; + s = "abacaba"; + transform.Transform(s); + Cerr << "###" << s << Endl; + UNIT_ASSERT_EQUAL("abacaba", s); + } + + Y_UNIT_TEST(TestRussianSymbols) { + const NProtobufJson::IStringTransform& transform = NProtobufJson::TDoubleUnescapeTransform(); + TString s; + s = "\\\\321\\\\202\\\\320\\\\265\\\\321\\\\201\\\\321\\\\202"; + transform.Transform(s); + UNIT_ASSERT_EQUAL("тест", s); + } + + Y_UNIT_TEST(TestEscapeSpecialSymbols) { + const NProtobufJson::IStringTransform& transform = NProtobufJson::TDoubleUnescapeTransform(); + TString s; + s = "aba\\\\\\\\ca\\\\\\\"ba"; + transform.Transform(s); + UNIT_ASSERT_EQUAL("aba\\ca\"ba", s); + } + + Y_UNIT_TEST(TestEscapeSpecialSymbolsDifficultCases) { + const NProtobufJson::IStringTransform& transform = NProtobufJson::TDoubleUnescapeTransform(); + TString s; + s = "\\\\\\\\\\\\\\\\"; + transform.Transform(s); + UNIT_ASSERT_EQUAL("\\\\", s); + + s = "\\\\\\\\\\\\\\\""; + transform.Transform(s); + UNIT_ASSERT_EQUAL("\\\"", s); + + s = "\\\\\\\"\\\\\\\\"; + transform.Transform(s); + UNIT_ASSERT_EQUAL("\"\\", s); + + s = "\\\\\\\"\\\\\\\""; + transform.Transform(s); + UNIT_ASSERT_EQUAL("\"\"", s); + + s = "\\\\\\\\\\\\\\\\\\\\\\\\"; + transform.Transform(s); + UNIT_ASSERT_EQUAL("\\\\\\", s); + + s = "\\\\\\\\\\\\\\\\\\\\\\\\abacaba\\\\"; + transform.Transform(s); + UNIT_ASSERT_EQUAL("\\\\\\abacaba", s); + + s = "\\\\\\\\\\\\\\\\\\\\\\\\abacaba\\\""; + transform.Transform(s); + UNIT_ASSERT_EQUAL("\\\\\\abacaba\"", s); + } +} |