diff options
Diffstat (limited to '3rdparty/rapidjson/test/unittest/writertest.cpp')
-rw-r--r-- | 3rdparty/rapidjson/test/unittest/writertest.cpp | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/3rdparty/rapidjson/test/unittest/writertest.cpp b/3rdparty/rapidjson/test/unittest/writertest.cpp index 9c68c539a83..29f7626092c 100644 --- a/3rdparty/rapidjson/test/unittest/writertest.cpp +++ b/3rdparty/rapidjson/test/unittest/writertest.cpp @@ -439,33 +439,47 @@ TEST(Writer, InvalidEventSequence) { } } -extern double zero; // clang -Wmissing-variable-declarations -double zero = 0.0; // Use global variable to prevent compiler warning - TEST(Writer, NaN) { - double nan = zero / zero; + double nan = std::numeric_limits<double>::quiet_NaN(); + EXPECT_TRUE(internal::Double(nan).IsNan()); StringBuffer buffer; - Writer<StringBuffer> writer(buffer); - EXPECT_FALSE(writer.Double(nan)); - + { + Writer<StringBuffer> writer(buffer); + EXPECT_FALSE(writer.Double(nan)); + } + { + Writer<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer); + EXPECT_TRUE(writer.Double(nan)); + EXPECT_STREQ("NaN", buffer.GetString()); + } GenericStringBuffer<UTF16<> > buffer2; Writer<GenericStringBuffer<UTF16<> > > writer2(buffer2); EXPECT_FALSE(writer2.Double(nan)); } TEST(Writer, Inf) { - double inf = 1.0 / zero; + double inf = std::numeric_limits<double>::infinity(); + EXPECT_TRUE(internal::Double(inf).IsInf()); StringBuffer buffer; { Writer<StringBuffer> writer(buffer); - EXPECT_FALSE(writer.Double(inf)); + EXPECT_FALSE(writer.Double(inf)); } { Writer<StringBuffer> writer(buffer); EXPECT_FALSE(writer.Double(-inf)); } + { + Writer<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer); + EXPECT_TRUE(writer.Double(inf)); + } + { + Writer<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer); + EXPECT_TRUE(writer.Double(-inf)); + } + EXPECT_STREQ("Infinity-Infinity", buffer.GetString()); } TEST(Writer, RawValue) { |