From 09f6123479d44573abee1bc3466a099f8dcb25cb Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 2 Oct 2024 01:25:47 +0800 Subject: [PATCH] add test --- .../hutool/json/engine/FastJSONTest.java | 2 +- .../dromara/hutool/json/engine/GsonTest.java | 2 +- .../hutool/json/engine/HutoolJSONTest.java | 2 +- .../json/engine/JSONEngineFactoryTest.java | 67 ------------------- .../hutool/json/engine/JSONEngineTest.java | 42 ++++++++++++ .../hutool/json/engine/JacksonTest.java | 2 +- 6 files changed, 46 insertions(+), 71 deletions(-) diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/engine/FastJSONTest.java b/hutool-json/src/test/java/org/dromara/hutool/json/engine/FastJSONTest.java index d9bb87e8f..4c178a5af 100644 --- a/hutool-json/src/test/java/org/dromara/hutool/json/engine/FastJSONTest.java +++ b/hutool-json/src/test/java/org/dromara/hutool/json/engine/FastJSONTest.java @@ -31,7 +31,7 @@ public class FastJSONTest { final JSONEngine engine = JSONEngineFactory.createEngine("fastjson"); engine.init(JSONEngineConfig.of().setPrettyPrint(true)); - final JSONEngineFactoryTest.TestBean testBean = new JSONEngineFactoryTest.TestBean("张三", 18, true); + final JSONEngineTest.TestBean testBean = new JSONEngineTest.TestBean("张三", 18, true); String jsonString = engine.toJsonString(testBean); // 使用统一换行符 jsonString = StrUtil.removeAll(jsonString, '\r'); diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/engine/GsonTest.java b/hutool-json/src/test/java/org/dromara/hutool/json/engine/GsonTest.java index a4e9b169a..e81366ca7 100644 --- a/hutool-json/src/test/java/org/dromara/hutool/json/engine/GsonTest.java +++ b/hutool-json/src/test/java/org/dromara/hutool/json/engine/GsonTest.java @@ -34,7 +34,7 @@ public class GsonTest { final JSONEngine engine = JSONEngineFactory.createEngine("gson"); engine.init(JSONEngineConfig.of().setPrettyPrint(true)); - final JSONEngineFactoryTest.TestBean testBean = new JSONEngineFactoryTest.TestBean("张三", 18, true); + final JSONEngineTest.TestBean testBean = new JSONEngineTest.TestBean("张三", 18, true); final String jsonString = engine.toJsonString(testBean); // 使用统一换行符 Assertions.assertEquals("{\n" + diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/engine/HutoolJSONTest.java b/hutool-json/src/test/java/org/dromara/hutool/json/engine/HutoolJSONTest.java index d85710ae7..558331377 100644 --- a/hutool-json/src/test/java/org/dromara/hutool/json/engine/HutoolJSONTest.java +++ b/hutool-json/src/test/java/org/dromara/hutool/json/engine/HutoolJSONTest.java @@ -25,7 +25,7 @@ public class HutoolJSONTest { final JSONEngine engine = JSONEngineFactory.createEngine("hutoolJSON"); engine.init(JSONEngineConfig.of().setPrettyPrint(true)); - final JSONEngineFactoryTest.TestBean testBean = new JSONEngineFactoryTest.TestBean("张三", 18, true); + final JSONEngineTest.TestBean testBean = new JSONEngineTest.TestBean("张三", 18, true); final String jsonString = engine.toJsonString(testBean); Assertions.assertEquals("{\n" + " \"name\": \"张三\",\n" + diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/engine/JSONEngineFactoryTest.java b/hutool-json/src/test/java/org/dromara/hutool/json/engine/JSONEngineFactoryTest.java index 4a87441be..6ce47f1ca 100644 --- a/hutool-json/src/test/java/org/dromara/hutool/json/engine/JSONEngineFactoryTest.java +++ b/hutool-json/src/test/java/org/dromara/hutool/json/engine/JSONEngineFactoryTest.java @@ -16,17 +16,11 @@ package org.dromara.hutool.json.engine; -import com.alibaba.fastjson2.annotation.JSONField; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; import org.dromara.hutool.json.engine.fastjson.FastJSON2Engine; import org.dromara.hutool.json.engine.gson.GsonEngine; import org.dromara.hutool.json.engine.jackson.JacksonEngine; import org.junit.jupiter.api.Test; -import java.io.StringReader; - import static org.junit.jupiter.api.Assertions.assertEquals; public class JSONEngineFactoryTest { @@ -40,84 +34,23 @@ public class JSONEngineFactoryTest { void jacksonTest() { final JSONEngine engine = JSONEngineFactory.createEngine("jackson"); assertEquals(JacksonEngine.class, engine.getClass()); - - final TestBean testBean = new TestBean("张三", 18, true); - final String jsonString = engine.toJsonString(testBean); - - final String resultJsonStr = "{\"name\":\"张三\",\"age\":18,\"gender\":true}"; - assertEquals(resultJsonStr, jsonString); - - final TestBean testBean1 = engine.fromJsonString(resultJsonStr, TestBean.class); - assertEquals(testBean, testBean1); - } - - @Test - void jacksonTest2() { - final JSONEngine engine = JSONEngineFactory.createEngine("jackson"); - assertEquals(JacksonEngine.class, engine.getClass()); - - final TestBean testBean = new TestBean("张三", 18, true); - final String serialize = engine.toJsonString(testBean); - - final String jsonStr = "{\"name\":\"张三\",\"age\":18,\"gender\":true}"; - assertEquals(jsonStr, serialize); - - final TestBean testBean1 = engine.fromJsonString(jsonStr, TestBean.class); - assertEquals(testBean, testBean1); } @Test void GsonTest() { final JSONEngine engine = JSONEngineFactory.createEngine("gson"); assertEquals(GsonEngine.class, engine.getClass()); - - final TestBean testBean = new TestBean("张三", 18, true); - - final String jsonStr = "{\"name\":\"张三\",\"age\":18,\"gender\":true}"; - assertEquals(jsonStr, engine.toJsonString(testBean)); - - final TestBean testBean1 = engine.deserialize(new StringReader(jsonStr), TestBean.class); - assertEquals(testBean, testBean1); } @Test void fastJSON2Test() { final JSONEngine engine = JSONEngineFactory.createEngine("fastjson"); assertEquals(FastJSON2Engine.class, engine.getClass()); - - final TestBean testBean = new TestBean("张三", 18, true); - - final String jsonStr = "{\"name\":\"张三\",\"age\":18,\"gender\":true}"; - assertEquals(jsonStr, engine.toJsonString(testBean)); - - final TestBean testBean1 = engine.deserialize(new StringReader(jsonStr), TestBean.class); - assertEquals(testBean, testBean1); } @Test void HutoolJSONTest() { final JSONEngine engine = JSONEngineFactory.createEngine("hutoolJSON"); assertEquals(HutoolJSONEngine.class, engine.getClass()); - - final TestBean testBean = new TestBean("张三", 18, true); - - final String jsonStr = "{\"name\":\"张三\",\"age\":18,\"gender\":true}"; - assertEquals(jsonStr, engine.toJsonString(testBean)); - - final TestBean testBean1 = engine.deserialize(new StringReader(jsonStr), TestBean.class); - assertEquals(testBean, testBean1); - } - - @Data - @NoArgsConstructor - @AllArgsConstructor - static class TestBean { - // 解决输出顺序问题 - @JSONField(ordinal = 1) - private String name; - @JSONField(ordinal = 2) - private int age; - @JSONField(ordinal = 3) - private boolean gender; } } diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/engine/JSONEngineTest.java b/hutool-json/src/test/java/org/dromara/hutool/json/engine/JSONEngineTest.java index 47cecb14d..1cb366d31 100644 --- a/hutool-json/src/test/java/org/dromara/hutool/json/engine/JSONEngineTest.java +++ b/hutool-json/src/test/java/org/dromara/hutool/json/engine/JSONEngineTest.java @@ -23,6 +23,8 @@ import lombok.NoArgsConstructor; import org.dromara.hutool.core.date.DateTime; import org.dromara.hutool.core.date.DateUtil; import org.dromara.hutool.core.date.TimeUtil; +import org.dromara.hutool.core.lang.Console; +import org.dromara.hutool.core.text.StrUtil; import org.junit.jupiter.api.Test; import java.io.StringReader; @@ -65,6 +67,11 @@ public class JSONEngineTest { Arrays.stream(engineNames).forEach(this::assertToStringOrFromString); } + @Test + void prettyPrintTest() { + Arrays.stream(engineNames).forEach(this::assertPrettyPrint); + } + private void assertWriteDateFormat(final String engineName) { final DateTime date = DateUtil.parse("2024-01-01 01:12:21"); final BeanWithDate bean = new BeanWithDate(date, TimeUtil.of(date)); @@ -135,6 +142,41 @@ public class JSONEngineTest { assertEquals(testBean, testBean1); } + private void assertPrettyPrint(final String engineName){ + final JSONEngine engine = JSONEngineFactory.createEngine(engineName); + engine.init(JSONEngineConfig.of().setPrettyPrint(true)); + + final TestBean testBean = new TestBean("张三", 18, true); + String jsonString = engine.toJsonString(testBean); + Console.log(engineName); + if("jackson".equals(engineName)){ + jsonString = jsonString.replace(" : ", ": "); + // 使用统一换行符 + jsonString = StrUtil.removeAll(jsonString, '\r'); + } + if(engineName.startsWith("fastjson")){ + jsonString = jsonString.replace(":", ": "); + jsonString = jsonString.replace("\t", " "); + } + + if("moshi".equals(engineName)){ + // Moshi顺序不同 + // 使用统一换行符 + assertEquals("{\n" + + " \"age\": 18,\n" + + " \"gender\": true,\n" + + " \"name\": \"张三\"\n" + + "}", jsonString); + return; + } + // 使用统一换行符 + assertEquals("{\n" + + " \"name\": \"张三\",\n" + + " \"age\": 18,\n" + + " \"gender\": true\n" + + "}", jsonString); + } + @Data private static class EmptyBean{ diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/engine/JacksonTest.java b/hutool-json/src/test/java/org/dromara/hutool/json/engine/JacksonTest.java index fb764a814..3d6cd5920 100644 --- a/hutool-json/src/test/java/org/dromara/hutool/json/engine/JacksonTest.java +++ b/hutool-json/src/test/java/org/dromara/hutool/json/engine/JacksonTest.java @@ -29,7 +29,7 @@ public class JacksonTest { final JSONEngine engine = JSONEngineFactory.createEngine("jackson"); engine.init(JSONEngineConfig.of().setPrettyPrint(true)); - final JSONEngineFactoryTest.TestBean testBean = new JSONEngineFactoryTest.TestBean("张三", 18, true); + final JSONEngineTest.TestBean testBean = new JSONEngineTest.TestBean("张三", 18, true); String jsonString = engine.toJsonString(testBean); // 使用统一换行符 jsonString = StrUtil.removeAll(jsonString, '\r');