Commit d702a68d authored by Victor Zverovich's avatar Victor Zverovich

Fix formatting of bool with FMT_COMPILE and add more tests

parent e956a14e
...@@ -3380,7 +3380,8 @@ inline std::string to_string(const T& value) { ...@@ -3380,7 +3380,8 @@ inline std::string to_string(const T& value) {
} }
template <typename T, FMT_ENABLE_IF(std::is_integral<T>::value)> template <typename T, FMT_ENABLE_IF(std::is_integral<T>::value)>
inline std::string to_string(T value) { inline std::string to_string(T value) {
char buffer[detail::digits10<T>() + 2]; // Buffer should be large enough to store the number or "false" (for bool).
char buffer[(std::max)(detail::digits10<T>() + 2, 5)];
char* begin = buffer; char* begin = buffer;
char* end = detail::write<char>(begin, value); char* end = detail::write<char>(begin, value);
return std::string(begin, end); return std::string(begin, end);
......
...@@ -144,8 +144,15 @@ TEST(CompileTest, EmptyFormatString) { ...@@ -144,8 +144,15 @@ TEST(CompileTest, EmptyFormatString) {
} }
#ifdef __cpp_if_constexpr #ifdef __cpp_if_constexpr
TEST(CompileTest, Basic) { TEST(CompileTest, FormatDefault) {
EXPECT_EQ("42", fmt::format(FMT_COMPILE("{}"), 42)); EXPECT_EQ("42", fmt::format(FMT_COMPILE("{}"), 42));
EXPECT_EQ("42", fmt::format(FMT_COMPILE("{}"), 42u));
EXPECT_EQ("42", fmt::format(FMT_COMPILE("{}"), 42ll));
EXPECT_EQ("42", fmt::format(FMT_COMPILE("{}"), 42ull));
EXPECT_EQ("true", fmt::format(FMT_COMPILE("{}"), true));
EXPECT_EQ("x", fmt::format(FMT_COMPILE("{}"), 'x'));
EXPECT_EQ("4.2", fmt::format(FMT_COMPILE("{}"), 4.2));
EXPECT_EQ("foo", fmt::format(FMT_COMPILE("{}"), "foo")); EXPECT_EQ("foo", fmt::format(FMT_COMPILE("{}"), "foo"));
EXPECT_EQ("foo", fmt::format(FMT_COMPILE("{}"), std::string("foo")));
} }
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment