diff --git a/JSON/testsuite/src/JSONTest.cpp b/JSON/testsuite/src/JSONTest.cpp index c2e172345..cf6f06853 100644 --- a/JSON/testsuite/src/JSONTest.cpp +++ b/JSON/testsuite/src/JSONTest.cpp @@ -165,37 +165,10 @@ void JSONTest::testFalseProperty() void JSONTest::testNumberProperty() { - std::string json = "{ \"test\" : 1969 }"; - Parser parser; - Var result; - - try - { - result = parser.parse(json); - } - catch(JSONException& jsone) - { - std::cout << jsone.message() << std::endl; - assert(false); - } - - assert(result.type() == typeid(Object::Ptr)); - - Object::Ptr object = result.extract(); - Var test = object->get("test"); - assert(test.isInteger()); - int value = test; - assert(value == 1969); - - DynamicStruct ds = *object; - assert (!ds["test"].isEmpty()); - assert (ds["test"].isNumeric()); - assert (ds["test"] == 1969); - - const DynamicStruct& rds = *object; - assert (!rds["test"].isEmpty()); - assert (rds["test"].isNumeric()); - assert (rds["test"] == 1969); + testNumber(1969); + testNumber(-1969); + testNumber(1969.5); + testNumber(-1969.5); } diff --git a/JSON/testsuite/src/JSONTest.h b/JSON/testsuite/src/JSONTest.h index a3640a537..f812753e0 100644 --- a/JSON/testsuite/src/JSONTest.h +++ b/JSON/testsuite/src/JSONTest.h @@ -76,6 +76,44 @@ public: private: std::string getTestFilesPath(const std::string& type); + + template + void testNumber(T number) + { + std::ostringstream os; + os << "{ \"test\" : " << number << " }"; + std::string json = os.str(); + Parser parser; + Var result; + + try + { + result = parser.parse(json); + } + catch (JSONException& jsone) + { + std::cout << jsone.message() << std::endl; + assert(false); + } + + assert(result.type() == typeid(Object::Ptr)); + + Object::Ptr object = result.extract(); + Var test = object->get("test"); + assert(test.isNumeric()); + T value = test; + assert(value == number); + + DynamicStruct ds = *object; + assert(!ds["test"].isEmpty()); + assert(ds["test"].isNumeric()); + assert(ds["test"] == number); + + const DynamicStruct& rds = *object; + assert(!rds["test"].isEmpty()); + assert(rds["test"].isNumeric()); + assert(rds["test"] == number); + } };