diff options
author | Mika Viskari <miv391@gmail.com> | 2024-03-05 20:39:00 +0200 |
---|---|---|
committer | Mika Viskari <miv391@gmail.com> | 2024-03-05 20:46:10 +0200 |
commit | 3026b566b0143977c1b184781ca9bcb37cac65b7 (patch) | |
tree | 48e66140a8a8888d0094188ba748360f469256e1 /tests/core | |
parent | 7d80635fce1d0c44fa69d4d8cf3da40fa998f9c7 (diff) | |
download | redot-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.h | 63 |
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") { |