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/deprecated/split/split_iterator_ut.cpp | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'library/cpp/deprecated/split/split_iterator_ut.cpp')
-rw-r--r-- | library/cpp/deprecated/split/split_iterator_ut.cpp | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/library/cpp/deprecated/split/split_iterator_ut.cpp b/library/cpp/deprecated/split/split_iterator_ut.cpp new file mode 100644 index 0000000000..be5069c4be --- /dev/null +++ b/library/cpp/deprecated/split/split_iterator_ut.cpp @@ -0,0 +1,152 @@ +#include "split_iterator.h" + +#include <library/cpp/testing/unittest/registar.h> + +class TSplitIteratorTest: public TTestBase { + UNIT_TEST_SUITE(TSplitIteratorTest); + UNIT_TEST(TestDelimiters); + UNIT_TEST(TestDelimitersSplit); + UNIT_TEST(TestDelimitersStrictSplit); + UNIT_TEST(TestTail); + UNIT_TEST(TestScreenedDelimitersSplit); + UNIT_TEST(TestSubstringDelimiter); + UNIT_TEST_SUITE_END(); + +public: + void TestDelimiters(); + void TestDelimitersSplit(); + void TestDelimitersStrictSplit(); + void TestTail(); + void TestScreenedDelimitersSplit(); + void TestSubstringDelimiter(); +}; + +void TSplitIteratorTest::TestDelimiters() { + TSplitDelimiters delims("@"); + for (int i = 0; i < 256; ++i) + if ('@' != i) { + UNIT_ASSERT(!delims.IsDelimiter((ui8)i)); + } else { + UNIT_ASSERT(delims.IsDelimiter((ui8)i)); + } +} + +void TSplitIteratorTest::TestDelimitersSplit() { + { + TString s = "1a3b45cd"; + TSplitDelimiters delims("abcd"); + TDelimitersSplit split(s, delims); + TSplitTokens tokens; + Split(split, &tokens); + TSplitTokens pattern = {"1", "3", "45"}; + UNIT_ASSERT(tokens == pattern); + } + { + TString s = "aaaaaa"; + TSplitDelimiters delims("abcd"); + TDelimitersSplit split(s, delims); + TSplitTokens tokens; + Split(split, &tokens); + TSplitTokens pattern = {}; + UNIT_ASSERT(tokens == pattern); + } +} + +void TSplitIteratorTest::TestDelimitersStrictSplit() { + { + TString s = "grp@2"; + TSplitDelimiters delims("@"); + TDelimitersStrictSplit split(s, delims); + TSplitTokens tokens; + Split(split, &tokens); + TSplitTokens pattern = {"grp", "2"}; + UNIT_ASSERT(tokens == pattern); + } + + { + TString s = "@grp@2@@"; + TSplitDelimiters delims("@"); + TDelimitersStrictSplit split(s, delims); + TSplitTokens tokens; + Split(split, &tokens); + TSplitTokens pattern = {"", "grp", "2", ""}; + UNIT_ASSERT(tokens == pattern); + } +} + +void TSplitIteratorTest::TestTail() { + TString s = "grp@2@4"; + TSplitDelimiters delims("@"); + TDelimitersSplit split(s, delims); + TDelimitersSplit::TIterator it = split.Iterator(); + UNIT_ASSERT_EQUAL(it.GetTail(), "grp@2@4"); + it.Next(); + UNIT_ASSERT_EQUAL(it.GetTail(), "2@4"); + it.Next(); + UNIT_ASSERT_EQUAL(it.GetTail(), "4"); + it.Next(); + UNIT_ASSERT_EQUAL(it.GetTail(), ""); +} + +void TSplitIteratorTest::TestScreenedDelimitersSplit() { + { + const TString s = "77.88.58.91 - - [28/Aug/2008:00:08:07 +0400] \"GET /export/mordashka.tgz HTTP/1.1\" 304 - \"-\" \"libwww-perl/5.805\" \"news.yandex.ru,80\" \"-\" \"-\" 1219867687 \"0\" 3283 2"; + const TSplitDelimiters delims(" "); + const TSplitDelimiters screens("\"[]"); + const TScreenedDelimitersSplit splitter(s, delims, screens); + TScreenedDelimitersSplit::TIterator it = splitter.Iterator(); + UNIT_ASSERT_EQUAL(it.NextString(), "77.88.58.91"); + UNIT_ASSERT_EQUAL(it.NextString(), "-"); + UNIT_ASSERT_EQUAL(it.NextString(), "-"); + UNIT_ASSERT_EQUAL(it.NextString(), "[28/Aug/2008:00:08:07 +0400]"); + UNIT_ASSERT_EQUAL(it.NextString(), "\"GET /export/mordashka.tgz HTTP/1.1\""); + UNIT_ASSERT_EQUAL(it.NextString(), "304"); + UNIT_ASSERT_EQUAL(it.NextString(), "-"); + UNIT_ASSERT_EQUAL(it.NextString(), "\"-\""); + UNIT_ASSERT_EQUAL(it.NextString(), "\"libwww-perl/5.805\""); + UNIT_ASSERT_EQUAL(it.NextString(), "\"news.yandex.ru,80\""); + UNIT_ASSERT_EQUAL(it.NextString(), "\"-\""); + UNIT_ASSERT_EQUAL(it.NextString(), "\"-\""); + UNIT_ASSERT_EQUAL(it.NextString(), "1219867687"); + UNIT_ASSERT_EQUAL(it.NextString(), "\"0\""); + UNIT_ASSERT_EQUAL(it.NextString(), "3283"); + UNIT_ASSERT_EQUAL(it.NextString(), "2"); + } + { + const TString s = "77.88.58.91 - - [28/Aug/2008:00:08:07 +0400] \"GET /export/mordashka.tgz HTTP/1.1\" 304 - \"-\" \"libwww-perl/5.805\" \"news.yandex.ru,80\" \"-\" \"-\" 1219867687 \"0\" 3283 2"; + const TSplitDelimiters delims(" "); + const TSplitDelimiters screens("\"[]"); + const TScreenedDelimitersSplit splitter(s.Data(), s.Size(), delims, screens); + TScreenedDelimitersSplit::TIterator it = splitter.Iterator(); + UNIT_ASSERT_EQUAL(it.NextString(), "77.88.58.91"); + UNIT_ASSERT_EQUAL(it.NextString(), "-"); + UNIT_ASSERT_EQUAL(it.NextString(), "-"); + UNIT_ASSERT_EQUAL(it.NextString(), "[28/Aug/2008:00:08:07 +0400]"); + UNIT_ASSERT_EQUAL(it.NextString(), "\"GET /export/mordashka.tgz HTTP/1.1\""); + UNIT_ASSERT_EQUAL(it.NextString(), "304"); + UNIT_ASSERT_EQUAL(it.NextString(), "-"); + UNIT_ASSERT_EQUAL(it.NextString(), "\"-\""); + UNIT_ASSERT_EQUAL(it.NextString(), "\"libwww-perl/5.805\""); + UNIT_ASSERT_EQUAL(it.NextString(), "\"news.yandex.ru,80\""); + UNIT_ASSERT_EQUAL(it.NextString(), "\"-\""); + UNIT_ASSERT_EQUAL(it.NextString(), "\"-\""); + UNIT_ASSERT_EQUAL(it.NextString(), "1219867687"); + UNIT_ASSERT_EQUAL(it.NextString(), "\"0\""); + UNIT_ASSERT_EQUAL(it.NextString(), "3283"); + UNIT_ASSERT_EQUAL(it.NextString(), "2"); + } +} + +void TSplitIteratorTest::TestSubstringDelimiter() { + const TString s = "a@@bb@@cc@c.d@@r"; + static const TSubstringSplitDelimiter delimiter("@@"); + const TSubstringSplit splitter(s, delimiter); + TSubstringSplit::TIterator it = splitter.Iterator(); + UNIT_ASSERT_EQUAL(it.NextString(), "a"); + UNIT_ASSERT_EQUAL(it.NextString(), "bb"); + UNIT_ASSERT_EQUAL(it.NextString(), "cc@c.d"); + UNIT_ASSERT_EQUAL(it.NextString(), "r"); + UNIT_ASSERT(it.Eof()); +} + +UNIT_TEST_SUITE_REGISTRATION(TSplitIteratorTest); |