src.dualinventive.com/dinet/libdipp/tests/jsondiff.cpp

171 lines
6.2 KiB
C++

/*
* json.cpp
*
* Created on: Jun 11, 2015
* Author: mstroom
*/
#include <memory>
#include <di/Json.h>
#include <di/JsonDiff.h>
#include <gtest/gtest.h>
using namespace Di;
using namespace std;
TEST(JsonDiff, nullstreq) {
shared_ptr<Json> j1(make_shared<Json>("{\"test_string\":\"test\", \"test_json_null\" : null}", 0));
shared_ptr<Json> j2(make_shared<Json>("{\"test_string\":\"test\", \"test_json_null\" : null}", 0));
JsonDiff jd;
EXPECT_TRUE(jd.diff(j1, j2));
}
TEST(JsonDiff, floatepsilon) {
shared_ptr<Json> j1(make_shared<Json>("{\"testnum\":5.02, \"testbool\" : false}", 0));
shared_ptr<Json> j2(make_shared<Json>("{\"testnum\":5.02001, \"testbool\" : false}", 0));
JsonDiff jd;
EXPECT_TRUE(jd.diff(j1, j2));
}
TEST(JsonDiff, floatdiffer) {
shared_ptr<Json> j1(make_shared<Json>("{\"testnum\":5.02, \"testbool\" : false}", 0));
shared_ptr<Json> j2(make_shared<Json>("{\"testnum\":5.03001, \"testbool\" : false}", 0));
JsonDiff jd;
EXPECT_FALSE(jd.diff(j1, j2));
}
TEST(JsonDiff, booldiffer) {
shared_ptr<Json> j1(make_shared<Json>("{\"testbool\" : false}", 0));
shared_ptr<Json> j2(make_shared<Json>("{\"testbool\" : true}", 0));
JsonDiff jd;
EXPECT_FALSE(jd.diff(j1, j2));
}
TEST(JsonDiff, recursion) {
shared_ptr<Json> j1(make_shared<Json>("{\"test_string\":{\"key\":\"value\",\"key2\":\"value\"}}", 0));
shared_ptr<Json> j2(make_shared<Json>("{\"test_string\":{\"key\":\"value\",\"key2\":\"value\"}}", 0));
JsonDiff jd;
EXPECT_TRUE(jd.diff(j1, j2));
}
TEST(JsonDiff, recursion2) {
shared_ptr<Json> j1(make_shared<Json>("{\"test_string\":{\"key2\":\"value\",\"key\":\"value\"}}", 0));
shared_ptr<Json> j2(make_shared<Json>("{\"test_string\":{\"key\":\"value\",\"key2\":\"value\"}}", 0));
shared_ptr<Json> j3(make_shared<Json>("{\"test_string\":{\"key\":\"value\",\"key2\":\"value\"}}", 0));
shared_ptr<Json> j4(make_shared<Json>("{\"test_string\":{\"key\":\"value\",\"key2\":\"value\", \"key3\":\"a\"}}", 0));
shared_ptr<Json> j5(make_shared<Json>("{\"test_string\":{\"key\":\"value\",\"key2\":\"value\", \"key3\":\"a\"}}", 0));
shared_ptr<Json> j6(make_shared<Json>("{\"test_string\":{\"key\":\"value\",\"key2\":\"value\"}}", 0));
shared_ptr<Json> j7(make_shared<Json>("{\"test_string\":{\"aap\":{ \"key\":\"value\",\"key2\":\"value\", \"key3\":\"a\"}}}", 0));
shared_ptr<Json> j8(make_shared<Json>("{\"test_string\":{\"aap\":{\"key\":\"value\",\"key2\":\"value\"}}}", 0));
shared_ptr<Json> j9(make_shared<Json>("{\"test_string\":{\"aap\":{\"key\":\"value\",\"key2\":\"value\"}}}", 0));
shared_ptr<Json> j0(make_shared<Json>("{\"test_string\":{\"aap\":{ \"key\":\"value\",\"key2\":\"value\", \"key3\":\"a\"}}}", 0));
JsonDiff jd;
EXPECT_TRUE(jd.diff(j1, j2));
EXPECT_FALSE(jd.diff(j3, j4));
EXPECT_FALSE(jd.diff(j5, j6));
EXPECT_FALSE(jd.diff(j7, j8));
EXPECT_FALSE(jd.diff(j9, j0));
}
TEST(JsonDiff, array1) {
shared_ptr<Json> j1(make_shared<Json>("{\"test_string\":[\"key2\",\"value2\",\"key\",\"value\"]}", 0));
shared_ptr<Json> j2(make_shared<Json>("{\"test_string\":[\"key\",\"value\",\"key2\",\"value2\"]}", 0));
JsonDiff jd;
EXPECT_TRUE(jd.diff(j1, j2));
}
TEST(JsonDiff, arrayobject) {
shared_ptr<Json> j1(make_shared<Json>("{\"test_string\":[{\"testbool\" : true},\"value2\",\"key\",\"value\"]}", 0));
shared_ptr<Json> j2(make_shared<Json>("{\"test_string\":[\"key\",\"value\",{\"testbool\" : true},\"value2\"]}", 0));
JsonDiff jd;
EXPECT_TRUE(jd.diff(j1, j2));
}
TEST(JsonDiff, arrayarray) {
shared_ptr<Json> j1(make_shared<Json>("[\"test_string\",[[\"testbool\" , true],\"value2\",\"key\",\"value\"]]", 0));
shared_ptr<Json> j2(make_shared<Json>("[\"test_string\",[\"key\",\"value\",[\"testbool\" , true],\"value2\"]]", 0));
JsonDiff jd;
EXPECT_TRUE(jd.diff(j1, j2));
}
TEST(JsonDiff, arrayarrayfalse) {
shared_ptr<Json> j1(make_shared<Json>("[\"test_string\",[[\"testbool\" , true],\"value2\",\"key\",\"value\"]]", 0));
shared_ptr<Json> j2(make_shared<Json>("[\"test_string\",[\"key\",\"value\",[\"testbool\" , false],\"value2\"]]", 0));
JsonDiff jd;
EXPECT_FALSE(jd.diff(j1, j2));
}
TEST(JsonDiff, arrayarrayobjectfalse) {
shared_ptr<Json> j1(make_shared<Json>("[\"test_string\",[{\"testboo\" : true},\"value2\",\"key\",\"value\"]]", 0));
shared_ptr<Json> j2(make_shared<Json>("[\"test_string\",[\"key\",\"value\",{\"testbool\" : true},\"value2\"]]", 0));
JsonDiff jd;
EXPECT_FALSE(jd.diff(j1, j2));
}
TEST(JsonDiff, arrayarrayobjecttrue) {
shared_ptr<Json> j1(make_shared<Json>("[\"test_string\",[{\"testbool\" : true},\"value2\",\"key\",\"value\"]]", 0));
shared_ptr<Json> j2(make_shared<Json>("[\"test_string\",[\"key\",\"value\",{\"testbool\" : true},\"value2\"]]", 0));
JsonDiff jd;
EXPECT_TRUE(jd.diff(j1, j2));
}
TEST(JsonDiff, diffarrobj) {
shared_ptr<Json> j1(make_shared<Json>("[\"testnum\", \"testbool\"]", 0));
shared_ptr<Json> j2(make_shared<Json>("{\"testnum\":5.02001, \"testbool\" : false}", 0));
JsonDiff jd;
EXPECT_FALSE(jd.diff(j1, j2));
}
TEST(JsonDiff, diffstring) {
shared_ptr<Json> j1(make_shared<Json>("[\"testnum\"]", 0));
shared_ptr<Json> j2(make_shared<Json>("[\"testnum\"]", 0));
JsonDiff jd;
EXPECT_TRUE(jd.diff(j1->getArrayIndex(0), j2->getArrayIndex(0)));
}
TEST(JsonDiff, objvalmismatch) {
shared_ptr<Json> j1(make_shared<Json>("{\"test_string\":\"test\", \"test_json_null\" : true}", 0));
shared_ptr<Json> j2(make_shared<Json>("{\"test_string\":\"test\", \"test_json_null\" : 6}", 0));
JsonDiff jd;
EXPECT_FALSE(jd.diff(j1, j2));
}
TEST(JsonDiff, arraysizemismatch) {
shared_ptr<Json> j1(make_shared<Json>("[\"test_string\",\"value2\",\"value\"]", 0));
shared_ptr<Json> j2(make_shared<Json>("[\"test_string\",\"value2\"]", 0));
JsonDiff jd;
EXPECT_FALSE(jd.diff(j1, j2));
}
TEST(JsonDiff, arrayfloatepsilon) {
shared_ptr<Json> j1(make_shared<Json>("[\"testnum\", 5.02]", 0));
shared_ptr<Json> j2(make_shared<Json>("[\"testnum\", 5.02001]", 0));
JsonDiff jd;
EXPECT_TRUE(jd.diff(j1, j2));
}
TEST(JsonDiff, arraynull) {
shared_ptr<Json> j1(make_shared<Json>("[null, 5.02]", 0));
shared_ptr<Json> j2(make_shared<Json>("[null, null]", 0));
JsonDiff jd;
EXPECT_FALSE(jd.diff(j1, j2));
}
TEST(JsonDiff, arrayfound) {
shared_ptr<Json> j1(make_shared<Json>("[null, null]", 0));
shared_ptr<Json> j2(make_shared<Json>("[null, 5.02]", 0));
JsonDiff jd;
EXPECT_FALSE(jd.diff(j1, j2));
}