| // Copyright (c) Microsoft Corporation. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| |
| #ifndef TEST_HPP |
| #define TEST_HPP |
| |
| #include <charconv> |
| #include <limits> |
| #include <stddef.h> |
| #include <system_error> |
| using namespace std; |
| |
| inline constexpr float float_inf = numeric_limits<float>::infinity(); |
| inline constexpr float float_nan = numeric_limits<float>::quiet_NaN(); |
| inline constexpr float float_nan_payload = __builtin_nanf("1729"); |
| |
| inline constexpr double double_inf = numeric_limits<double>::infinity(); |
| inline constexpr double double_nan = numeric_limits<double>::quiet_NaN(); |
| inline constexpr double double_nan_payload = __builtin_nan("1729"); |
| |
| struct FloatFromCharsTestCase { |
| const char* input; |
| chars_format fmt; |
| std::size_t correct_idx; |
| errc correct_ec; |
| float correct_value; |
| }; |
| |
| struct FloatToCharsTestCase { |
| float value; |
| chars_format fmt; |
| const char* correct; |
| }; |
| |
| struct FloatPrecisionToCharsTestCase { |
| float value; |
| chars_format fmt; |
| int precision; |
| const char* correct; |
| }; |
| |
| struct DoubleFromCharsTestCase { |
| const char* input; |
| chars_format fmt; |
| std::size_t correct_idx; |
| errc correct_ec; |
| double correct_value; |
| }; |
| |
| struct DoubleToCharsTestCase { |
| double value; |
| chars_format fmt; |
| const char* correct; |
| }; |
| |
| struct DoublePrecisionToCharsTestCase { |
| double value; |
| chars_format fmt; |
| int precision; |
| const char* correct; |
| }; |
| |
| #endif // TEST_HPP |