diff options
| author | Maxime Coste <mawww@kakoune.org> | 2017-12-07 01:58:19 +0800 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2017-12-07 01:58:19 +0800 |
| commit | bedb98220cf45e328e6b1ce98b7c984e15ceeb62 (patch) | |
| tree | a782bfbcd6793a81c58bf243bd71c6403de04ab1 /src/ranges.cc | |
| parent | 2f48bbf6ff0c2bad4d06ce1189cd8e0e50d7a447 (diff) | |
Ranges: add unit test and fix corner case in split view
Diffstat (limited to 'src/ranges.cc')
| -rw-r--r-- | src/ranges.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/ranges.cc b/src/ranges.cc new file mode 100644 index 00000000..d1603c18 --- /dev/null +++ b/src/ranges.cc @@ -0,0 +1,27 @@ +#include "ranges.hh" +#include "unit_tests.hh" +#include "string.hh" +#include "string_utils.hh" + +namespace Kakoune +{ + +UnitTest test_ranges{[] { + auto check_equal = [](auto&& container, ConstArrayView<StringView> expected) { + kak_assert(std::equal(container.begin(), container.end(), expected.begin(), expected.end())); + }; + check_equal("a,b,c"_sv | split<StringView>(','), {"a", "b", "c"}); + check_equal(",b,c"_sv | split<StringView>(','), {"", "b", "c"}); + check_equal(",b,"_sv | split<StringView>(','), {"", "b", ""}); + check_equal(","_sv | split<StringView>(','), {"", ""}); + check_equal(""_sv | split<StringView>(','), {}); + + check_equal(R"(a\,,\,b,\,)"_sv | split<StringView>(',', '\\') + | transform(unescape<',', '\\'>), {"a,", ",b", ","}); + check_equal(R"(\,\,)"_sv | split<StringView>(',', '\\') + | transform(unescape<',', '\\'>), {",,"}); + check_equal(R"(\\,\\,)"_sv | split<StringView>(',', '\\') + | transform(unescape<',', '\\'>), {R"(\)", R"(\)", ""}); +}}; + +} |
