From: Eric Haszlakiewicz Date: Sat, 23 Nov 2019 03:56:33 +0000 (-0500) Subject: Extend test_double_serializer to check NaN and Infinity handling. X-Git-Tag: json-c-0.14-20200419~81 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b1ad7488421e2305790a38aee4a695bc4d0394e0;p=json-c Extend test_double_serializer to check NaN and Infinity handling. --- diff --git a/tests/test_double_serializer.c b/tests/test_double_serializer.c index 5752bc3..2cec24f 100644 --- a/tests/test_double_serializer.c +++ b/tests/test_double_serializer.c @@ -8,6 +8,9 @@ #include "json_object.h" #include "json_object_private.h" +/* Avoid compiler warnings about diving by constant zero */ +double zero_dot_zero = 0.0; + int main() { struct json_object *obj = json_object_new_double(0.5); @@ -80,4 +83,15 @@ int main() printf("obj(-12.0).to_string(default format)=%s\n", json_object_to_json_string(obj)); json_object_put(obj); + /* Test NaN handling */ + obj = json_object_new_double(zero_dot_zero / zero_dot_zero); + printf("obj(0.0/0.0)=%s\n", json_object_to_json_string(obj)); + + /* Test Infinity and -Infinity handling */ + obj = json_object_new_double(1.0/zero_dot_zero); + printf("obj(1.0/0.0)=%s\n", json_object_to_json_string(obj)); + + obj = json_object_new_double(-1.0/zero_dot_zero); + printf("obj(-1.0/0.0)=%s\n", json_object_to_json_string(obj)); + } diff --git a/tests/test_double_serializer.expected b/tests/test_double_serializer.expected index d3aef72..221d832 100644 --- a/tests/test_double_serializer.expected +++ b/tests/test_double_serializer.expected @@ -17,3 +17,6 @@ obj(12.0).to_string(%.0f)=12 obj(12.0).to_string(%.0g)=1e+01 obj(12.0).to_string(%.1g)=12.0 obj(-12.0).to_string(default format)=-12.0 +obj(0.0/0.0)=NaN +obj(1.0/0.0)=Infinity +obj(-1.0/0.0)=-Infinity