mirror of
https://github.com/fastfloat/fast_float.git
synced 2026-02-07 10:19:52 +08:00
Stack!!!
This commit is contained in:
parent
acce5b4158
commit
545c184596
@ -702,32 +702,33 @@ constexpr void check_basic_test_result(stringtype str,
|
|||||||
#undef FASTFLOAT_CHECK_EQ
|
#undef FASTFLOAT_CHECK_EQ
|
||||||
}
|
}
|
||||||
|
|
||||||
// We give plenty of memory: 2048 characters.
|
|
||||||
const size_t global_string_capacity = 2048;
|
|
||||||
std::u16string u16(global_string_capacity, '\0');
|
|
||||||
std::u32string u32(global_string_capacity, '\0');
|
|
||||||
|
|
||||||
template<Diag diag, class T>
|
template<Diag diag, class T>
|
||||||
constexpr void basic_test(std::string_view str, T expected, std::errc expected_ec = std::errc()) {
|
constexpr void basic_test(std::string_view str, T expected, std::errc expected_ec = std::errc()) {
|
||||||
T actual;
|
T actual;
|
||||||
auto result = fast_float::from_chars(str.data(), str.data() + str.size(), actual);
|
auto result = fast_float::from_chars(str.data(), str.data() + str.size(), actual);
|
||||||
check_basic_test_result<diag>(str, result, actual, expected, expected_ec);
|
check_basic_test_result<diag>(str, result, actual, expected, expected_ec);
|
||||||
|
constexpr size_t global_string_capacity = 2048;
|
||||||
|
|
||||||
if(str.size() > global_string_capacity) {
|
if(str.size() > global_string_capacity) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// We give plenty of memory: 2048 characters.
|
||||||
|
char16_t u16[global_string_capacity]{};
|
||||||
|
|
||||||
for (size_t i = 0; i < str.size(); i++) {
|
for (size_t i = 0; i < str.size(); i++) {
|
||||||
u16[i] = char16_t(str[i]);
|
u16[i] = char16_t(str[i]);
|
||||||
}
|
}
|
||||||
auto result16 = fast_float::from_chars(u16.data(), u16.data() + str.size(), actual);
|
auto result16 = fast_float::from_chars(u16, u16 + str.size(), actual);
|
||||||
check_basic_test_result<diag>(std::u16string_view(u16.data(), str.size()), result16, actual, expected, expected_ec);
|
check_basic_test_result<diag>(std::u16string_view(u16, str.size()), result16, actual, expected, expected_ec);
|
||||||
|
|
||||||
|
char32_t u32[global_string_capacity]{};
|
||||||
|
|
||||||
for (size_t i = 0; i < str.size(); i++) {
|
for (size_t i = 0; i < str.size(); i++) {
|
||||||
u32[i] = char32_t(str[i]);
|
u32[i] = char32_t(str[i]);
|
||||||
}
|
}
|
||||||
auto result32 = fast_float::from_chars(u32.data(), u32.data() + str.size(), actual);
|
auto result32 = fast_float::from_chars(u32, u32 + str.size(), actual);
|
||||||
check_basic_test_result<diag>(std::u32string_view(u32.data(), str.size()), result32, actual, expected, expected_ec);
|
check_basic_test_result<diag>(std::u32string_view(u32, str.size()), result32, actual, expected, expected_ec);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<Diag diag, class T>
|
template<Diag diag, class T>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user