1
0
mirror of https://github.com/godotengine/godot.git synced 2025-12-02 16:48:55 +00:00

Clean up String::find to remove duplicate code, and speed up comparison with memcmp where possible.

This commit is contained in:
Lukas Tenbrink
2025-09-22 14:46:55 +02:00
parent b15a13eed3
commit 43a8009a56
3 changed files with 62 additions and 167 deletions

View File

@@ -396,6 +396,8 @@ TEST_CASE("[String] Find") {
MULTICHECK_STRING_EQ(s, find, "tty", 3);
MULTICHECK_STRING_EQ(s, find, "Revenge of the Monster Truck", -1);
MULTICHECK_STRING_INT_EQ(s, find, "Wo", 9, 13);
MULTICHECK_STRING_INT_EQ(s, find, "Wo", 1000, -1);
MULTICHECK_STRING_INT_EQ(s, find, "Wo", -1, -1);
MULTICHECK_STRING_EQ(s, find, "", -1);
MULTICHECK_STRING_EQ(s, find, "Pretty Woman Woman", 0);
MULTICHECK_STRING_EQ(s, find, "WOMAN", -1);
@@ -407,6 +409,8 @@ TEST_CASE("[String] Find") {
MULTICHECK_STRING_EQ(s, rfind, "man", 15);
MULTICHECK_STRING_EQ(s, rfind, "WOMAN", -1);
MULTICHECK_STRING_INT_EQ(s, rfind, "", 15, -1);
MULTICHECK_STRING_INT_EQ(s, rfind, "Wo", 1000, -1);
MULTICHECK_STRING_INT_EQ(s, rfind, "Wo", -1, 13);
}
TEST_CASE("[String] Find character") {
@@ -426,6 +430,8 @@ TEST_CASE("[String] Find case insensitive") {
String s = "Pretty Whale Whale";
MULTICHECK_STRING_EQ(s, findn, "WHA", 7);
MULTICHECK_STRING_INT_EQ(s, findn, "WHA", 9, 13);
MULTICHECK_STRING_INT_EQ(s, findn, "WHA", 1000, -1);
MULTICHECK_STRING_INT_EQ(s, findn, "WHA", -1, -1);
MULTICHECK_STRING_EQ(s, findn, "Revenge of the Monster SawFish", -1);
MULTICHECK_STRING_EQ(s, findn, "", -1);
MULTICHECK_STRING_EQ(s, findn, "wha", 7);
@@ -437,6 +443,8 @@ TEST_CASE("[String] Find case insensitive") {
MULTICHECK_STRING_EQ(s, rfindn, "wha", 13);
MULTICHECK_STRING_EQ(s, rfindn, "Wha", 13);
MULTICHECK_STRING_INT_EQ(s, rfindn, "", 13, -1);
MULTICHECK_STRING_INT_EQ(s, rfindn, "WHA", 1000, -1);
MULTICHECK_STRING_INT_EQ(s, rfindn, "WHA", -1, 13);
}
TEST_CASE("[String] Find MK") {
@@ -453,6 +461,9 @@ TEST_CASE("[String] Find MK") {
CHECK(s.findmk(keys, 5, &key) == 9);
CHECK(key == 2);
CHECK(s.findmk(keys, -1, &key) == -1);
CHECK(s.findmk(keys, 1000, &key) == -1);
}
TEST_CASE("[String] Find and replace") {