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