From 8c706fb58db50e160f814e4080e8cdb306c67324 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Wed, 13 Dec 2023 10:47:22 +0100 Subject: [PATCH] Add test set --- include/boost/decimal.hpp | 1 + test/Jamfile | 1 + test/test_format.cpp | 59 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 test/test_format.cpp diff --git a/include/boost/decimal.hpp b/include/boost/decimal.hpp index 4c4d844b6..3161d539c 100644 --- a/include/boost/decimal.hpp +++ b/include/boost/decimal.hpp @@ -15,5 +15,6 @@ #include #include #include +#include #endif // BOOST_DECIMAL_HPP diff --git a/test/Jamfile b/test/Jamfile index 92b9b6164..9004edc4d 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -52,6 +52,7 @@ run test_exp.cpp ; run test_expm1.cpp ; run test_fenv.cpp ; run test_float_conversion.cpp ; +run test_format.cpp ; run test_frexp_ldexp.cpp ; run test_git_issue_266.cpp ; run test_git_issue_271.cpp ; diff --git a/test/test_format.cpp b/test/test_format.cpp new file mode 100644 index 000000000..ef496a66b --- /dev/null +++ b/test/test_format.cpp @@ -0,0 +1,59 @@ +// Copyright 2023 Matt Borland +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include + +using namespace boost::decimal; + +#if __cplusplus >= 202002L || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) && __has_include() && !defined(BOOST_DECIMAL_DISABLE_CLIB) + +#include + +template +void test() +{ +/* + BOOST_TEST_EQ(std::format("{}", T{1}), "1"); + BOOST_TEST_EQ(std::format("{}", T{10}), "1e+01"); + BOOST_TEST_EQ(std::format("{}", T{100}), "1e+02"); + BOOST_TEST_EQ(std::format("{}", T{1000}), "1e+03"); + BOOST_TEST_EQ(std::format("{}", T{10000}), "1e+04"); + BOOST_TEST_EQ(std::format("{}", T{210000}), "2.1e+05"); + BOOST_TEST_EQ(std::format("{}", T{2100000}), "2.1e+06"); + BOOST_TEST_EQ(std::format("{}", T{21, 6, true}), "-2.1e+07"); + BOOST_TEST_EQ(std::format("{}", T{211, 6, true}), "-2.11e+08"); + BOOST_TEST_EQ(std::format("{}", T{2111, 6, true}), "-2.111e+09"); + + BOOST_TEST_EQ(std::format("{}", std::numeric_limits::infinity()), "inf"); + BOOST_TEST_EQ(std::format("{}", -std::numeric_limits::infinity()), "-inf"); + BOOST_TEST_EQ(std::format("{}", std::numeric_limits::quiet_NaN()), "nan"); + BOOST_TEST_EQ(std::format("{}", -std::numeric_limits::quiet_NaN()), "-nan(ind)"); + BOOST_TEST_EQ(std::format("{}", std::numeric_limits::signaling_NaN()), "nan(snan)"); + BOOST_TEST_EQ(std::format("{}", -std::numeric_limits::signaling_NaN()), "-nan(snan)"); + */ + + constexpr const char* fmt_string = "{}"; + + BOOST_TEST_EQ(std::format(fmt_string, 1.0), "1"); + BOOST_TEST_EQ(std::format(fmt_string, T{1}), "1"); +} + +int main() +{ + test(); + //test(); + //test(); + + return boost::report_errors(); +} + +#else + +int main() +{ + return 0; +} + +#endif