mirror of
https://github.com/thunderbrewhq/squall.git
synced 2025-12-12 02:22:30 +00:00
feat(string): add SStrChrR
This commit is contained in:
parent
c924e9a7d9
commit
e51d4cdaa1
3 changed files with 60 additions and 0 deletions
|
|
@ -150,6 +150,20 @@ const char* SStrChr(const char* string, char search) {
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* SStrChrR(const char* string, char search) {
|
||||||
|
STORM_ASSERT(string);
|
||||||
|
|
||||||
|
const char* result;
|
||||||
|
|
||||||
|
for (result = nullptr; *string; string++) {
|
||||||
|
if (*string == search) {
|
||||||
|
result = string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t SStrCmp(const char* string1, const char* string2, size_t maxchars) {
|
int32_t SStrCmp(const char* string1, const char* string2, size_t maxchars) {
|
||||||
return strncmp(string1, string2, maxchars);
|
return strncmp(string1, string2, maxchars);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@
|
||||||
|
|
||||||
const char* SStrChr(const char* string, char search);
|
const char* SStrChr(const char* string, char search);
|
||||||
|
|
||||||
|
const char* SStrChrR(const char* string, char search);
|
||||||
|
|
||||||
int32_t SStrCmp(const char* string1, const char* string2, size_t maxchars);
|
int32_t SStrCmp(const char* string1, const char* string2, size_t maxchars);
|
||||||
|
|
||||||
int32_t SStrCmpI(const char* string1, const char* string2, size_t maxchars);
|
int32_t SStrCmpI(const char* string1, const char* string2, size_t maxchars);
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,50 @@ TEST_CASE("SStrChr", "[string]") {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("SStrChrR", "[string]") {
|
||||||
|
SECTION("finds last character when it exists at start of string") {
|
||||||
|
auto string = "ffoobbaarr";
|
||||||
|
auto search = 'f';
|
||||||
|
auto result = SStrChrR(string, search);
|
||||||
|
REQUIRE(result == string + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("finds last character when it exists in middle of string") {
|
||||||
|
auto string = "ffoobbaarr";
|
||||||
|
auto search = 'b';
|
||||||
|
auto result = SStrChrR(string, search);
|
||||||
|
REQUIRE(result == string + 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("finds last character when it exists at end of string") {
|
||||||
|
auto string = "ffoobbaarr";
|
||||||
|
auto search = 'r';
|
||||||
|
auto result = SStrChrR(string, search);
|
||||||
|
REQUIRE(result == string + 9);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("finds last character when it exists at start and end of string") {
|
||||||
|
auto string = "ffoobbaarrff";
|
||||||
|
auto search = 'f';
|
||||||
|
auto result = SStrChrR(string, search);
|
||||||
|
REQUIRE(result == string + 11);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns nullptr when character does not exist in string") {
|
||||||
|
auto string = "ffoobbaarr";
|
||||||
|
auto search = 'z';
|
||||||
|
auto result = SStrChrR(string, search);
|
||||||
|
REQUIRE(result == nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns nullptr when string is empty") {
|
||||||
|
auto string = "";
|
||||||
|
auto search = 'z';
|
||||||
|
auto result = SStrChrR(string, search);
|
||||||
|
REQUIRE(result == nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("SStrCmp", "[string]") {
|
TEST_CASE("SStrCmp", "[string]") {
|
||||||
SECTION("compares two strings that exactly match correctly") {
|
SECTION("compares two strings that exactly match correctly") {
|
||||||
auto compare = SStrCmp("foo", "foo", STORM_MAX_STR);
|
auto compare = SStrCmp("foo", "foo", STORM_MAX_STR);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue