diff options
Diffstat (limited to '')
-rw-r--r-- | src/base/intern_string.tests.cc | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/src/base/intern_string.tests.cc b/src/base/intern_string.tests.cc index 8816803..71ff7c2 100644 --- a/src/base/intern_string.tests.cc +++ b/src/base/intern_string.tests.cc @@ -43,6 +43,15 @@ TEST_CASE("string_fragment::startswith") CHECK_FALSE(sf.startswith("abc")); } +TEST_CASE("string_fragment::lt") +{ + auto sf1 = string_fragment::from_const("abc"); + auto sf2 = string_fragment::from_const("abcdef"); + + CHECK(sf1 < sf2); + CHECK_FALSE(sf2 < sf1); +} + TEST_CASE("split_lines") { std::string in1 = "Hello, World!"; @@ -129,6 +138,12 @@ TEST_CASE("find_left_boundary") auto world_sf = sf.find_left_boundary( in1.length() - 3, [](auto ch) { return ch == '\n'; }); CHECK(world_sf.to_string() == "World!\n"); + auto world_sf2 = sf.find_left_boundary( + in1.length() - 3, [](auto ch) { return ch == '\n'; }, 2); + CHECK(world_sf2.to_string() == "Hello,\nWorld!\n"); + auto world_sf3 = sf.find_left_boundary( + in1.length() - 3, [](auto ch) { return ch == '\n'; }, 3); + CHECK(world_sf3.to_string() == "Hello,\nWorld!\n"); auto full_sf = sf.find_left_boundary(3, [](auto ch) { return ch == '\n'; }); CHECK(full_sf.to_string() == in1); @@ -137,16 +152,35 @@ TEST_CASE("find_left_boundary") TEST_CASE("find_right_boundary") { - std::string in1 = "Hello,\nWorld!\n"; - { - auto sf = string_fragment{in1}; + const auto sf = string_fragment::from_const("Hello,\nWorld!\n"); - auto world_sf = sf.find_right_boundary( - in1.length() - 3, [](auto ch) { return ch == '\n'; }); + auto world_sf = sf.find_right_boundary(sf.length() - 3, + string_fragment::tag1{'\n'}); CHECK(world_sf.to_string() == "Hello,\nWorld!"); auto hello_sf = sf.find_right_boundary(3, [](auto ch) { return ch == '\n'; }); CHECK(hello_sf.to_string() == "Hello,"); + auto hello_sf2 + = sf.find_right_boundary(3, string_fragment::tag1{'\n'}, 2); + CHECK(hello_sf2.to_string() == "Hello,\nWorld!"); + } +} + +TEST_CASE("find_boundaries_around") +{ + { + const auto sf = string_fragment::from_const( + R"(Hello, +World! +Goodbye, +World!)"); + + auto all_sf1 + = sf.find_boundaries_around(3, string_fragment::tag1{'\n'}); + CHECK(all_sf1 == "Hello,"); + auto all_sf2 + = sf.find_boundaries_around(3, string_fragment::tag1{'\n'}, 2); + CHECK(all_sf2 == "Hello,\nWorld!"); } } |