Fix String::begins_with when both strings are empty

This commit is contained in:
Mika Viskari
2024-03-05 20:39:00 +02:00
parent 7d80635fce
commit 3026b566b0
2 changed files with 42 additions and 27 deletions
+37 -26
View File
@@ -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") {