feat(string): add SStrStr

This commit is contained in:
fallenoak 2020-11-16 17:44:08 -06:00
parent ac1be572c4
commit 001edb9a7a
No known key found for this signature in database
GPG key ID: 7628F8E61AEA070D
3 changed files with 46 additions and 0 deletions

View file

@ -219,3 +219,24 @@ size_t SStrLen(const char* string) {
;
return c - string;
}
const char* SStrStr(const char* string, const char* search) {
STORM_ASSERT(string);
STORM_ASSERT(search);
const char* i;
for (i = search; *i; ++i);
size_t length = i - search;
const char* substring = string;
if (!*substring) {
return nullptr;
}
while (*substring && SStrCmp(substring, search, length)) {
substring++;
}
return substring;
}

View file

@ -19,4 +19,6 @@ uint32_t SStrHashHT(const char* string);
size_t SStrLen(const char* string);
const char* SStrStr(const char* string, const char* search);
#endif

View file

@ -75,3 +75,26 @@ TEST_CASE("SStrLen", "[string]") {
REQUIRE(length == 3);
}
}
TEST_CASE("SStrStr", "[string]") {
SECTION("finds substring when it exists at end of string") {
auto string = "foobar";
auto search = "bar";
auto substring = SStrStr(string, search);
REQUIRE(!SStrCmp(search, substring, SStrLen(search)));
}
SECTION("finds substring when it exists at start of string") {
auto string = "foobar";
auto search = "foo";
auto substring = SStrStr(string, search);
REQUIRE(!SStrCmp(search, substring, SStrLen(search)));
}
SECTION("returns nullptr when given empty string") {
auto string = "";
auto search = "bar";
auto substring = SStrStr(string, search);
REQUIRE(substring == nullptr);
}
}