aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/deprecated/split/split_iterator_ut.cpp
diff options
context:
space:
mode:
authorDevtools Arcadia <arcadia-devtools@yandex-team.ru>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /library/cpp/deprecated/split/split_iterator_ut.cpp
downloadydb-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.cpp152
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);