Skip to content

Commit 2900811

Browse files
author
chenfeng
committed
新增不同json框架的调试内容
1 parent ce5ecbf commit 2900811

13 files changed

+799
-8
lines changed

json-diff-test/pom.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,25 @@
5555
<artifactId>slf4j-log4j12</artifactId>
5656
<version>2.0.0-beta1</version>
5757
</dependency>
58+
<dependency>
59+
<groupId>com.alibaba</groupId>
60+
<artifactId>fastjson</artifactId>
61+
<version>1.2.74</version>
62+
</dependency>
63+
<dependency>
64+
<groupId>com.alibaba.fastjson2</groupId>
65+
<artifactId>fastjson2</artifactId>
66+
<version>2.0.7</version>
67+
</dependency>
68+
<dependency>
69+
<groupId>com.google.code.gson</groupId>
70+
<artifactId>gson</artifactId>
71+
<version>2.9.1</version>
72+
</dependency>
73+
<dependency>
74+
<groupId>com.fasterxml.jackson.core</groupId>
75+
<artifactId>jackson-databind</artifactId>
76+
<version>2.13.0</version>
77+
</dependency>
5878
</dependencies>
5979
</project>
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package me.codeleep.jsondiff.test;
2+
3+
import com.alibaba.fastjson2.JSON;
4+
import me.codeleep.jsondiff.DefaultJsonDifference;
5+
import me.codeleep.jsondiff.common.model.JsonCompareResult;
6+
import me.codeleep.jsondiff.common.model.TravelPath;
7+
import me.codeleep.jsondiff.common.model.neat.JsonDiff;
8+
import me.codeleep.jsondiff.common.model.neat.JsonDiffArray;
9+
import me.codeleep.jsondiff.common.model.neat.JsonDiffObject;
10+
import me.codeleep.jsondiff.common.model.neat.JsonNeat;
11+
import me.codeleep.jsondiff.common.utils.ImplType;
12+
import me.codeleep.jsondiff.core.config.JsonComparedOption;
13+
import me.codeleep.jsondiff.core.config.JsonDiffOption;
14+
import me.codeleep.jsondiff.core.handle.AbstractHandleFactory;
15+
import me.codeleep.jsondiff.core.handle.array.ComplexArrayJsonNeat;
16+
import me.codeleep.jsondiff.core.handle.object.ComplexObjectJsonNeat;
17+
import me.codeleep.jsondiff.core.handle.other.ComplexOtherJsonNeat;
18+
import me.codeleep.jsondiff.core.handle.primitive.ComplexPrimitiveJsonNeat;
19+
import me.codeleep.jsondiff.core.utils.ClassUtil;
20+
import me.codeleep.jsondiff.test.dataFactory.HandleFactoryDataFactory;
21+
import me.codeleep.jsondiff.test.model.MetaData;
22+
import me.codeleep.jsondiff.test.utils.FormatContent;
23+
import org.testng.Assert;
24+
import org.testng.annotations.Test;
25+
26+
/**
27+
* @author: chenfeng
28+
* @createTime: 2024/4/21
29+
* @description:
30+
*/
31+
public class FastJsonHandleFactoryTest {
32+
private static final DefaultJsonDifference defaultJsonDifference = new DefaultJsonDifference();
33+
@Test(dataProvider = "right", dataProviderClass = HandleFactoryDataFactory.class)
34+
public void RightTest(MetaData metaData) {
35+
JsonDiffOption.setDefaultJsonFramework(ImplType.FASTJSON);
36+
JsonComparedOption jsonComparedOption = new JsonComparedOption();
37+
jsonComparedOption.setJsonNeatFactory(new AbstractHandleFactory() {
38+
class ComplexObjectJsonNeatTest extends ComplexObjectJsonNeat {
39+
private ComplexObjectJsonNeatTest(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
40+
super(travelPath, DisposeExpect(expect), actual);
41+
}
42+
@Override
43+
protected JsonCompareResult diff1() {
44+
return super.diff1();
45+
}
46+
}
47+
class ComplexArrayJsonNeatTest extends ComplexArrayJsonNeat {
48+
private ComplexArrayJsonNeatTest(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
49+
super(travelPath, DisposeExpect(expect), actual);
50+
}
51+
@Override
52+
protected JsonCompareResult diff1() {
53+
return super.diff1();
54+
}
55+
}
56+
private JsonDiff DisposeExpect(JsonDiff expect) {
57+
return expect;
58+
}
59+
60+
@Override
61+
public JsonNeat<? extends JsonDiff> generate(JsonDiff expect, JsonDiff actual, TravelPath travelPath) {
62+
if (!ClassUtil.isSameClass(expect, actual)) {
63+
return null;
64+
}
65+
if (expect instanceof JsonDiffObject && actual instanceof JsonDiffObject) {
66+
return new ComplexObjectJsonNeatTest(travelPath, expect, actual);
67+
}
68+
if (expect instanceof JsonDiffArray && actual instanceof JsonDiffArray) {
69+
return new ComplexArrayJsonNeatTest(travelPath, expect, actual);
70+
}
71+
if (expect.isLeaf() && actual.isLeaf()) {
72+
return new ComplexPrimitiveJsonNeat(travelPath, expect, actual);
73+
}
74+
return new ComplexOtherJsonNeat(travelPath, expect, actual);
75+
}
76+
});
77+
JsonCompareResult jsonCompareResult = defaultJsonDifference.option(jsonComparedOption)
78+
.detectDiff(JSON.toJSONString(metaData.getExpect()), JSON.toJSONString(metaData.getActual()));
79+
if (metaData.getRet() != null) {
80+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent(metaData.getRet().toString()));
81+
} else {
82+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent("{\"match\":true}"));
83+
}
84+
}
85+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package me.codeleep.jsondiff.test;
2+
3+
import com.alibaba.fastjson2.JSON;
4+
import me.codeleep.jsondiff.DefaultJsonDifference;
5+
import me.codeleep.jsondiff.common.model.JsonCompareResult;
6+
import me.codeleep.jsondiff.common.utils.ImplType;
7+
import me.codeleep.jsondiff.core.config.JsonDiffOption;
8+
import me.codeleep.jsondiff.test.dataFactory.ArrayDataFactory;
9+
import me.codeleep.jsondiff.test.model.MetaData;
10+
import me.codeleep.jsondiff.test.utils.FormatContent;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
import org.testng.Assert;
14+
import org.testng.annotations.Test;
15+
16+
/**
17+
* @author: chenfeng
18+
* @createTime: 2024/4/21
19+
* @description:
20+
*/
21+
public class FastJsonMultAllArrayTest {
22+
private static final Logger logger = LoggerFactory.getLogger(FastJson2MultAllArrayTest.class);
23+
private final DefaultJsonDifference defaultJsonDifference = new DefaultJsonDifference();
24+
@Test(dataProvider = "right", dataProviderClass = ArrayDataFactory.class)
25+
public void noOptionRightTest(MetaData metaData) {
26+
logger.info(metaData.getCaseName());
27+
logger.debug("\n" + metaData.getExpect().toString() + "\n" + metaData.getActual().toString());
28+
JsonDiffOption.setDefaultJsonFramework(ImplType.FASTJSON);
29+
JsonCompareResult jsonCompareResult = defaultJsonDifference
30+
.detectDiff(JSON.toJSONString(metaData.getExpect()), JSON.toJSONString(metaData.getActual()));
31+
if (metaData.getRet() != null) {
32+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent(metaData.getRet().toString()));
33+
} else {
34+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent("{\"match\":true}"));
35+
}
36+
}
37+
38+
@Test(dataProvider = "err", dataProviderClass = ArrayDataFactory.class)
39+
public void noOptionErrTest(MetaData metaData) {
40+
logger.info(metaData.getCaseName());
41+
logger.debug("\n" + metaData.getExpect().toString() + "\n" + metaData.getActual().toString() + "\n" + metaData.getOption());
42+
JsonDiffOption.setDefaultJsonFramework(ImplType.FASTJSON);
43+
JsonCompareResult jsonCompareResult = defaultJsonDifference
44+
.detectDiff(JSON.toJSONString(metaData.getExpect()), JSON.toJSONString(metaData.getActual()));
45+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent(metaData.getRet().toString()));
46+
}
47+
48+
@Test(dataProvider = "optionRight", dataProviderClass = ArrayDataFactory.class)
49+
public void optionRight(MetaData metaData) {
50+
logger.info(metaData.getCaseName());
51+
logger.debug("\n" + metaData.getExpect().toString() + "\n" + metaData.getActual().toString() + "\n");
52+
JsonDiffOption.setDefaultJsonFramework(ImplType.FASTJSON);
53+
JsonCompareResult jsonCompareResult = defaultJsonDifference
54+
.option(metaData.getOption())
55+
.detectDiff(JSON.toJSONString(metaData.getExpect()), JSON.toJSONString(metaData.getActual()));
56+
if (metaData.getRet() != null) {
57+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent(metaData.getRet().toString()));
58+
} else {
59+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent("{\"match\":true}"));
60+
}
61+
}
62+
63+
@Test(dataProvider = "optionErr", dataProviderClass = ArrayDataFactory.class)
64+
public void optionErr(MetaData metaData) {
65+
logger.info(metaData.getCaseName());
66+
logger.debug("\n" + metaData.getExpect().toString() + "\n" + metaData.getActual().toString() + "\n");
67+
JsonDiffOption.setDefaultJsonFramework(ImplType.FASTJSON);
68+
JsonCompareResult jsonCompareResult = defaultJsonDifference
69+
.option(metaData.getOption())
70+
.detectDiff(JSON.toJSONString(metaData.getExpect()), JSON.toJSONString(metaData.getActual()));
71+
if (metaData.getRet() != null) {
72+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent(metaData.getRet().toString()));
73+
} else {
74+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent("{\"match\":true}"));
75+
}
76+
}
77+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package me.codeleep.jsondiff.test;
2+
3+
import com.alibaba.fastjson2.JSON;
4+
import me.codeleep.jsondiff.DefaultJsonDifference;
5+
import me.codeleep.jsondiff.common.model.JsonCompareResult;
6+
import me.codeleep.jsondiff.common.utils.ImplType;
7+
import me.codeleep.jsondiff.core.config.JsonDiffOption;
8+
import me.codeleep.jsondiff.test.dataFactory.ObjectDataFactory;
9+
import me.codeleep.jsondiff.test.model.MetaData;
10+
import me.codeleep.jsondiff.test.utils.FormatContent;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
import org.testng.Assert;
14+
import org.testng.annotations.Test;
15+
16+
/**
17+
* @author: chenfeng
18+
* @createTime: 2024/4/21
19+
* @description:
20+
*/
21+
public class FastJsonMultAllObjectTest {
22+
private static final Logger logger = LoggerFactory.getLogger(FastJson2MultAllObjectTest.class);
23+
private static final DefaultJsonDifference defaultJsonDifference = new DefaultJsonDifference();
24+
@Test(dataProvider = "right", dataProviderClass = ObjectDataFactory.class)
25+
public void noOptionRightTest(MetaData metaData) {
26+
JsonDiffOption.setDefaultJsonFramework(ImplType.FASTJSON);
27+
logger.info(metaData.getCaseName());
28+
logger.debug(metaData.getExpect().toString() + "\n" + metaData.getActual().toString());
29+
JsonCompareResult jsonCompareResult = defaultJsonDifference
30+
.detectDiff(JSON.toJSONString(metaData.getExpect()), JSON.toJSONString(metaData.getActual()));
31+
if (metaData.getRet() != null) {
32+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent(metaData.getRet().toString()));
33+
} else {
34+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent("{\"match\":true}"));
35+
}
36+
}
37+
38+
@Test(dataProvider = "err", dataProviderClass = ObjectDataFactory.class)
39+
public void noOptionErrTest(MetaData metaData) {
40+
JsonDiffOption.setDefaultJsonFramework(ImplType.FASTJSON);
41+
logger.info(metaData.getCaseName());
42+
logger.debug(metaData.getExpect().toString() + "\n" + metaData.getActual().toString());
43+
JsonCompareResult jsonCompareResult = defaultJsonDifference
44+
.detectDiff(JSON.toJSONString(metaData.getExpect()), JSON.toJSONString(metaData.getActual()));
45+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent(metaData.getRet().toString()));
46+
}
47+
48+
@Test(dataProvider = "optionRight", dataProviderClass = ObjectDataFactory.class)
49+
public void optionRight(MetaData metaData) {
50+
JsonDiffOption.setDefaultJsonFramework(ImplType.FASTJSON);
51+
logger.info(metaData.getCaseName());
52+
logger.debug("\n" + metaData.getExpect().toString() + "\n" + metaData.getActual().toString() + "\n");
53+
JsonCompareResult jsonCompareResult = defaultJsonDifference
54+
.option(metaData.getOption())
55+
.detectDiff(JSON.toJSONString(metaData.getExpect()), JSON.toJSONString(metaData.getActual()));
56+
if (metaData.getRet() != null) {
57+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent(metaData.getRet().toString()));
58+
} else {
59+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent("{\"match\":true}"));
60+
}
61+
}
62+
63+
@Test(dataProvider = "optionErr", dataProviderClass = ObjectDataFactory.class)
64+
public void optionErr(MetaData metaData) {
65+
JsonDiffOption.setDefaultJsonFramework(ImplType.FASTJSON);
66+
logger.info(metaData.getCaseName());
67+
logger.debug("\n" + metaData.getExpect().toString() + "\n" + metaData.getActual().toString() + "\n");
68+
JsonCompareResult jsonCompareResult = defaultJsonDifference
69+
.option(metaData.getOption())
70+
.detectDiff(JSON.toJSONString(metaData.getExpect()), JSON.toJSONString(metaData.getActual()));
71+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent(metaData.getRet().toString()));
72+
}
73+
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package me.codeleep.jsondiff.test;
2+
3+
import com.alibaba.fastjson2.JSON;
4+
import me.codeleep.jsondiff.DefaultJsonDifference;
5+
import me.codeleep.jsondiff.common.model.JsonCompareResult;
6+
import me.codeleep.jsondiff.common.model.TravelPath;
7+
import me.codeleep.jsondiff.common.model.neat.JsonDiff;
8+
import me.codeleep.jsondiff.common.model.neat.JsonDiffArray;
9+
import me.codeleep.jsondiff.common.model.neat.JsonDiffObject;
10+
import me.codeleep.jsondiff.common.model.neat.JsonNeat;
11+
import me.codeleep.jsondiff.common.utils.ImplType;
12+
import me.codeleep.jsondiff.core.config.JsonComparedOption;
13+
import me.codeleep.jsondiff.core.config.JsonDiffOption;
14+
import me.codeleep.jsondiff.core.handle.AbstractHandleFactory;
15+
import me.codeleep.jsondiff.core.handle.array.ComplexArrayJsonNeat;
16+
import me.codeleep.jsondiff.core.handle.object.ComplexObjectJsonNeat;
17+
import me.codeleep.jsondiff.core.handle.other.ComplexOtherJsonNeat;
18+
import me.codeleep.jsondiff.core.handle.primitive.ComplexPrimitiveJsonNeat;
19+
import me.codeleep.jsondiff.core.utils.ClassUtil;
20+
import me.codeleep.jsondiff.test.dataFactory.HandleFactoryDataFactory;
21+
import me.codeleep.jsondiff.test.model.MetaData;
22+
import me.codeleep.jsondiff.test.utils.FormatContent;
23+
import org.testng.Assert;
24+
import org.testng.annotations.Test;
25+
26+
/**
27+
* @author: chenfeng
28+
* @createTime: 2024/4/21
29+
* @description:
30+
*/
31+
public class GasonHandleFactoryTest {
32+
private static final DefaultJsonDifference defaultJsonDifference = new DefaultJsonDifference();
33+
@Test(dataProvider = "right", dataProviderClass = HandleFactoryDataFactory.class)
34+
public void RightTest(MetaData metaData) {
35+
JsonDiffOption.setDefaultJsonFramework(ImplType.GSON);
36+
JsonComparedOption jsonComparedOption = new JsonComparedOption();
37+
jsonComparedOption.setJsonNeatFactory(new AbstractHandleFactory() {
38+
class ComplexObjectJsonNeatTest extends ComplexObjectJsonNeat {
39+
private ComplexObjectJsonNeatTest(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
40+
super(travelPath, DisposeExpect(expect), actual);
41+
}
42+
@Override
43+
protected JsonCompareResult diff1() {
44+
return super.diff1();
45+
}
46+
}
47+
class ComplexArrayJsonNeatTest extends ComplexArrayJsonNeat {
48+
private ComplexArrayJsonNeatTest(TravelPath travelPath, JsonDiff expect, JsonDiff actual) {
49+
super(travelPath, DisposeExpect(expect), actual);
50+
}
51+
@Override
52+
protected JsonCompareResult diff1() {
53+
return super.diff1();
54+
}
55+
}
56+
private JsonDiff DisposeExpect(JsonDiff expect) {
57+
return expect;
58+
}
59+
60+
@Override
61+
public JsonNeat<? extends JsonDiff> generate(JsonDiff expect, JsonDiff actual, TravelPath travelPath) {
62+
if (!ClassUtil.isSameClass(expect, actual)) {
63+
return null;
64+
}
65+
if (expect instanceof JsonDiffObject && actual instanceof JsonDiffObject) {
66+
return new ComplexObjectJsonNeatTest(travelPath, expect, actual);
67+
}
68+
if (expect instanceof JsonDiffArray && actual instanceof JsonDiffArray) {
69+
return new ComplexArrayJsonNeatTest(travelPath, expect, actual);
70+
}
71+
if (expect.isLeaf() && actual.isLeaf()) {
72+
return new ComplexPrimitiveJsonNeat(travelPath, expect, actual);
73+
}
74+
return new ComplexOtherJsonNeat(travelPath, expect, actual);
75+
}
76+
});
77+
JsonCompareResult jsonCompareResult = defaultJsonDifference.option(jsonComparedOption)
78+
.detectDiff(JSON.toJSONString(metaData.getExpect()), JSON.toJSONString(metaData.getActual()));
79+
if (metaData.getRet() != null) {
80+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent(metaData.getRet().toString()));
81+
} else {
82+
Assert.assertEquals(FormatContent.formatComparisonContent(jsonCompareResult), FormatContent.formatComparisonContent("{\"match\":true}"));
83+
}
84+
}
85+
}

0 commit comments

Comments
 (0)