From 1ed23b9127436be46cf29c499b7367965e3237bd Mon Sep 17 00:00:00 2001 From: Victor Zverovich Date: Fri, 6 Jun 2014 18:54:45 -0700 Subject: [PATCH] Warng about compilers mishandling negative NaN. --- test/format-test.cc | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/test/format-test.cc b/test/format-test.cc index d4b54a00..cf0dbb2b 100644 --- a/test/format-test.cc +++ b/test/format-test.cc @@ -1229,18 +1229,17 @@ TEST(FormatterTest, FormatDouble) { EXPECT_EQ("+0000392.6", str(Format("{0:+010.4g}") << 392.65)); } -TEST(FormatterTest, SignBit) { -#ifndef signbit -# define signbit std::signbit -#endif - EXPECT_EQ(1, signbit(-std::numeric_limits::quiet_NaN())); -} - TEST(FormatterTest, FormatNaN) { double nan = std::numeric_limits::quiet_NaN(); EXPECT_EQ("nan", str(Format("{}") << nan)); EXPECT_EQ("+nan", str(Format("{:+}") << nan)); - EXPECT_EQ("-nan", str(Format("{}") << -nan)); +#ifndef signbit +# define signbit std::signbit +#endif + if (signbit(-nan)) + EXPECT_EQ("-nan", str(Format("{}") << -nan)); + else + fmt::Print("Warning: compiler doesn't handle negative NaN correctly"); EXPECT_EQ(" nan", str(Format("{: }") << nan)); EXPECT_EQ("NAN", str(Format("{:F}") << nan)); EXPECT_EQ("nan ", str(Format("{:<7}") << nan));