mirror of
https://github.com/thunderbrewhq/squall.git
synced 2025-12-12 02:22:30 +00:00
feat(string): implement SStrToUnsigned
This commit is contained in:
parent
22e9686d64
commit
eb26539b33
3 changed files with 66 additions and 0 deletions
|
|
@ -669,6 +669,20 @@ int32_t SStrToInt(const char* string) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t SStrToUnsigned(const char* string) {
|
||||||
|
STORM_ASSERT(string);
|
||||||
|
|
||||||
|
uint32_t result = 0;
|
||||||
|
|
||||||
|
uint32_t digit;
|
||||||
|
while ((digit = *string - '0') < 10) {
|
||||||
|
result = digit + (10 * result);
|
||||||
|
string++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
void SStrUpper(char* string) {
|
void SStrUpper(char* string) {
|
||||||
while (*string) {
|
while (*string) {
|
||||||
*string = static_cast<char>(toupper(*string));
|
*string = static_cast<char>(toupper(*string));
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,8 @@ float SStrToFloat(const char* string);
|
||||||
|
|
||||||
int32_t SStrToInt(const char* string);
|
int32_t SStrToInt(const char* string);
|
||||||
|
|
||||||
|
uint32_t SStrToUnsigned(const char* string);
|
||||||
|
|
||||||
void SStrUpper(char* string);
|
void SStrUpper(char* string);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -405,6 +405,56 @@ TEST_CASE("SStrToInt", "[string]") {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("SStrToUnsigned", "[string]") {
|
||||||
|
SECTION("converts empty string to unsigned") {
|
||||||
|
auto string = "";
|
||||||
|
auto result = SStrToUnsigned(string);
|
||||||
|
REQUIRE(result == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("converts whitespace string to unsigned") {
|
||||||
|
auto string = " ";
|
||||||
|
auto result = SStrToUnsigned(string);
|
||||||
|
REQUIRE(result == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("converts string with positive number to unsigned") {
|
||||||
|
auto string = "123";
|
||||||
|
auto result = SStrToUnsigned(string);
|
||||||
|
REQUIRE(result == 123);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("converts string with negative number to unsigned") {
|
||||||
|
auto string = "-123";
|
||||||
|
auto result = SStrToUnsigned(string);
|
||||||
|
REQUIRE(result == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("converts string with zero to unsigned") {
|
||||||
|
auto string = "0";
|
||||||
|
auto result = SStrToUnsigned(string);
|
||||||
|
REQUIRE(result == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("converts string with leading zero to unsigned") {
|
||||||
|
auto string = "01";
|
||||||
|
auto result = SStrToUnsigned(string);
|
||||||
|
REQUIRE(result == 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("converts string with two whitespace-separated numbers to unsigned") {
|
||||||
|
auto string = "123 456";
|
||||||
|
auto result = SStrToUnsigned(string);
|
||||||
|
REQUIRE(result == 123);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("converts string to max unsigned value") {
|
||||||
|
auto string = "4294967295";
|
||||||
|
auto result = SStrToUnsigned(string);
|
||||||
|
REQUIRE(result == 0xFFFFFFFF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("SStrUpper", "[string]") {
|
TEST_CASE("SStrUpper", "[string]") {
|
||||||
SECTION("rewrites lowercase string to uppercase correctly") {
|
SECTION("rewrites lowercase string to uppercase correctly") {
|
||||||
auto lower = "foobar";
|
auto lower = "foobar";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue