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