aboutsummaryrefslogtreecommitdiff
path: root/libs/kstd/tests/src/string.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/kstd/tests/src/string.cpp')
-rw-r--r--libs/kstd/tests/src/string.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/libs/kstd/tests/src/string.cpp b/libs/kstd/tests/src/string.cpp
index f7f629d..43e9a6b 100644
--- a/libs/kstd/tests/src/string.cpp
+++ b/libs/kstd/tests/src/string.cpp
@@ -387,4 +387,59 @@ SCENARIO("String iteration", "[string]")
}
}
}
+
+ GIVEN("A const string")
+ {
+ auto const str = kstd::string{"Blub"};
+
+ WHEN("iterating over the characters of the string as string_view using a range-based for loop")
+ {
+ kstd::string result;
+
+ for (auto ch : str.view())
+ {
+ result.push_back(ch);
+ }
+
+ THEN("the iterated characters are the same as the characters in the string")
+ {
+ REQUIRE(result == str.view());
+ }
+ }
+
+ WHEN("using front and back to access the first and last characters of the string")
+ {
+ THEN("front returns the first character of the string")
+ {
+ REQUIRE(str.front() == 'B');
+ }
+
+ THEN("back returns the last character of the string")
+ {
+ REQUIRE(str.back() == 'b');
+ }
+ }
+ }
+
+ GIVEN("An empty string")
+ {
+ auto str = kstd::string{};
+
+ WHEN("iterating over the characters of an empty string")
+ {
+ kstd::string result;
+
+ for (auto ch : str.view())
+ {
+ result.push_back(ch);
+ }
+
+ THEN("no characters are iterated and the result is an empty string")
+ {
+ REQUIRE(result.empty());
+ REQUIRE(result.size() == 0);
+ REQUIRE(result.view() == std::string_view{});
+ }
+ }
+ }
}