Merge pull request #510 from miloyip/issue509_writingnaninf

Fix #509 by checking Nan/Inf when writing a double
This commit is contained in:
Milo Yip
2016-01-20 22:30:15 +08:00
parent f9d0f65ba0
commit 935e2ef7ed
3 changed files with 33 additions and 1 deletions

View File

@@ -375,3 +375,28 @@ TEST(Writer, InvalidEventSequence) {
EXPECT_FALSE(writer.IsComplete());
}
}
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;
EXPECT_TRUE(internal::Double(nan).IsNan());
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
EXPECT_FALSE(writer.Double(nan));
}
TEST(Writer, Inf) {
double inf = 1.0 / zero;
EXPECT_TRUE(internal::Double(inf).IsInf());
StringBuffer buffer;
{
Writer<StringBuffer> writer(buffer);
EXPECT_FALSE(writer.Double(inf));
}
{
Writer<StringBuffer> writer(buffer);
EXPECT_FALSE(writer.Double(-inf));
}
}