mirror of
https://github.com/thunderbrewhq/squall.git
synced 2026-02-04 00:49:08 +00:00
feat(string): add SStrChrBidir
This commit is contained in:
parent
0250f274ca
commit
5ec28d3aac
5 changed files with 93 additions and 1 deletions
|
|
@ -260,6 +260,19 @@ const char* STORMAPI SStrChr(const char* string, char search) {
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* STORMAPI SStrChrBidir(const char* string, char search, int32_t reverse) {
|
||||||
|
STORM_VALIDATE_BEGIN;
|
||||||
|
STORM_VALIDATE(string);
|
||||||
|
STORM_VALIDATE_END;
|
||||||
|
|
||||||
|
if (reverse) {
|
||||||
|
return SStrChrR(string, search);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return SStrChr(string, search);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
char* STORMAPI SStrChrR(char* string, char search) {
|
char* STORMAPI SStrChrR(char* string, char search) {
|
||||||
STORM_VALIDATE_BEGIN;
|
STORM_VALIDATE_BEGIN;
|
||||||
STORM_VALIDATE(string);
|
STORM_VALIDATE(string);
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@ char* STORMAPI SStrChr(char* string, char search);
|
||||||
|
|
||||||
const char* STORMAPI SStrChr(const char* string, char search);
|
const char* STORMAPI SStrChr(const char* string, char search);
|
||||||
|
|
||||||
|
const char* STORMAPI SStrChrBidir(const char* string, char search, int32_t reverse);
|
||||||
|
|
||||||
char* STORMAPI SStrChrR(char* string, char search);
|
char* STORMAPI SStrChrR(char* string, char search);
|
||||||
|
|
||||||
const char* STORMAPI SStrChrR(const char* string, char search);
|
const char* STORMAPI SStrChrR(const char* string, char search);
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,82 @@ TEST_CASE("SStrChrR const", "[string]") {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("SStrChrBidir", "[string]") {
|
||||||
|
SECTION("forwards") {
|
||||||
|
const char* string = "foobar";
|
||||||
|
|
||||||
|
SECTION("finds first character when it exists at start of string") {
|
||||||
|
const char* result = SStrChrBidir(string, 'f', 0);
|
||||||
|
REQUIRE(result == string);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("finds first character when it exists in middle of string") {
|
||||||
|
const char* result = SStrChrBidir(string, 'b', 0);
|
||||||
|
REQUIRE(result == string + 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("finds first character when it exists at end of string") {
|
||||||
|
const char* result = SStrChrBidir(string, 'r', 0);
|
||||||
|
REQUIRE(result == string + 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns nullptr when character does not exist in string") {
|
||||||
|
const char* result = SStrChrBidir(string, 'z', 0);
|
||||||
|
REQUIRE(result == nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns nullptr when string is empty") {
|
||||||
|
const char* result = SStrChrBidir("", 'z', 0);
|
||||||
|
REQUIRE(result == nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns nullptr when character is 0") {
|
||||||
|
const char* result = SStrChrBidir(string, '\0', 0);
|
||||||
|
REQUIRE(result == nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("reversed") {
|
||||||
|
const char* string = "ffoobbaarr";
|
||||||
|
|
||||||
|
SECTION("finds last character when it exists at start of string") {
|
||||||
|
const char* result = SStrChrBidir(string, 'f', 1);
|
||||||
|
REQUIRE(result == string + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("finds last character when it exists in middle of string") {
|
||||||
|
const char* result = SStrChrBidir(string, 'b', 1);
|
||||||
|
REQUIRE(result == string + 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("finds last character when it exists at end of string") {
|
||||||
|
const char* result = SStrChrBidir(string, 'r', 1);
|
||||||
|
REQUIRE(result == string + 9);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("finds last character when it exists at start and end of string") {
|
||||||
|
const char* string = "ffoobbaarrff";
|
||||||
|
const char* result = SStrChrBidir(string, 'f', 1);
|
||||||
|
REQUIRE(result == string + 11);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns nullptr when character does not exist in string") {
|
||||||
|
const char* result = SStrChrBidir(string, 'z', 1);
|
||||||
|
REQUIRE(result == nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns nullptr when string is empty") {
|
||||||
|
const char* result = SStrChrBidir("", 'z', 1);
|
||||||
|
REQUIRE(result == nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns nullptr when character is 0") {
|
||||||
|
const char* result = SStrChrBidir(string, '\0', 1);
|
||||||
|
REQUIRE(result == nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if !defined(WHOA_TEST_STORMDLL)
|
#if !defined(WHOA_TEST_STORMDLL)
|
||||||
TEST_CASE("SStrChrR", "[string]") {
|
TEST_CASE("SStrChrR", "[string]") {
|
||||||
char string[] = "ffoobbaarr";
|
char string[] = "ffoobbaarr";
|
||||||
|
|
|
||||||
|
|
@ -322,7 +322,7 @@ EXPORTS
|
||||||
SStrHash @502 NONAME
|
SStrHash @502 NONAME
|
||||||
SStrPack @503 NONAME
|
SStrPack @503 NONAME
|
||||||
SStrTokenize @504 NONAME
|
SStrTokenize @504 NONAME
|
||||||
;SStrChrBidir @505 NONAME
|
SStrChrBidir @505 NONAME
|
||||||
SStrLen @506 NONAME
|
SStrLen @506 NONAME
|
||||||
SStrDupA @507 NONAME
|
SStrDupA @507 NONAME
|
||||||
SStrCmp @508 NONAME
|
SStrCmp @508 NONAME
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,7 @@ void STORMAPI SRgnOffseti(HSRGN, int32_t, int32_t) {}
|
||||||
|
|
||||||
char* STORMAPI SStrChr(char*, char) { return 0; }
|
char* STORMAPI SStrChr(char*, char) { return 0; }
|
||||||
const char* STORMAPI SStrChr(const char*, char) { return 0; }
|
const char* STORMAPI SStrChr(const char*, char) { return 0; }
|
||||||
|
const char* STORMAPI SStrChrBidir(const char*, char, int32_t) { return 0; }
|
||||||
char* STORMAPI SStrChrR(char*, char) { return 0; }
|
char* STORMAPI SStrChrR(char*, char) { return 0; }
|
||||||
const char* STORMAPI SStrChrR(const char*, char) { return 0; }
|
const char* STORMAPI SStrChrR(const char*, char) { return 0; }
|
||||||
int32_t STORMAPI SStrCmp(const char*, const char*, size_t) { return 0; }
|
int32_t STORMAPI SStrCmp(const char*, const char*, size_t) { return 0; }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue