diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2022-03-27 15:14:10 +0300 |
---|---|---|
committer | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2022-04-05 10:04:20 +0300 |
commit | 79087328ec60236112a7eb5818f5114d4992638d (patch) | |
tree | c46f83adc607ab5815c3691aed7851ef48309fc5 | |
parent | ef2e922f9642f943199138447b29ec53fa63ea68 (diff) | |
download | ccache-79087328ec60236112a7eb5818f5114d4992638d.tar.gz |
test: Simplify tokenizer tests
-rw-r--r-- | unittest/test_util_Tokenizer.cpp | 140 |
1 files changed, 42 insertions, 98 deletions
diff --git a/unittest/test_util_Tokenizer.cpp b/unittest/test_util_Tokenizer.cpp index 76c9e027..0ada5a2a 100644 --- a/unittest/test_util_Tokenizer.cpp +++ b/unittest/test_util_Tokenizer.cpp @@ -23,116 +23,60 @@ TEST_CASE("util::Tokenizer") { using Mode = util::Tokenizer::Mode; - - SUBCASE("include empty tokens") + struct SplitTest { + SplitTest(Mode mode) : m_mode(mode) { - const auto s = Util::split_into_views("", "/", Mode::include_empty); - REQUIRE(s.size() == 1); - CHECK(s[0] == ""); - } - { - const auto s = Util::split_into_views("/", "/", Mode::include_empty); - REQUIRE(s.size() == 2); - CHECK(s[0] == ""); - CHECK(s[1] == ""); - } - { - const auto s = Util::split_into_views("a/", "/", Mode::include_empty); - REQUIRE(s.size() == 2); - CHECK(s[0] == "a"); - CHECK(s[1] == ""); - } - { - const auto s = Util::split_into_views("/b", "/", Mode::include_empty); - REQUIRE(s.size() == 2); - CHECK(s[0] == ""); - CHECK(s[1] == "b"); - } - { - const auto s = Util::split_into_views("a/b", "/", Mode::include_empty); - REQUIRE(s.size() == 2); - CHECK(s[0] == "a"); - CHECK(s[1] == "b"); } + + void + operator()(const char* input, + const char* separators, + const std::vector<std::string>& expected) { - const auto s = Util::split_into_views("/a:", "/:", Mode::include_empty); - REQUIRE(s.size() == 3); - CHECK(s[0] == ""); - CHECK(s[1] == "a"); - CHECK(s[2] == ""); + const auto res = Util::split_into_views(input, separators, m_mode); + REQUIRE(res.size() == expected.size()); + for (int i = 0, total = expected.size(); i < total; ++i) + CHECK(res[i] == expected[i]); } + + Mode m_mode; + }; + + SUBCASE("include empty tokens") + { + SplitTest split(Mode::include_empty); + split("", "/", {""}); + split("/", "/", {"", ""}); + split("a/", "/", {"a", ""}); + split("/b", "/", {"", "b"}); + split("a/b", "/", {"a", "b"}); + split("/a:", "/:", {"", "a", ""}); } SUBCASE("skip empty") { - CHECK(Util::split_into_views("", "/", Mode::skip_empty).empty()); - CHECK(Util::split_into_views("///", "/", Mode::skip_empty).empty()); - { - const auto s = Util::split_into_views("a/b", "/", Mode::skip_empty); - REQUIRE(s.size() == 2); - CHECK(s[0] == "a"); - CHECK(s[1] == "b"); - } - { - const auto s = Util::split_into_views("a/b", "x", Mode::skip_empty); - REQUIRE(s.size() == 1); - CHECK(s[0] == "a/b"); - } - { - const auto s = Util::split_into_views("a/b:c", "/:", Mode::skip_empty); - REQUIRE(s.size() == 3); - CHECK(s[0] == "a"); - CHECK(s[1] == "b"); - CHECK(s[2] == "c"); - } - { - const auto s = - Util::split_into_views(":a//b..:.c/:/.", "/:.", Mode::skip_empty); - REQUIRE(s.size() == 3); - CHECK(s[0] == "a"); - CHECK(s[1] == "b"); - CHECK(s[2] == "c"); - } - { - const auto s = Util::split_into_views( - ".0.1.2.3.4.5.6.7.8.9.", "/:.+_abcdef", Mode::skip_empty); - REQUIRE(s.size() == 10); - CHECK(s[0] == "0"); - CHECK(s[9] == "9"); - } + SplitTest split(Mode::skip_empty); + split("", "/", {}); + split("///", "/", {}); + split("a/b", "/", {"a", "b"}); + split("a/b", "x", {"a/b"}); + split("a/b:c", "/:", {"a", "b", "c"}); + split("/a:", "/:", {"a"}); + split(":a//b..:.c/:/.", "/:.", {"a", "b", "c"}); + split(".0.1.2.3.4.5.6.7.8.9.", + "/:.+_abcdef", + {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}); } SUBCASE("skip last empty token") { - CHECK(Util::split_into_views("", "/", Mode::skip_last_empty).empty()); - { - const auto s = Util::split_into_views("/", "/", Mode::skip_last_empty); - REQUIRE(s.size() == 1); - CHECK(s[0] == ""); - } - { - const auto s = Util::split_into_views("a/", "/", Mode::skip_last_empty); - REQUIRE(s.size() == 1); - CHECK(s[0] == "a"); - } - { - const auto s = Util::split_into_views("/b", "/", Mode::skip_last_empty); - REQUIRE(s.size() == 2); - CHECK(s[0] == ""); - CHECK(s[1] == "b"); - } - { - const auto s = Util::split_into_views("a/b", "/", Mode::skip_last_empty); - REQUIRE(s.size() == 2); - CHECK(s[0] == "a"); - CHECK(s[1] == "b"); - } - { - const auto s = Util::split_into_views("/a:", "/:", Mode::skip_last_empty); - REQUIRE(s.size() == 2); - CHECK(s[0] == ""); - CHECK(s[1] == "a"); - } + SplitTest split(Mode::skip_last_empty); + split("", "/", {}); + split("/", "/", {""}); + split("a/", "/", {"a"}); + split("/b", "/", {"", "b"}); + split("a/b", "/", {"a", "b"}); + split("/a:", "/:", {"", "a"}); } } |