summaryrefslogtreecommitdiffstats
path: root/tests/core
diff options
context:
space:
mode:
authorMika Viskari <miv391@gmail.com>2024-03-05 20:39:00 +0200
committerMika Viskari <miv391@gmail.com>2024-03-05 20:46:10 +0200
commit3026b566b0143977c1b184781ca9bcb37cac65b7 (patch)
tree48e66140a8a8888d0094188ba748360f469256e1 /tests/core
parent7d80635fce1d0c44fa69d4d8cf3da40fa998f9c7 (diff)
downloadredot-engine-3026b566b0143977c1b184781ca9bcb37cac65b7.tar.gz
Fix String::begins_with when both strings are empty
Diffstat (limited to 'tests/core')
-rw-r--r--tests/core/string/test_string.h63
1 files changed, 37 insertions, 26 deletions
diff --git a/tests/core/string/test_string.h b/tests/core/string/test_string.h
index 8d2607b874..da742d0183 100644
--- a/tests/core/string/test_string.h
+++ b/tests/core/string/test_string.h
@@ -642,48 +642,59 @@ struct test_27_data {
TEST_CASE("[String] Begins with") {
test_27_data tc[] = {
+ // Test cases for true:
{ "res://foobar", "res://", true },
+ { "abc", "abc", true },
+ { "abc", "", true },
+ { "", "", true },
+ // Test cases for false:
{ "res", "res://", false },
- { "abc", "abc", true }
+ { "abcdef", "foo", false },
+ { "abc", "ax", false },
+ { "", "abc", false }
};
size_t count = sizeof(tc) / sizeof(tc[0]);
bool state = true;
- for (size_t i = 0; state && i < count; ++i) {
+ for (size_t i = 0; i < count; ++i) {
String s = tc[i].data;
state = s.begins_with(tc[i].part) == tc[i].expected;
- if (state) {
- String sb = tc[i].part;
- state = s.begins_with(sb) == tc[i].expected;
- }
- CHECK(state);
- if (!state) {
- break;
- }
- };
- CHECK(state);
+ CHECK_MESSAGE(state, "first check failed at: ", i);
+
+ String sb = tc[i].part;
+ state = s.begins_with(sb) == tc[i].expected;
+ CHECK_MESSAGE(state, "second check failed at: ", i);
+ }
+
+ // Test "const char *" version also with nullptr.
+ String s("foo");
+ state = s.begins_with(nullptr) == false;
+ CHECK_MESSAGE(state, "nullptr check failed");
+
+ String empty("");
+ state = empty.begins_with(nullptr) == false;
+ CHECK_MESSAGE(state, "nullptr check with empty string failed");
}
TEST_CASE("[String] Ends with") {
test_27_data tc[] = {
+ // test cases for true:
{ "res://foobar", "foobar", true },
+ { "abc", "abc", true },
+ { "abc", "", true },
+ { "", "", true },
+ // test cases for false:
{ "res", "res://", false },
- { "abc", "abc", true }
+ { "", "abc", false },
+ { "abcdef", "foo", false },
+ { "abc", "xc", false }
};
size_t count = sizeof(tc) / sizeof(tc[0]);
- bool state = true;
- for (size_t i = 0; state && i < count; ++i) {
+ for (size_t i = 0; i < count; ++i) {
String s = tc[i].data;
- state = s.ends_with(tc[i].part) == tc[i].expected;
- if (state) {
- String sb = tc[i].part;
- state = s.ends_with(sb) == tc[i].expected;
- }
- CHECK(state);
- if (!state) {
- break;
- }
- };
- CHECK(state);
+ String sb = tc[i].part;
+ bool state = s.ends_with(sb) == tc[i].expected;
+ CHECK_MESSAGE(state, "check failed at: ", i);
+ }
}
TEST_CASE("[String] format") {