1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 08:17:34 +00:00

Everywhere: Use to_number<T> instead of to_{int,uint,float,double}

In a bunch of cases, this actually ends up simplifying the code as
to_number will handle something such as:

```
Optional<I> opt;
if constexpr (IsSigned<I>)
    opt = view.to_int<I>();
else
    opt = view.to_uint<I>();
```

For us.

The main goal here however is to have a single generic number conversion
API between all of the String classes.
This commit is contained in:
Shannon Booth 2023-12-23 15:59:14 +13:00 committed by Andreas Kling
parent a4ecc65398
commit e2e7c4d574
155 changed files with 397 additions and 412 deletions

View file

@ -125,8 +125,8 @@ TEST_CASE(repeated)
TEST_CASE(to_int)
{
EXPECT_EQ(ByteString("123").to_int().value(), 123);
EXPECT_EQ(ByteString("-123").to_int().value(), -123);
EXPECT_EQ(ByteString("123").to_number<int>().value(), 123);
EXPECT_EQ(ByteString("-123").to_number<int>().value(), -123);
}
TEST_CASE(to_lowercase)

View file

@ -578,14 +578,14 @@ TEST_CASE(invalid_hex_floats)
EXPECT_HEX_PARSE_TO_VALUE_AND_CONSUME_CHARS("0xCAPE", 0xCAp0, 4);
}
#define BENCHMARK_DOUBLE_PARSING(value, iterations) \
do { \
auto data = #value##sv; \
auto true_result = value; \
for (int i = 0; i < iterations * 10'000; ++i) { \
AK::taint_for_optimizer(data); \
EXPECT_EQ(data.to_double(), true_result); \
} \
#define BENCHMARK_DOUBLE_PARSING(value, iterations) \
do { \
auto data = #value##sv; \
auto true_result = value; \
for (int i = 0; i < iterations * 10'000; ++i) { \
AK::taint_for_optimizer(data); \
EXPECT_EQ(data.to_number<double>(), true_result); \
} \
} while (false)
BENCHMARK_CASE(one)

View file

@ -157,7 +157,7 @@ TEST_CASE(many_strings)
}
EXPECT_EQ(strings.size(), 999u);
for (auto& it : strings) {
EXPECT_EQ(it.key.to_int().value(), it.value);
EXPECT_EQ(it.key.to_number<int>().value(), it.value);
}
for (int i = 0; i < 999; ++i) {
EXPECT_EQ(strings.remove(ByteString::number(i)), true);

View file

@ -52,7 +52,7 @@ TEST_CASE(order)
}
for (int i = 0; i < 10000; ++i) {
EXPECT_EQ(strings.dequeue().to_int().value(), i);
EXPECT_EQ(strings.dequeue().to_number<int>().value(), i);
}
EXPECT(strings.is_empty());