@@ -258,6 +258,49 @@ TEST(PrettyWriter, InvalidEventSequence) {
258
258
}
259
259
}
260
260
261
+ TEST (PrettyWriter, NaN) {
262
+ double nan = std::numeric_limits<double >::quiet_NaN ();
263
+
264
+ EXPECT_TRUE (internal::Double (nan).IsNan ());
265
+ StringBuffer buffer;
266
+ {
267
+ PrettyWriter<StringBuffer> writer (buffer);
268
+ EXPECT_FALSE (writer.Double (nan));
269
+ }
270
+ {
271
+ PrettyWriter<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteNanAndInfFlag > writer (buffer);
272
+ EXPECT_TRUE (writer.Double (nan));
273
+ EXPECT_STREQ (" NaN" , buffer.GetString ());
274
+ }
275
+ GenericStringBuffer<UTF16<> > buffer2;
276
+ PrettyWriter<GenericStringBuffer<UTF16<> > > writer2 (buffer2);
277
+ EXPECT_FALSE (writer2.Double (nan));
278
+ }
279
+
280
+ TEST (PrettyWriter, Inf) {
281
+ double inf = std::numeric_limits<double >::infinity ();
282
+
283
+ EXPECT_TRUE (internal::Double (inf).IsInf ());
284
+ StringBuffer buffer;
285
+ {
286
+ PrettyWriter<StringBuffer> writer (buffer);
287
+ EXPECT_FALSE (writer.Double (inf));
288
+ }
289
+ {
290
+ PrettyWriter<StringBuffer> writer (buffer);
291
+ EXPECT_FALSE (writer.Double (-inf));
292
+ }
293
+ {
294
+ PrettyWriter<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteNanAndInfFlag > writer (buffer);
295
+ EXPECT_TRUE (writer.Double (inf));
296
+ }
297
+ {
298
+ PrettyWriter<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteNanAndInfFlag > writer (buffer);
299
+ EXPECT_TRUE (writer.Double (-inf));
300
+ }
301
+ EXPECT_STREQ (" Infinity-Infinity" , buffer.GetString ());
302
+ }
303
+
261
304
TEST (PrettyWriter, Issue_889) {
262
305
char buf[100 ] = " Hello" ;
263
306
0 commit comments