/* * Copyright (c) 2009-2016 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #include #include #include "util.h" #ifdef INFINITY // This test triggers "warning C4756: overflow in constant arithmetic" // in Visual Studio. This warning is triggered here by design, so disable it. // (This can only be done on function level so we keep these tests separate) #ifdef _MSC_VER #pragma warning(push) #pragma warning (disable: 4756) #endif static void test_inifity() { json_t *real = json_real(INFINITY); if (real != NULL) fail("could construct a real from Inf"); real = json_real(1.0); if (json_real_set(real, INFINITY) != -1) fail("could set a real to Inf"); if (json_real_value(real) != 1.0) fail("real value changed unexpectedly"); json_decref(real); #ifdef _MSC_VER #pragma warning(pop) #endif } #endif // INFINITY static void run_tests() { json_t *integer, *real; json_int_t i; double d; integer = json_integer(5); real = json_real(100.1); if(!integer) fail("unable to create integer"); if(!real) fail("unable to create real"); i = json_integer_value(integer); if(i != 5) fail("wrong integer value"); d = json_real_value(real); if(d != 100.1) fail("wrong real value"); d = json_number_value(integer); if(d != 5.0) fail("wrong number value"); d = json_number_value(real); if(d != 100.1) fail("wrong number value"); json_decref(integer); json_decref(real); #ifdef NAN real = json_real(NAN); if(real != NULL) fail("could construct a real from NaN"); real = json_real(1.0); if(json_real_set(real, NAN) != -1) fail("could set a real to NaN"); if(json_real_value(real) != 1.0) fail("real value changed unexpectedly"); json_decref(real); #endif #ifdef INFINITY test_inifity(); #endif }