171 lines
6.2 KiB
C++
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));
|
|
}
|