From 68fb89e18778bc8e08a4aaa93f661421a80a5726 Mon Sep 17 00:00:00 2001 From: urielch Date: Sat, 3 Apr 2021 18:14:19 +0300 Subject: [PATCH 1/5] bump all version --- accessors-smart/pom.xml | 2 +- .../test/java/net/minidev/asm/ASMTest.java | 1 - json-smart-action/pom.xml | 12 ++--- .../actions/traverse/KeysPrintAction.java | 2 +- .../json/test/actions/ElementRemoverTest.java | 49 +---------------- .../json/test/actions/PathLocatorTest.java | 10 ++-- .../json/test/actions/PathRemoverTest.java | 10 ++-- .../json/test/actions/PathReplicatorTest.java | 19 +++---- .../json/test/actions/PathsRetainerTest.java | 10 ++-- json-smart/pom.xml | 8 +-- .../net/minidev/json/test/JSONSimpleTest.java | 7 ++- .../net/minidev/json/test/MustThrows.java | 6 ++- .../json/test/TestBigDigitUnrestricted.java | 7 ++- .../net/minidev/json/test/TestBigValue.java | 7 ++- .../net/minidev/json/test/TestCompressor.java | 9 +++- .../json/test/TestCompressorFlags.java | 6 ++- .../java/net/minidev/json/test/TestFloat.java | 20 ++++--- .../minidev/json/test/TestFloatStrict.java | 3 +- .../java/net/minidev/json/test/TestInts.java | 11 +++- .../minidev/json/test/TestInvalidNumber.java | 6 ++- .../net/minidev/json/test/TestKeyword.java | 8 ++- .../java/net/minidev/json/test/TestMisc.java | 13 ++++- .../java/net/minidev/json/test/TestNavi.java | 8 ++- .../json/test/TestNumberPrecision.java | 9 +++- .../net/minidev/json/test/TestStrict.java | 8 ++- .../net/minidev/json/test/TestString.java | 8 ++- .../minidev/json/test/TestStringStrict.java | 4 +- .../net/minidev/json/test/TestTruncated.java | 6 ++- .../java/net/minidev/json/test/TestUtf8.java | 54 ------------------- .../json/test/strict/TestExcessiveComma.java | 10 +++- .../json/test/strict/TestSpecialChar.java | 3 +- .../json/test/strict/TestTaillingJunk.java | 8 ++- .../json/test/strict/TestZeroLead.java | 23 ++++---- .../json/test/writer/TestWriteFeatures.java | 2 +- .../json/testMapping/TestAdvancedMapper.java | 2 +- .../testMapping/TestCustomMappingInstant.java | 6 ++- .../minidev/json/testMapping/TestDate.java | 7 ++- .../json/testMapping/TestFieldRename.java | 4 +- .../json/testMapping/TestMapBeans.java | 9 +++- .../json/testMapping/TestMapPrimArrays.java | 9 +++- .../json/testMapping/TestMapPublic.java | 6 ++- .../json/testMapping/TestMapPublic2.java | 7 ++- .../json/testMapping/TestSerPrimArrays.java | 8 ++- .../minidev/json/testMapping/TestUpdater.java | 6 ++- pom.xml | 9 ++-- 45 files changed, 241 insertions(+), 201 deletions(-) delete mode 100644 json-smart/src/test/java/net/minidev/json/test/TestUtf8.java diff --git a/accessors-smart/pom.xml b/accessors-smart/pom.xml index 4a3a5c16..f525e36a 100644 --- a/accessors-smart/pom.xml +++ b/accessors-smart/pom.xml @@ -41,7 +41,7 @@ org.junit.jupiter junit-jupiter-api - 5.6.2 + 5.7.1 test diff --git a/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java b/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java index 4363b0bc..91418441 100644 --- a/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java +++ b/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test; -// import junit.framework.TestCase; import net.minidev.asm.bean.BTest; public class ASMTest { diff --git a/json-smart-action/pom.xml b/json-smart-action/pom.xml index 60f111af..46f9ef4a 100644 --- a/json-smart-action/pom.xml +++ b/json-smart-action/pom.xml @@ -3,7 +3,7 @@ net.minidev minidev-parent - 2.3 + 2.4.1 4.0.0 json-smart-action @@ -47,11 +47,11 @@ 1.8 - - junit - junit - test - + + org.junit.jupiter + junit-jupiter-api + test + net.minidev json-smart diff --git a/json-smart-action/src/main/java/net/minidev/json/actions/traverse/KeysPrintAction.java b/json-smart-action/src/main/java/net/minidev/json/actions/traverse/KeysPrintAction.java index ad0e10ea..e19c74de 100644 --- a/json-smart-action/src/main/java/net/minidev/json/actions/traverse/KeysPrintAction.java +++ b/json-smart-action/src/main/java/net/minidev/json/actions/traverse/KeysPrintAction.java @@ -17,7 +17,7 @@ public boolean start(JSONObject object) { @Override public boolean traverseEntry(String fullPathToEntry, Entry entry) { - System.out.println(entry.getKey()); + // System.out.println(entry.getKey()); return true; } diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java index c71aeac4..27ac321f 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java @@ -4,10 +4,11 @@ import net.minidev.json.JSONValue; import net.minidev.json.actions.ElementRemover; import net.minidev.json.parser.ParseException; -import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; +import org.junit.jupiter.api.Test; + import java.util.*; import static org.junit.Assert.assertEquals; @@ -58,50 +59,4 @@ public void test() throws ParseException { er.remove(objectToClean); assertEquals(expectedObject, objectToClean); } - - // private ElementRemover switchKeyToRemove() - // { - // long m = System.currentTimeMillis(); - // if (elementsToRemove == null && m % 4 == 0) - // { - // System.out.println("cast to String"); - // return new ElementRemover((String)null); - // } - // else if (elementsToRemove == null && m % 4 == 1) - // { - // System.out.println("cast to String[]"); - // return new ElementRemover((String[])null); - // } - // else if (elementsToRemove == null && m % 4 == 2) - // { - // System.out.println("cast to JSONArray"); - // return new ElementRemover((JSONArray)null); - // } - // else if (elementsToRemove == null && m % 4 == 3) - // { - // System.out.println("cast to List"); - // return new ElementRemover((List)null); - // } - // else if (elementsToRemove instanceof String) - // { - // return new ElementRemover((String) elementsToRemove); - // } - // else if (elementsToRemove instanceof String[]) - // { - // return new ElementRemover((String[]) elementsToRemove); - // } - // else if (elementsToRemove instanceof JSONArray) - // { - // return new ElementRemover((JSONArray) elementsToRemove); - // } - // else if (elementsToRemove instanceof List) - // { - // return new ElementRemover((List) elementsToRemove); - // } - // else - // { - // throw new IllegalArgumentException("bad test setup: wrong type of key to remove"); - // } - // } - } diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java index ba904c34..96c89787 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java @@ -16,6 +16,8 @@ import static org.junit.Assert.assertEquals; +import org.junit.jupiter.api.Test; + /** * @author adoneitan@gmail.com */ @@ -115,16 +117,16 @@ private PathLocator switchKeyToRemove() { long m = System.currentTimeMillis(); if (keysToFind == null && m % 4 == 0) { - System.out.println("cast to String"); + // System.out.println("cast to String"); return new PathLocator((String)null); } else if (keysToFind == null && m % 4 == 1) { - System.out.println("cast to String[]"); + // System.out.println("cast to String[]"); return new PathLocator((String[])null); } else if (keysToFind == null && m % 4 == 2) { - System.out.println("cast to JSONArray"); + // System.out.println("cast to JSONArray"); return new PathLocator((JSONArray)null); } else if (keysToFind == null && m % 4 == 3) { - System.out.println("cast to List"); + // System.out.println("cast to List"); return new PathLocator((List)null); } else if (keysToFind instanceof String) { return new PathLocator((String) keysToFind); diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java index b50e9d97..6802647c 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java @@ -16,6 +16,8 @@ import static org.junit.Assert.assertEquals; +import org.junit.jupiter.api.Test; + /** * Tests {@link PathRemover} * @@ -90,16 +92,16 @@ private PathRemover switchKeyToRemove() { long m = System.currentTimeMillis(); if (keyToRemove == null && m % 4 == 0) { - System.out.println("cast to String"); + // System.out.println("cast to String"); return new PathRemover((String)null); } else if (keyToRemove == null && m % 4 == 1) { - System.out.println("cast to String[]"); + // System.out.println("cast to String[]"); return new PathRemover((String[])null); } else if (keyToRemove == null && m % 4 == 2) { - System.out.println("cast to JSONArray"); + // System.out.println("cast to JSONArray"); return new PathRemover((JSONArray)null); } else if (keyToRemove == null && m % 4 == 3) { - System.out.println("cast to List"); + // System.out.println("cast to List"); return new PathRemover((List)null); } else if (keyToRemove instanceof String) { return new PathRemover((String)keyToRemove); diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java index 8bcb8db8..f45b9294 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java @@ -4,7 +4,6 @@ import net.minidev.json.JSONArray; import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; -import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -13,6 +12,8 @@ import java.util.Collection; import java.util.List; +import org.junit.jupiter.api.Test; + import static org.junit.Assert.assertEquals; /** @@ -145,16 +146,16 @@ public void test2() throws Exception { private PathReplicator switchKeyToCopy() { long m = System.currentTimeMillis(); if (pathsToCopy == null && m % 4 == 0) { - System.out.println("cast to String"); + // System.out.println("cast to String"); return new PathReplicator((String) null); } else if (pathsToCopy == null && m % 4 == 1) { - System.out.println("cast to String[]"); + // System.out.println("cast to String[]"); return new PathReplicator((String[]) null); } else if (pathsToCopy == null && m % 4 == 2) { - System.out.println("cast to JSONArray"); + // System.out.println("cast to JSONArray"); return new PathReplicator((JSONArray) null); } else if (pathsToCopy == null && m % 4 == 3) { - System.out.println("cast to List"); + // System.out.println("cast to List"); return new PathReplicator((List) null); } else if (pathsToCopy instanceof String) { return new PathReplicator((String) pathsToCopy); @@ -172,16 +173,16 @@ private PathReplicator switchKeyToCopy() { private PathReplicator switchKeyToCopy2() { long m = System.currentTimeMillis(); if (pathsToCopy == null && m % 4 == 0) { - System.out.println("cast to String"); + // System.out.println("cast to String"); return new PathReplicator((String) null); } else if (pathsToCopy == null && m % 4 == 1) { - System.out.println("cast to String[]"); + // System.out.println("cast to String[]"); return new PathReplicator((String[]) null); } else if (pathsToCopy == null && m % 4 == 2) { - System.out.println("cast to JSONArray"); + // System.out.println("cast to JSONArray"); return new PathReplicator((JSONArray) null); } else if (pathsToCopy == null && m % 4 == 3) { - System.out.println("cast to List"); + // System.out.println("cast to List"); return new PathReplicator((List) null); } else if (pathsToCopy instanceof String) { return new PathReplicator((String) pathsToCopy); diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java index f079e801..a045dc1b 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java @@ -15,6 +15,8 @@ import java.util.Collection; import java.util.List; +import org.junit.jupiter.api.Test; + import static org.junit.Assert.assertEquals; /** @@ -122,16 +124,16 @@ public void test() throws ParseException { private PathsRetainer switchKeyToRemove() { long m = System.currentTimeMillis(); if (keyToKeep == null && m % 4 == 0) { - System.out.println("cast to String"); + // System.out.println("cast to String"); return new PathsRetainer((String) null); } else if (keyToKeep == null && m % 4 == 1) { - System.out.println("cast to String[]"); + // System.out.println("cast to String[]"); return new PathsRetainer((String[]) null); } else if (keyToKeep == null && m % 4 == 2) { - System.out.println("cast to JSONArray"); + // System.out.println("cast to JSONArray"); return new PathsRetainer((JSONArray) null); } else if (keyToKeep == null && m % 4 == 3) { - System.out.println("cast to List"); + // System.out.println("cast to List"); return new PathsRetainer((List) null); } else if (keyToKeep instanceof String) { return new PathsRetainer((String) keyToKeep); diff --git a/json-smart/pom.xml b/json-smart/pom.xml index dcebceb9..0eb690d9 100644 --- a/json-smart/pom.xml +++ b/json-smart/pom.xml @@ -3,7 +3,7 @@ net.minidev minidev-parent - 2.4 + 2.4.1 4.0.0 @@ -49,9 +49,9 @@ - junit - junit - test + org.junit.jupiter + junit-jupiter-api + test net.minidev diff --git a/json-smart/src/test/java/net/minidev/json/test/JSONSimpleTest.java b/json-smart/src/test/java/net/minidev/json/test/JSONSimpleTest.java index 99b055d4..96e5d3db 100644 --- a/json-smart/src/test/java/net/minidev/json/test/JSONSimpleTest.java +++ b/json-smart/src/test/java/net/minidev/json/test/JSONSimpleTest.java @@ -1,10 +1,12 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.JSONArray; import net.minidev.json.parser.JSONParser; -public class JSONSimpleTest extends TestCase { +import org.junit.jupiter.api.Test; + +public class JSONSimpleTest { + @Test public void testLong() throws Exception { String s = "[1]"; JSONParser p = new JSONParser(JSONParser.MODE_JSON_SIMPLE); @@ -12,6 +14,7 @@ public void testLong() throws Exception { assertEquals(Long.valueOf(1), (Long) array.get(0)); } + @Test public void testDefault() throws Exception { String s = "[1]"; JSONParser p = new JSONParser(JSONParser.MODE_PERMISSIVE); diff --git a/json-smart/src/test/java/net/minidev/json/test/MustThrows.java b/json-smart/src/test/java/net/minidev/json/test/MustThrows.java index f013561a..528d95f6 100644 --- a/json-smart/src/test/java/net/minidev/json/test/MustThrows.java +++ b/json-smart/src/test/java/net/minidev/json/test/MustThrows.java @@ -1,19 +1,23 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; +import org.junit.jupiter.api.Test; + public class MustThrows { + @Test public static void testStrictInvalidJson(String json, int execptionType) throws Exception { testStrictInvalidJson(json, execptionType, null); } + @Test public static void testStrictInvalidJson(String json, int execptionType, Class cls) throws Exception { testInvalidJson(json, JSONParser.MODE_RFC4627, execptionType, cls); } + @Test public static void testInvalidJson(String json, int permissifMode, int execptionType) throws Exception { testInvalidJson(json, permissifMode, execptionType, null); } diff --git a/json-smart/src/test/java/net/minidev/json/test/TestBigDigitUnrestricted.java b/json-smart/src/test/java/net/minidev/json/test/TestBigDigitUnrestricted.java index 7dbc00a9..894d7c72 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestBigDigitUnrestricted.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestBigDigitUnrestricted.java @@ -2,13 +2,15 @@ import java.math.BigDecimal; -import junit.framework.TestCase; import net.minidev.json.JSONObject; import net.minidev.json.parser.JSONParser; -public class TestBigDigitUnrestricted extends TestCase { +import org.junit.jupiter.api.Test; + +public class TestBigDigitUnrestricted { public static String[] VALID_DOUBLE_JSON = new String[] {"{\"v\":0.12345678912345678}"}; + @Test public void testRestrictedBigDigit() throws Exception { JSONParser p = new JSONParser(JSONParser.MODE_RFC4627); String json = VALID_DOUBLE_JSON[0]; @@ -17,6 +19,7 @@ public void testRestrictedBigDigit() throws Exception { assertEquals("Should not Store this big number as a double", Double.class, value.getClass()); } + @Test public void testUnrestrictedBigDigit() throws Exception { JSONParser p = new JSONParser(JSONParser.MODE_PERMISSIVE); String json = VALID_DOUBLE_JSON[0]; diff --git a/json-smart/src/test/java/net/minidev/json/test/TestBigValue.java b/json-smart/src/test/java/net/minidev/json/test/TestBigValue.java index f7944492..890231d8 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestBigValue.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestBigValue.java @@ -6,14 +6,16 @@ import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; -import junit.framework.TestCase; -public class TestBigValue extends TestCase { +import org.junit.jupiter.api.Test; + +public class TestBigValue { String bigStr = "12345678901234567890123456789"; /** * test BigDecimal serialization */ + @Test public void testBigDecimal() { HashMap map = new HashMap(); BigDecimal bigDec = new BigDecimal(bigStr + "." + bigStr); @@ -29,6 +31,7 @@ public void testBigDecimal() { /** * test BigInteger serialization */ + @Test public void testBigInteger() { HashMap map = new HashMap(); BigInteger bigInt = new BigInteger(bigStr); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestCompressor.java b/json-smart/src/test/java/net/minidev/json/test/TestCompressor.java index 7e367aae..94456cc5 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestCompressor.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestCompressor.java @@ -1,9 +1,11 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.JSONValue; +import org.junit.jupiter.api.Test; + public class TestCompressor extends TestCase { + @Test public void testCompressor() { String j = "{'a':{'b':'c','d':'e'},f:[1,2,'XYZ']}".replace('\'', '"'); String sol = j.replace(" ", "").replace("\"", ""); @@ -11,6 +13,7 @@ public void testCompressor() { assertEquals(sol, comp); } + @Test public void testCompressor2() { String j = "[{} ]"; String sol = j.replace(" ", ""); @@ -18,6 +21,7 @@ public void testCompressor2() { assertEquals(sol, comp); } + @Test public void testCompressor3() { String j = "[[],[],[] ]"; String sol = j.replace(" ", ""); @@ -25,6 +29,7 @@ public void testCompressor3() { assertEquals(sol, comp); } + @Test public void testCompressor4() { String j = "[[1],[2,3],[4] ]"; String sol = j.replace(" ", ""); @@ -32,6 +37,7 @@ public void testCompressor4() { assertEquals(sol, comp); } + @Test public void testCompressor5() { String j = "[{},{},{} ]"; String sol = j.replace(" ", ""); @@ -39,6 +45,7 @@ public void testCompressor5() { assertEquals(sol, comp); } + @Test public void testCompressor6() { String j = "[{a:b},{c:d},{e:f}]"; String sol = j; diff --git a/json-smart/src/test/java/net/minidev/json/test/TestCompressorFlags.java b/json-smart/src/test/java/net/minidev/json/test/TestCompressorFlags.java index d8909c70..36a3b31b 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestCompressorFlags.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestCompressorFlags.java @@ -1,10 +1,11 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.JSONObject; import net.minidev.json.JSONStyle; import net.minidev.json.JSONValue; +import org.junit.jupiter.api.Test; + /** * Test all Compression Styles * @@ -13,6 +14,7 @@ */ public class TestCompressorFlags extends TestCase { + @Test public void testProtect() throws Exception { String compressed = "{k:value}"; String nCompress = "{\"k\":\"value\"}"; @@ -42,6 +44,7 @@ public void testProtect() throws Exception { assertEquals("{\"k\":value}", r); } + @Test public void testAggresive() throws Exception { String r; JSONStyle style; @@ -76,6 +79,7 @@ public void testAggresive() throws Exception { assertEquals("{a b:c d}", r); } + @Test public void test4Web() throws Exception { String NProtectValue = "{\"k\":\"http:\\/\\/url\"}"; diff --git a/json-smart/src/test/java/net/minidev/json/test/TestFloat.java b/json-smart/src/test/java/net/minidev/json/test/TestFloat.java index a3e07f33..8c2553e4 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestFloat.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestFloat.java @@ -1,11 +1,13 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.JSONObject; import net.minidev.json.JSONStyle; import net.minidev.json.parser.JSONParser; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class TestFloat extends TestCase { +public class TestFloat { public static String[] TRUE_NUMBERS = new String[] { "1.0", "123.456", "1.0E1", "123.456E12", "1.0E+1", "123.456E+12", "1.0E-1", "123.456E-12", "1.0e1", "123.456e12", "1.0e+1", "123.456e+12", "1.0e-1", "123.456e-12" }; @@ -13,6 +15,7 @@ public class TestFloat extends TestCase { public static String[] FALSE_NUMBERS = new String[] { "1.0%", "123.45.6", "1.0E", "++123.456E12", "+-01", "1.0E+1.2" }; + @Test public void testPrecisionFloat() throws Exception { JSONParser p = new JSONParser(JSONParser.MODE_PERMISSIVE); for (int len = 15; len < 25; len++) { @@ -24,10 +27,11 @@ public void testPrecisionFloat() throws Exception { String json = "{v:" + s + "}"; JSONObject obj = (JSONObject) p.parse(json); Object value = obj.get("v").toString(); - assertEquals("Should not loose precision on a " + len + " digits long", s, value); + assertEquals(s, value, "Should not loose precision on a " + len + " digits long"); } } + @Test public void testFloat() throws Exception { JSONParser p = new JSONParser(JSONParser.MODE_PERMISSIVE); for (String s : TRUE_NUMBERS) { @@ -35,29 +39,31 @@ public void testFloat() throws Exception { Double val = Double.valueOf(s.trim()); JSONObject obj = (JSONObject) p.parse(json); Object value = obj.get("v"); - assertEquals("Should be parse as double", val, value); + assertEquals(val, value, "Should be parse as double"); } } + @Test public void testNonFloat() throws Exception { JSONParser p = new JSONParser(JSONParser.MODE_PERMISSIVE); for (String s : FALSE_NUMBERS) { String json = "{v:" + s + "}"; JSONObject obj = (JSONObject) p.parse(json); - assertEquals("Should be parse as string", s, obj.get("v")); + assertEquals(s, obj.get("v"), "Should be parse as string"); String correct = "{\"v\":\"" + s + "\"}"; - assertEquals("Should be re serialized as", correct, obj.toJSONString()); + assertEquals(correct, obj.toJSONString(), "Should be re serialized as"); } } /** * Error reported in issue 44 */ + @Test public void testUUID() { String UUID = "58860611416142319131902418361e88"; JSONObject obj = new JSONObject(); obj.put("uuid", UUID); - String compressed =obj.toJSONString(JSONStyle.MAX_COMPRESS); + String compressed = obj.toJSONString(JSONStyle.MAX_COMPRESS); assertTrue(compressed.contains("uuid:\"")); } } diff --git a/json-smart/src/test/java/net/minidev/json/test/TestFloatStrict.java b/json-smart/src/test/java/net/minidev/json/test/TestFloatStrict.java index cac76981..3625f270 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestFloatStrict.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestFloatStrict.java @@ -1,11 +1,11 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.JSONObject; import net.minidev.json.parser.JSONParser; public class TestFloatStrict extends TestCase { + @Test public void testFloat() throws Exception { for (String s : TestFloat.TRUE_NUMBERS) { String json = "{\"v\":" + s + "}"; @@ -16,6 +16,7 @@ public void testFloat() throws Exception { } } + @Test public void testNonFloat() throws Exception { for (String s : TestFloat.FALSE_NUMBERS) { String json = "{\"v\":" + s + "}"; diff --git a/json-smart/src/test/java/net/minidev/json/test/TestInts.java b/json-smart/src/test/java/net/minidev/json/test/TestInts.java index abf56737..7754f124 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestInts.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestInts.java @@ -6,22 +6,24 @@ import net.minidev.json.JSONObject; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; -import junit.framework.TestCase; -public class TestInts extends TestCase { +public class TestInts { + @Test public void testIntMax() throws Exception { String s = "{t:" + Integer.MAX_VALUE + "}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); assertEquals(o.get("t"), Integer.MAX_VALUE); } + @Test public void testIntMin() throws Exception { String s = "{t:" + Integer.MIN_VALUE + "}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); assertEquals(o.get("t"), Integer.MIN_VALUE); } + @Test public void testIntResult() throws Exception { String s = "{\"t\":1}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_RFC4627).parse(s); @@ -34,18 +36,21 @@ public void testIntResult() throws Exception { assertEquals(o.get("t"), Integer.valueOf(1)); } + @Test public void testInt() throws Exception { String s = "{t:90}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); assertEquals(o.get("t"), Integer.valueOf(90)); } + @Test public void testIntNeg() throws Exception { String s = "{t:-90}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); assertEquals(o.get("t"), -90); } + @Test public void testBigInt() throws Exception { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 10; i++) @@ -57,6 +62,7 @@ public void testBigInt() throws Exception { assertEquals(o.get("t"), big); } + @Test public void testBigDoubleInt() throws Exception { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 10; i++) @@ -74,6 +80,7 @@ public void testBigDoubleInt() throws Exception { assertEquals(o.get("t"), big); } + @Test public void testjunkTaillingData() throws Exception { String s = "{\"t\":124}$ifsisg045"; diff --git a/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java b/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java index b5a3b14a..48c8d3b4 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java @@ -1,6 +1,5 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.JSONObject; import net.minidev.json.JSONStyle; import net.minidev.json.JSONValue; @@ -31,22 +30,27 @@ private void invalidFloatAsText(String test) { assertEquals("should handle invalid number '" + test + "' as string", convertedValue, test); } + @Test public void testF1() { validFloatAsFloat("51e88"); } + @Test public void testF2() { validFloatAsFloat("51e+88"); } + @Test public void testF3() { validFloatAsFloat("51e-88"); } + @Test public void testF4() { invalidFloatAsText("51ee88"); } + @Test public void testCVE_2021_27568() { try { JSONValue.parseWithException("{a:-.}"); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestKeyword.java b/json-smart/src/test/java/net/minidev/json/test/TestKeyword.java index 74572300..0efebdbb 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestKeyword.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestKeyword.java @@ -3,10 +3,13 @@ import net.minidev.json.JSONObject; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; -import junit.framework.TestCase; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; public class TestKeyword extends TestCase { + @Test public void testBool() throws Exception { String s = "{t:true}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); @@ -17,18 +20,21 @@ public void testBool() throws Exception { assertEquals(o.get("t"), false); } + @Test public void testNull() throws Exception { String s = "{t:null}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); assertNull(o.get("t")); } + @Test public void testNaN() throws Exception { String s = "{t:NaN}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); assertEquals(o.get("t"), Float.NaN); } + @Test public void testNaNStrict() throws Exception { String s = "{\"t\":NaN}"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_TOKEN); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestMisc.java b/json-smart/src/test/java/net/minidev/json/test/TestMisc.java index e31e4cdb..41dc19a0 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestMisc.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestMisc.java @@ -1,17 +1,20 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.JSONArray; import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; -public class TestMisc extends TestCase { +import org.junit.jupiter.api.Test; +public class TestMisc { + + @Test public void testIssue23() throws Exception { String s = JSONValue.toJSONString(new int[] { 1, 2, 50, 1234, 10000 }); assertEquals("[1,2,50,1234,10000]", s); } + @Test public void testEmptyStrict() throws Exception { String s = "{\"key1\":\"v1\", \"key2\":{}, \"key3\":[]}"; JSONObject o = (JSONObject) JSONValue.parseStrict(s); @@ -21,6 +24,7 @@ public void testEmptyStrict() throws Exception { assertEquals(((JSONArray) o.get("key3")).size(), 0); } + @Test public void testBool() throws Exception { String s = "{\"key1\":\"v1\", \"key2\":{}, \"key3\":[]}"; JSONObject o = (JSONObject) JSONValue.parseWithException(s); @@ -30,30 +34,35 @@ public void testBool() throws Exception { assertEquals(((JSONArray) o.get("key3")).size(), 0); } + @Test public void testInt() throws Exception { String s = "123"; Object o = JSONValue.parseWithException(s); assertEquals(o, 123); } + @Test public void testFloat() throws Exception { String s = "123.5"; Object o = JSONValue.parseWithException(s); assertEquals(o, Double.valueOf(123.5)); } + @Test public void testFloat2() throws Exception { String s = "123.5E1"; Object o = JSONValue.parseWithException(s); assertEquals(o, Double.valueOf(1235)); } + @Test public void testFloat3() throws Exception { String s = "123..5"; Object o = JSONValue.parseWithException(s); assertEquals(o, "123..5"); } + @Test public void testFloat4() throws Exception { String s = "123é.5"; Object o = JSONValue.parseWithException(s); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestNavi.java b/json-smart/src/test/java/net/minidev/json/test/TestNavi.java index f4d22f82..304a6d66 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestNavi.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestNavi.java @@ -1,10 +1,13 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.JSONAwareEx; import net.minidev.json.JSONNavi; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + public class TestNavi extends TestCase { + @Test public void testNaviWrite() { JSONNavi nav = JSONNavi.newInstance(); nav.set("name", "jhone").set("age", 42).at("childName").add("fifi", "riri", "loulou").up().at("cat") @@ -14,6 +17,7 @@ public void testNaviWrite() { assertEquals(s1, s2); } + @Test public void testNaviWrite2() { JSONNavi nav = JSONNavi.newInstance(); nav.at("name").set("toto").up().set("tutu", "V2").at("size").set("width", 10).set("higth", 35).up(3) @@ -26,6 +30,7 @@ public void testNaviWrite2() { assertEquals(s1, s2); } + @Test public void testNaviRead() { String json = "{name:foo,str:null,ar:[1,2,3,4]}"; JSONNavi nav = new JSONNavi(json, JSONAwareEx.class); @@ -39,6 +44,7 @@ public void testNaviRead() { assertEquals("foo", nav.at("name").asString()); } + @Test public void testNaviWriteArray() { String expected = "{'type':'bundle','data':[{'type':'object','name':'obj1'},{'type':'object','name':'obj2'}]}".replace('\'', '"'); JSONNavi nav = JSONNavi.newInstance(); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestNumberPrecision.java b/json-smart/src/test/java/net/minidev/json/test/TestNumberPrecision.java index 829b0a2d..7fd97774 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestNumberPrecision.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestNumberPrecision.java @@ -2,11 +2,13 @@ import java.math.BigInteger; -import junit.framework.TestCase; import net.minidev.json.JSONArray; import net.minidev.json.JSONValue; -public class TestNumberPrecision extends TestCase { +import org.junit.jupiter.api.Test; + +public class TestNumberPrecision { + @Test public void testMaxLong() { Long v = Long.MAX_VALUE; String s = "[" + v + "]"; @@ -15,6 +17,7 @@ public void testMaxLong() { assertEquals(v, r); } + @Test public void testMinLong() { Long v = Long.MIN_VALUE; String s = "[" + v + "]"; @@ -23,6 +26,7 @@ public void testMinLong() { assertEquals(v, r); } + @Test public void testMinBig() { BigInteger v = BigInteger.valueOf(Long.MIN_VALUE).subtract(BigInteger.ONE); String s = "[" + v + "]"; @@ -31,6 +35,7 @@ public void testMinBig() { assertEquals(v, r); } + @Test public void testMaxBig() { BigInteger v = BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.ONE); String s = "[" + v + "]"; diff --git a/json-smart/src/test/java/net/minidev/json/test/TestStrict.java b/json-smart/src/test/java/net/minidev/json/test/TestStrict.java index f58232e6..b2e56dfd 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestStrict.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestStrict.java @@ -1,12 +1,14 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.JSONObject; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; +import org.junit.jupiter.api.Test; + public class TestStrict extends TestCase { + @Test public void testS1() throws Exception { String text = "My Test"; String s = "{t:\"" + text + "\"}"; @@ -14,6 +16,7 @@ public void testS1() throws Exception { assertEquals(o.get("t"), text); } + @Test public void testS2() throws Exception { String text = "My Test"; String s = "{t:'" + text + "'}"; @@ -21,6 +24,7 @@ public void testS2() throws Exception { assertEquals(o.get("t"), text); } + @Test public void testSEscape() throws Exception { String text = "My\r\nTest"; String text2 = "My\\r\\nTest"; @@ -29,6 +33,7 @@ public void testSEscape() throws Exception { assertEquals(o.get("t"), text); } + @Test public void testBadString() throws Exception { String s = "{\"t\":\"Before\u000CAfter\"}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); @@ -44,6 +49,7 @@ public void testBadString() throws Exception { /** * issue report gitHub 8 by jochenberger */ + @Test public void testDataAfterValue() throws Exception { String s = "{\"foo\":\"bar\"x}"; MustThrows.testInvalidJson(s, JSONParser.MODE_STRICTEST | JSONParser.ACCEPT_TAILLING_SPACE, ParseException.ERROR_UNEXPECTED_TOKEN); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestString.java b/json-smart/src/test/java/net/minidev/json/test/TestString.java index 3720b419..b7324208 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestString.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestString.java @@ -1,16 +1,19 @@ package net.minidev.json.test; -import junit.framework.TestCase; import net.minidev.json.JSONObject; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; +import org.junit.jupiter.api.Test; + public class TestString extends TestCase { + @Test public void testS0() throws Exception { MustThrows.testStrictInvalidJson("{\"1\":\"one\"\n\"2\":\"two\"}", ParseException.ERROR_UNEXPECTED_TOKEN); } + @Test public void testS1() throws Exception { String text = "My Test"; String s = "{t:\"" + text + "\"}"; @@ -18,6 +21,7 @@ public void testS1() throws Exception { assertEquals(o.get("t"), text); } + @Test public void testS2() throws Exception { String text = "My Test"; String s = "{t:'" + text + "'}"; @@ -25,6 +29,7 @@ public void testS2() throws Exception { assertEquals(o.get("t"), text); } + @Test public void testSEscape() throws Exception { String text = "My\r\nTest"; String text2 = "My\\r\\nTest"; @@ -33,6 +38,7 @@ public void testSEscape() throws Exception { assertEquals(o.get("t"), text); } + @Test public void testBadString() throws Exception { String s = "{\"t\":\"Before\u000CAfter\"}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestStringStrict.java b/json-smart/src/test/java/net/minidev/json/test/TestStringStrict.java index 4e1d5334..13830454 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestStringStrict.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestStringStrict.java @@ -1,15 +1,17 @@ package net.minidev.json.test; import net.minidev.json.parser.ParseException; -import junit.framework.TestCase; public class TestStringStrict extends TestCase { + @Test public void testS1() throws Exception { String text = "My Test"; String s = "{t:\"" + text + "\"}"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_TOKEN); } + + @Test public void testSEscape() throws Exception { String text2 = "My\\r\\nTest"; String s = "{\"t\":'" + text2 + "'}"; diff --git a/json-smart/src/test/java/net/minidev/json/test/TestTruncated.java b/json-smart/src/test/java/net/minidev/json/test/TestTruncated.java index e22efe17..e194c089 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestTruncated.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestTruncated.java @@ -1,20 +1,24 @@ package net.minidev.json.test; import net.minidev.json.parser.ParseException; -import junit.framework.TestCase; + +import org.junit.jupiter.api.Test; public class TestTruncated extends TestCase { + @Test public void testS1() throws Exception { String s = "{\"key\":{}"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_EOF); } + @Test public void testS2() throws Exception { String s = "{\"key\":"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_EOF); } + @Test public void testS3() throws Exception { String s = "{\"key\":123"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_EOF); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestUtf8.java b/json-smart/src/test/java/net/minidev/json/test/TestUtf8.java deleted file mode 100644 index b3576ef2..00000000 --- a/json-smart/src/test/java/net/minidev/json/test/TestUtf8.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.minidev.json.test; - -import java.io.ByteArrayInputStream; -import java.io.StringReader; - -import junit.framework.TestCase; -import net.minidev.json.JSONObject; -import net.minidev.json.JSONValue; - -public class TestUtf8 extends TestCase { - // Sinhalese language - static String[] nonLatinTexts = new String[] { "සිංහල ජාතිය", "日本語", "Русский", "فارسی", "한국어", "Հայերեն", "हिन्दी", "עברית", "中文", "አማርኛ", "മലയാളം", - "ܐܬܘܪܝܐ", "მარგალური" }; - - public void testString() throws Exception { - for (String nonLatinText : nonLatinTexts) { - String s = "{\"key\":\"" + nonLatinText + "\"}"; - JSONObject obj = (JSONObject) JSONValue.parse(s); - String v = (String) obj.get("key"); // result is incorrect - assertEquals(v, nonLatinText); - } - } - - public void testReader() throws Exception { - for (String nonLatinText : nonLatinTexts) { - String s = "{\"key\":\"" + nonLatinText + "\"}"; - StringReader reader = new StringReader(s); - JSONObject obj = (JSONObject) JSONValue.parse(reader); - - String v = (String) obj.get("key"); // result is incorrect - assertEquals(v, nonLatinText); - } - } - - public void testInputStream() throws Exception { - for (String nonLatinText : nonLatinTexts) { - String s = "{\"key\":\"" + nonLatinText + "\"}"; - ByteArrayInputStream bis = new ByteArrayInputStream(s.getBytes("utf8")); - JSONObject obj = (JSONObject) JSONValue.parse(bis); - String v = (String) obj.get("key"); // result is incorrect - assertEquals(v, nonLatinText); - } - } - - public void testBytes() throws Exception { - for (String nonLatinText : nonLatinTexts) { - String s = "{\"key\":\"" + nonLatinText + "\"}"; - byte[] bs = s.getBytes("utf8"); - JSONObject obj = (JSONObject) JSONValue.parse(bs); - String v = (String) obj.get("key"); // result is incorrect - assertEquals(v, nonLatinText); - } - } -} diff --git a/json-smart/src/test/java/net/minidev/json/test/strict/TestExcessiveComma.java b/json-smart/src/test/java/net/minidev/json/test/strict/TestExcessiveComma.java index 6d072929..105fb4bd 100644 --- a/json-smart/src/test/java/net/minidev/json/test/strict/TestExcessiveComma.java +++ b/json-smart/src/test/java/net/minidev/json/test/strict/TestExcessiveComma.java @@ -1,47 +1,55 @@ package net.minidev.json.test.strict; -import junit.framework.TestCase; import net.minidev.json.JSONValue; import net.minidev.json.parser.ParseException; import net.minidev.json.test.MustThrows; +import org.junit.jupiter.api.Test; + public class TestExcessiveComma extends TestCase { + @Test public void testExcessiveComma1A() throws Exception { String s = "[1,2,,3]"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_CHAR); JSONValue.parseWithException(s); } + @Test public void testExcessiveComma2A() throws Exception { String s = "[1,2,]"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_CHAR); JSONValue.parseWithException(s); } + @Test public void testExcessiveComma3A() throws Exception { String s = "[,]"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_CHAR); JSONValue.parseWithException(s); } + @Test public void testExcessiveComma4A() throws Exception { String s = "[,5]"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_CHAR); JSONValue.parseWithException(s); } + @Test public void testExcessiveComma1O() throws Exception { String s = "{\"a\":1,,\"b\":1}"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_CHAR); JSONValue.parseWithException(s); } + @Test public void testExcessiveComma2O() throws Exception { String s = "{\"a\":1,}"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_CHAR); JSONValue.parseWithException(s); } + @Test public void testExcessiveComma3O() throws Exception { String s = "{,}"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_CHAR); diff --git a/json-smart/src/test/java/net/minidev/json/test/strict/TestSpecialChar.java b/json-smart/src/test/java/net/minidev/json/test/strict/TestSpecialChar.java index d6dadd0c..87c5379d 100644 --- a/json-smart/src/test/java/net/minidev/json/test/strict/TestSpecialChar.java +++ b/json-smart/src/test/java/net/minidev/json/test/strict/TestSpecialChar.java @@ -1,6 +1,5 @@ package net.minidev.json.test.strict; -import junit.framework.TestCase; import net.minidev.json.JSONArray; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; @@ -13,6 +12,7 @@ */ public class TestSpecialChar extends TestCase { + @Test public void testSpecial127() throws Exception { String s127 = String.format("%c", 127); String s = String.format("[\"%c\"]", 127); @@ -22,6 +22,7 @@ public void testSpecial127() throws Exception { assertEquals(o.get(0), s127); } + @Test public void testSpecial31() throws Exception { String s = String.format("[\"%c\"]", 31); MustThrows.testInvalidJson(s, JSONParser.MODE_STRICTEST, ParseException.ERROR_UNEXPECTED_CHAR); diff --git a/json-smart/src/test/java/net/minidev/json/test/strict/TestTaillingJunk.java b/json-smart/src/test/java/net/minidev/json/test/strict/TestTaillingJunk.java index 9b204acd..df9db024 100644 --- a/json-smart/src/test/java/net/minidev/json/test/strict/TestTaillingJunk.java +++ b/json-smart/src/test/java/net/minidev/json/test/strict/TestTaillingJunk.java @@ -1,16 +1,18 @@ package net.minidev.json.test.strict; -import junit.framework.TestCase; import net.minidev.json.JSONObject; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; import net.minidev.json.test.MustThrows; +import org.junit.jupiter.api.Test; + /** * @since 1.0.7 */ public class TestTaillingJunk extends TestCase { + @Test public void testTaillingSpace() throws Exception { String s = "{\"t\":0} "; MustThrows.testInvalidJson(s, JSONParser.MODE_STRICTEST, ParseException.ERROR_UNEXPECTED_TOKEN); @@ -20,23 +22,27 @@ public void testTaillingSpace() throws Exception { assertEquals(o.get("t"), 0); } + @Test public void testTaillingSpace2() throws Exception { String s = "{\"t\":0} \r\n "; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_STRICTEST | JSONParser.ACCEPT_TAILLING_SPACE).parse(s); assertEquals(o.get("t"), 0); } + @Test public void testTaillingData() throws Exception { String s = "{\"t\":0} 0"; MustThrows.testInvalidJson(s, JSONParser.MODE_STRICTEST, ParseException.ERROR_UNEXPECTED_TOKEN, null); } + @Test public void testTaillingDataPermisive() throws Exception { String s = "{\"t\":0} 0"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); assertEquals(o.get("t"), 0); } + @Test public void testTaillingDataWithSpaceAllowed() throws Exception { String s = "{\"t\":0}{"; MustThrows.testInvalidJson(s, JSONParser.MODE_STRICTEST | JSONParser.ACCEPT_TAILLING_SPACE, ParseException.ERROR_UNEXPECTED_TOKEN); diff --git a/json-smart/src/test/java/net/minidev/json/test/strict/TestZeroLead.java b/json-smart/src/test/java/net/minidev/json/test/strict/TestZeroLead.java index 0ed53e00..9e5162c2 100644 --- a/json-smart/src/test/java/net/minidev/json/test/strict/TestZeroLead.java +++ b/json-smart/src/test/java/net/minidev/json/test/strict/TestZeroLead.java @@ -1,6 +1,5 @@ package net.minidev.json.test.strict; -import junit.framework.TestCase; import net.minidev.json.JSONArray; import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; @@ -8,11 +7,14 @@ import net.minidev.json.parser.ParseException; import net.minidev.json.test.MustThrows; +import org.junit.jupiter.api.Test; + /** * @since 1.0.7 */ -public class TestZeroLead extends TestCase { +public class TestZeroLead { + @Test public void test0O() throws Exception { String s = "{\"t\":0}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_RFC4627).parse(s); @@ -20,6 +22,7 @@ public void test0O() throws Exception { JSONValue.parseWithException(s); } + @Test public void test0A() throws Exception { String s = "[0]"; JSONArray o = (JSONArray) new JSONParser(JSONParser.MODE_RFC4627).parse(s); @@ -27,6 +30,7 @@ public void test0A() throws Exception { JSONValue.parseWithException(s); } + @Test public void test0Float() throws Exception { String s = "[00.0]"; // strict @@ -35,6 +39,7 @@ public void test0Float() throws Exception { JSONValue.parseWithException(s); } + @Test public void test01Float() throws Exception { String s = "[01.0]"; // strict @@ -43,6 +48,7 @@ public void test01Float() throws Exception { JSONValue.parseWithException(s); } + @Test public void test00001() throws Exception { String s = "{\"t\":00001}"; JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); @@ -50,21 +56,10 @@ public void test00001() throws Exception { JSONValue.parseWithException(s); } + @Test public void test00001Strict() throws Exception { String s = "{\"t\":00001}"; MustThrows.testStrictInvalidJson(s, ParseException.ERROR_UNEXPECTED_LEADING_0); JSONValue.parseWithException(s); } - - // disable in 1.1 - // public void testDup() throws Exception { - // String s = "{'t':1,'t':2}"; - // try { - // new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s); - // assertEquals("Should Stack", ""); - // } catch (ParseException e) { - // assertEquals(ParseException.ERROR_UNEXPECTED_DUPLICATE_KEY, e.getErrorType()); - // } - // } - } diff --git a/json-smart/src/test/java/net/minidev/json/test/writer/TestWriteFeatures.java b/json-smart/src/test/java/net/minidev/json/test/writer/TestWriteFeatures.java index cf99e67b..5f20a917 100644 --- a/json-smart/src/test/java/net/minidev/json/test/writer/TestWriteFeatures.java +++ b/json-smart/src/test/java/net/minidev/json/test/writer/TestWriteFeatures.java @@ -1,11 +1,11 @@ package net.minidev.json.test.writer; -import junit.framework.TestCase; import net.minidev.json.JSONStyle; import net.minidev.json.JSONValue; public class TestWriteFeatures extends TestCase { + @Test public void testS1() throws Exception { Beans beans = new Beans(); String s = JSONValue.toJSONString(beans, JSONStyle.MAX_COMPRESS); diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestAdvancedMapper.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestAdvancedMapper.java index 71e4abac..f60eaaeb 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestAdvancedMapper.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestAdvancedMapper.java @@ -3,13 +3,13 @@ import java.text.SimpleDateFormat; import java.util.Date; -import junit.framework.TestCase; import net.minidev.asm.BeansAccessConfig; import net.minidev.json.JSONValue; public class TestAdvancedMapper extends TestCase { public static SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + @Test public void testCustomBean() throws Exception { BeansAccessConfig.addTypeMapper(Object.class, MyLocalConverterot.class); String s = "{'val':2,'date':'19/04/2010'}"; diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestCustomMappingInstant.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestCustomMappingInstant.java index 49884c64..1076f58e 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestCustomMappingInstant.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestCustomMappingInstant.java @@ -2,11 +2,12 @@ import java.io.IOException; -import junit.framework.TestCase; import net.minidev.json.JSONStyle; import net.minidev.json.JSONValue; import net.minidev.json.parser.ParseException; +import org.junit.jupiter.api.Test; + /** * Test JDK 8+ java.time.Instant * @@ -15,8 +16,9 @@ * @author uriel * */ -public class TestCustomMappingInstant extends TestCase { +public class TestCustomMappingInstant { + @Test public void test_dummy() throws IOException { @SuppressWarnings("unused") ParseException e = null; diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestDate.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestDate.java index d515dda8..1d676228 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestDate.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestDate.java @@ -1,9 +1,11 @@ package net.minidev.json.testMapping; -import junit.framework.TestCase; import net.minidev.json.JSONValue; -public class TestDate extends TestCase { +import org.junit.jupiter.api.Test; + +public class TestDate { + @Test public void testBooleans() throws Exception { String s = "[true,true,false]"; boolean[] bs = new boolean[] { true, true, false }; @@ -11,6 +13,7 @@ public void testBooleans() throws Exception { assertEquals(s, s2); } + @Test public void testInts() throws Exception { String s = "[1,2,3]"; int[] bs = new int[] { 1, 2, 3 }; diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestFieldRename.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestFieldRename.java index 201206f0..936228ea 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestFieldRename.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestFieldRename.java @@ -1,8 +1,9 @@ package net.minidev.json.testMapping; -import junit.framework.TestCase; import net.minidev.json.JSONValue; +import org.junit.jupiter.api.Test; + public class TestFieldRename extends TestCase { public static class TRen { @@ -10,6 +11,7 @@ public static class TRen { public String default_; } + @Test public void testRemap() throws Exception { String text = "{'new':'foo','default':'bar'}"; JSONValue.remapField(TRen.class, "default", "default_"); diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapBeans.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapBeans.java index 54e0a71b..a2c46a4a 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapBeans.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapBeans.java @@ -2,35 +2,42 @@ import java.util.Map; -import junit.framework.TestCase; import net.minidev.json.JSONValue; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + public class TestMapBeans extends TestCase { + @Test public void testObjInts() throws Exception { String s = "{\"vint\":[1,2,3]}"; T1 r = JSONValue.parse(s, T1.class); assertEquals(3, r.vint[2]); } + @Test public void testObjIntKey() throws Exception { String s = "{\"data\":{\"1\":\"toto\"}}"; T2 r = JSONValue.parse(s, T2.class); assertEquals("toto", r.data.get(1)); } + @Test public void testObjEnumKey() throws Exception { String s = "{\"data\":{\"red\":10}}"; T3 r = JSONValue.parse(s, T3.class); assertEquals((Integer)10, r.data.get(ColorEnum.red)); } + @Test public void testObjBool1() throws Exception { String s = "{\"data\":true}"; T4 r = JSONValue.parse(s, T4.class); assertEquals(true, r.data); } + @Test public void testObjBool2() throws Exception { String s = "{\"data\":true}"; T5 r = JSONValue.parse(s, T5.class); diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPrimArrays.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPrimArrays.java index 0dabfd92..7f272af2 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPrimArrays.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPrimArrays.java @@ -1,15 +1,18 @@ package net.minidev.json.testMapping; -import junit.framework.TestCase; import net.minidev.json.JSONValue; +import org.junit.jupiter.api.Test; + public class TestMapPrimArrays extends TestCase { + @Test public void testInts() throws Exception { String s = "[1,2,3]"; int[] r = JSONValue.parse(s, int[].class); assertEquals(3, r[2]); } + @Test public void testIntss() throws Exception { String s = "[[1],[2],[3,4]]"; int[][] r = JSONValue.parse(s, int[][].class); @@ -17,24 +20,28 @@ public void testIntss() throws Exception { assertEquals(4, r[2][1]); } + @Test public void testLongs() throws Exception { String s = "[1,2,3]"; long[] r = JSONValue.parse(s, long[].class); assertEquals(3, r[2]); } + @Test public void testFloat() throws Exception { String s = "[1.2,22.4,3.14]"; float[] r = JSONValue.parse(s, float[].class); assertEquals(3.14F, r[2]); } + @Test public void testDouble() throws Exception { String s = "[1.2,22.4,3.14]"; double[] r = JSONValue.parse(s, double[].class); assertEquals(3.14, r[2]); } + @Test public void testBooleans() throws Exception { String s = "[true,true,false]"; boolean[] r = JSONValue.parse(s, boolean[].class); diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic.java index ba046aa9..18dd2b6b 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic.java @@ -3,10 +3,12 @@ import java.util.Map; import java.util.TreeMap; -import junit.framework.TestCase; import net.minidev.json.JSONValue; +import org.junit.jupiter.api.Test; + public class TestMapPublic extends TestCase { + @Test public void testObjInts() throws Exception { String s = "{\"vint\":[1,2,3]}"; T1 r = JSONValue.parse(s, T1.class); @@ -15,6 +17,7 @@ public void testObjInts() throws Exception { String MultiTyepJson = "{\"name\":\"B\",\"age\":120,\"cost\":12000,\"flag\":3,\"valid\":true,\"f\":1.2,\"d\":1.5,\"l\":12345678912345}"; + @Test public void testObjMixte() throws Exception { T2 r = JSONValue.parse(MultiTyepJson, T2.class); assertEquals("B", r.name); @@ -27,6 +30,7 @@ public void testObjMixte() throws Exception { assertEquals(12345678912345L, r.l); } + @Test public void testObjMixtePrim() throws Exception { T3 r = JSONValue.parse(MultiTyepJson, T3.class); assertEquals("B", r.name); diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic2.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic2.java index 7e15a4b6..47695d66 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic2.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic2.java @@ -3,17 +3,20 @@ import java.util.Map; import java.util.TreeMap; -import junit.framework.TestCase; import net.minidev.json.JSONValue; -public class TestMapPublic2 extends TestCase { +import org.junit.jupiter.api.Test; + +public class TestMapPublic2 { String s = "{\"data\":{\"a\":\"b\"}}"; + @Test public void testMapPublicInterface() throws Exception { T5 r = JSONValue.parse(s, T5.class); assertEquals(1, r.data.size()); } + @Test public void testMapPublicMapClass() throws Exception { T6 r = JSONValue.parse(s, T6.class); assertEquals(1, r.data.size()); diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestSerPrimArrays.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestSerPrimArrays.java index 03e5b35a..37eab2ac 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestSerPrimArrays.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestSerPrimArrays.java @@ -3,15 +3,17 @@ import java.text.SimpleDateFormat; import java.util.Date; -import junit.framework.TestCase; import net.minidev.json.JSONValue; -public class TestSerPrimArrays extends TestCase { +import org.junit.jupiter.api.Test; + +public class TestSerPrimArrays { SimpleDateFormat sdf; String testDateString; Date testDate; + @Test public TestSerPrimArrays() { try { sdf = new SimpleDateFormat("dd/MM/yyyy"); @@ -22,12 +24,14 @@ public TestSerPrimArrays() { } + @Test public void testDate() throws Exception { String s = "'" + testDateString + "'"; Date dt = JSONValue.parse(s, Date.class); assertEquals(dt, this.testDate); } + @Test public void testDtObj() throws Exception { String s = "{date:'" + testDateString + "'}"; ADate dt = JSONValue.parse(s, ADate.class); diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestUpdater.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestUpdater.java index bd3c0759..c8323e4a 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestUpdater.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestUpdater.java @@ -1,14 +1,16 @@ package net.minidev.json.testMapping; -import junit.framework.TestCase; import net.minidev.json.JSONValue; import net.minidev.json.testMapping.TestMapPublic.T123; import net.minidev.json.testMapping.TestMapPublic.T1; import net.minidev.json.testMapping.TestMapPublic.T2; import net.minidev.json.testMapping.TestMapPublic.T3; +import org.junit.jupiter.api.Test; + public class TestUpdater extends TestCase { + @Test public void testUpdate1() throws Exception { T3 t3 = new T3(); t3.age = 20; @@ -22,6 +24,7 @@ public void testUpdate1() throws Exception { assertEquals((Long) 120000L, t3.l); } + @Test public void testUpdateExistingBeans() throws Exception { T123 t123 = new T123(); T1 t1 = new T1(); @@ -39,6 +42,7 @@ public void testUpdateExistingBeans() throws Exception { assertEquals(res.t3.name, "valueT3"); } + @Test public void testUpdateNullBean() throws Exception { T123 t123 = new T123(); T1 t1 = new T1(); diff --git a/pom.xml b/pom.xml index 57b87b2b..166703c3 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 net.minidev minidev-parent - 2.4 + 2.4.1 Minidev super pom minidev common properties. pom @@ -266,9 +266,10 @@ ${project.version} - junit - junit - 4.13.1 + org.junit.jupiter + junit-jupiter-api + 5.7.1 + test From 0605323f599790920ac1205ffb60b1018954260a Mon Sep 17 00:00:00 2001 From: urielch Date: Sat, 3 Apr 2021 18:40:11 +0300 Subject: [PATCH 2/5] upgrade to junit 5 in progress --- .vscode/settings.json | 3 +++ json-smart-action/pom.xml | 5 +++++ .../json/test/actions/ElementRemoverTest.java | 4 +--- .../json/test/actions/KeysPrintActionTest.java | 3 ++- .../json/test/actions/PathLocatorTest.java | 15 +++++++++------ .../json/test/actions/PathRemoverTest.java | 1 + .../json/test/actions/PathReplicatorTest.java | 8 ++++---- .../json/test/actions/PathsRetainerTest.java | 7 ++++++- .../minidev/json/test/actions/TreePathTest.java | 7 ++++--- .../net/minidev/json/test/JSONSimpleTest.java | 2 ++ .../java/net/minidev/json/test/MustThrows.java | 7 +++++-- .../json/test/TestBigDigitUnrestricted.java | 6 ++++-- .../java/net/minidev/json/test/TestBigValue.java | 2 ++ .../net/minidev/json/test/TestCompressor.java | 4 +++- .../minidev/json/test/TestCompressorFlags.java | 4 +++- .../net/minidev/json/test/TestFloatStrict.java | 8 ++++++-- .../test/java/net/minidev/json/test/TestInts.java | 4 ++++ .../net/minidev/json/test/TestInvalidNumber.java | 13 +++++++++---- .../java/net/minidev/json/test/TestKeyword.java | 3 ++- .../test/java/net/minidev/json/test/TestMisc.java | 2 ++ .../test/java/net/minidev/json/test/TestNavi.java | 5 +++-- .../minidev/json/test/TestNumberPrecision.java | 2 ++ .../java/net/minidev/json/test/TestStrict.java | 4 +++- .../java/net/minidev/json/test/TestString.java | 4 +++- .../net/minidev/json/test/TestStringStrict.java | 4 +++- .../java/net/minidev/json/test/TestTruncated.java | 2 +- .../json/test/strict/TestExcessiveComma.java | 2 +- .../minidev/json/test/strict/TestSpecialChar.java | 6 +++++- .../json/test/strict/TestTaillingJunk.java | 4 +++- .../minidev/json/test/strict/TestZeroLead.java | 2 ++ .../json/test/writer/TestWriteFeatures.java | 6 +++++- .../json/testMapping/TestAdvancedMapper.java | 6 +++++- .../net/minidev/json/testMapping/TestDate.java | 2 ++ .../minidev/json/testMapping/TestFieldRename.java | 5 ++++- .../minidev/json/testMapping/TestMapBeans.java | 2 +- .../json/testMapping/TestMapPrimArrays.java | 4 +++- .../minidev/json/testMapping/TestMapPublic.java | 4 +++- .../minidev/json/testMapping/TestMapPublic2.java | 2 ++ .../json/testMapping/TestSerPrimArrays.java | 3 ++- .../net/minidev/json/testMapping/TestUpdater.java | 4 +++- pom.xml | 6 ++++++ 41 files changed, 139 insertions(+), 48 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..c5f3f6b9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive" +} \ No newline at end of file diff --git a/json-smart-action/pom.xml b/json-smart-action/pom.xml index 46f9ef4a..49e4b505 100644 --- a/json-smart-action/pom.xml +++ b/json-smart-action/pom.xml @@ -52,6 +52,11 @@ junit-jupiter-api test + + org.junit.jupiter + junit-jupiter-params + test + net.minidev json-smart diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java index 27ac321f..c68c6afc 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java @@ -4,14 +4,12 @@ import net.minidev.json.JSONValue; import net.minidev.json.actions.ElementRemover; import net.minidev.json.parser.ParseException; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; import org.junit.jupiter.api.Test; import java.util.*; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; /** * Tests {@link ElementRemover} diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/KeysPrintActionTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/KeysPrintActionTest.java index 20f5512b..b04b4d22 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/KeysPrintActionTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/KeysPrintActionTest.java @@ -1,11 +1,12 @@ package net.minidev.json.test.actions; +import org.junit.jupiter.api.Test; + import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; import net.minidev.json.actions.traverse.JSONTraverser; import net.minidev.json.actions.traverse.KeysPrintAction; import net.minidev.json.parser.ParseException; -import org.junit.Test; /** * @author adoneitan@gmail.com diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java index 96c89787..613e7ead 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java @@ -5,29 +5,32 @@ import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; import net.minidev.json.parser.ParseException; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +// import org.junit.Test; +// import org.junit.runner.RunWith; +// import org.junit.runners.Parameterized; + +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; -import static org.junit.Assert.assertEquals; - import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; /** * @author adoneitan@gmail.com */ -@RunWith(Parameterized.class) +// @ExtendWith(Parameterized.class) public class PathLocatorTest { private String jsonToSearch; private Object keysToFind; private String[] expectedFound; + @ParameterizedTest public PathLocatorTest(String jsonToSearch, Object keysToFind, String[] expectedFound) { this.jsonToSearch = jsonToSearch; diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java index 6802647c..679a1ed2 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java @@ -15,6 +15,7 @@ import java.util.List; import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java index f45b9294..2778432b 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java @@ -4,8 +4,10 @@ import net.minidev.json.JSONArray; import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +// import org.junit.runner.RunWith; +// import org.junit.runners.Parameterized; + +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Arrays; @@ -14,8 +16,6 @@ import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; - /** * @author adoneitan@gmail.com */ diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java index a045dc1b..d2c87da1 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java @@ -16,8 +16,11 @@ import java.util.List; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; /** * @author adoneitan@gmail.com @@ -28,13 +31,15 @@ public class PathsRetainerTest { private Object keyToKeep; private String expectedReducedJson; + @ParameterizedTest + @MethodSource("params") public PathsRetainerTest(String jsonToReduce, Object keyToKeep, String expectedReducedJson) { this.jsonToReduce = jsonToReduce; this.keyToKeep = keyToKeep; this.expectedReducedJson = expectedReducedJson; } - @Parameterized.Parameters + // @Parameterized.Parameters public static Collection params() { return Arrays .asList(new Object[][] { diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/TreePathTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/TreePathTest.java index 4a890f39..617b6a8d 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/TreePathTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/TreePathTest.java @@ -3,10 +3,11 @@ import net.minidev.json.actions.path.DotDelimiter; import net.minidev.json.actions.path.TreePath; import net.minidev.json.actions.path.PathDelimiter; -import org.junit.Test; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; /** * @author adoneitan@gmail.com diff --git a/json-smart/src/test/java/net/minidev/json/test/JSONSimpleTest.java b/json-smart/src/test/java/net/minidev/json/test/JSONSimpleTest.java index 96e5d3db..875f4261 100644 --- a/json-smart/src/test/java/net/minidev/json/test/JSONSimpleTest.java +++ b/json-smart/src/test/java/net/minidev/json/test/JSONSimpleTest.java @@ -3,6 +3,8 @@ import net.minidev.json.JSONArray; import net.minidev.json.parser.JSONParser; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; public class JSONSimpleTest { diff --git a/json-smart/src/test/java/net/minidev/json/test/MustThrows.java b/json-smart/src/test/java/net/minidev/json/test/MustThrows.java index 528d95f6..2c844f4e 100644 --- a/json-smart/src/test/java/net/minidev/json/test/MustThrows.java +++ b/json-smart/src/test/java/net/minidev/json/test/MustThrows.java @@ -3,6 +3,9 @@ import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + import org.junit.jupiter.api.Test; public class MustThrows { @@ -30,11 +33,11 @@ public static void testInvalidJson(String json, int permissifMode, int execption p.parse(json); else p.parse(json, cls); - TestCase.assertFalse("Exception Should Occure parsing:" + json, true); + assertFalse(true, "Exception Should Occure parsing:" + json); } catch (ParseException e) { if (execptionType == -1) execptionType = e.getErrorType(); - TestCase.assertEquals(execptionType, e.getErrorType()); + assertEquals(execptionType, e.getErrorType()); } } diff --git a/json-smart/src/test/java/net/minidev/json/test/TestBigDigitUnrestricted.java b/json-smart/src/test/java/net/minidev/json/test/TestBigDigitUnrestricted.java index 894d7c72..8619a113 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestBigDigitUnrestricted.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestBigDigitUnrestricted.java @@ -1,5 +1,7 @@ package net.minidev.json.test; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.math.BigDecimal; import net.minidev.json.JSONObject; @@ -16,7 +18,7 @@ public void testRestrictedBigDigit() throws Exception { String json = VALID_DOUBLE_JSON[0]; JSONObject obj = (JSONObject) p.parse(json); Object value = obj.get("v"); - assertEquals("Should not Store this big number as a double", Double.class, value.getClass()); + assertEquals(Double.class, value.getClass(), "Should not Store this big number as a double"); } @Test @@ -25,7 +27,7 @@ public void testUnrestrictedBigDigit() throws Exception { String json = VALID_DOUBLE_JSON[0]; JSONObject obj = (JSONObject) p.parse(json); Object value = obj.get("v"); - assertEquals("Should not Store this big number as a double", BigDecimal.class, value.getClass()); + assertEquals(BigDecimal.class, value.getClass(), "Should not Store this big number as a double"); } } diff --git a/json-smart/src/test/java/net/minidev/json/test/TestBigValue.java b/json-smart/src/test/java/net/minidev/json/test/TestBigValue.java index 890231d8..1184fc90 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestBigValue.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestBigValue.java @@ -1,5 +1,7 @@ package net.minidev.json.test; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.math.BigDecimal; import java.math.BigInteger; import java.util.HashMap; diff --git a/json-smart/src/test/java/net/minidev/json/test/TestCompressor.java b/json-smart/src/test/java/net/minidev/json/test/TestCompressor.java index 94456cc5..5c0b9b40 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestCompressor.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestCompressor.java @@ -2,9 +2,11 @@ import net.minidev.json.JSONValue; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; -public class TestCompressor extends TestCase { +public class TestCompressor { @Test public void testCompressor() { String j = "{'a':{'b':'c','d':'e'},f:[1,2,'XYZ']}".replace('\'', '"'); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestCompressorFlags.java b/json-smart/src/test/java/net/minidev/json/test/TestCompressorFlags.java index 36a3b31b..aaeb79cf 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestCompressorFlags.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestCompressorFlags.java @@ -4,6 +4,8 @@ import net.minidev.json.JSONStyle; import net.minidev.json.JSONValue; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; /** @@ -12,7 +14,7 @@ * @author Uriel Chemouni <uchemouni@gmail.com> * */ -public class TestCompressorFlags extends TestCase { +public class TestCompressorFlags { @Test public void testProtect() throws Exception { diff --git a/json-smart/src/test/java/net/minidev/json/test/TestFloatStrict.java b/json-smart/src/test/java/net/minidev/json/test/TestFloatStrict.java index 3625f270..43a96918 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestFloatStrict.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestFloatStrict.java @@ -1,9 +1,13 @@ package net.minidev.json.test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + import net.minidev.json.JSONObject; import net.minidev.json.parser.JSONParser; -public class TestFloatStrict extends TestCase { +public class TestFloatStrict { @Test public void testFloat() throws Exception { @@ -12,7 +16,7 @@ public void testFloat() throws Exception { Double val = Double.valueOf(s.trim()); JSONObject obj = (JSONObject) new JSONParser(JSONParser.MODE_RFC4627).parse(json); Object value = obj.get("v"); - assertEquals("Should be parse as double", val, value); + assertEquals(val, value, "Should be parse as double"); } } diff --git a/json-smart/src/test/java/net/minidev/json/test/TestInts.java b/json-smart/src/test/java/net/minidev/json/test/TestInts.java index 7754f124..a1a061f0 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestInts.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestInts.java @@ -1,8 +1,12 @@ package net.minidev.json.test; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.math.BigDecimal; import java.math.BigInteger; +import org.junit.jupiter.api.Test; + import net.minidev.json.JSONObject; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; diff --git a/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java b/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java index 48c8d3b4..b7953d88 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java @@ -1,5 +1,10 @@ package net.minidev.json.test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + +import org.junit.jupiter.api.Test; + import net.minidev.json.JSONObject; import net.minidev.json.JSONStyle; import net.minidev.json.JSONValue; @@ -8,7 +13,7 @@ * @author uriel * */ -public class TestInvalidNumber extends TestCase { +public class TestInvalidNumber { private void validFloatAsFloat(String test) { JSONObject o = new JSONObject(); @@ -54,21 +59,21 @@ public void testF4() { public void testCVE_2021_27568() { try { JSONValue.parseWithException("{a:-.}"); - assertFalse("should Throws Exception before", true); + assertFalse(true, "should Throws Exception before"); } catch (Exception e) { assertEquals("should throw EOF", e.getMessage(), "Unexpected token -. at position 5."); } try { JSONValue.parseWithException("{a:2e+}"); - assertFalse("should Throws Exception before", true); + assertFalse(true, "should Throws Exception before"); } catch (Exception e) { assertEquals("should throw EOF", e.getMessage(), "Unexpected token 2e+ at position 6."); } try { JSONValue.parseWithException("{a:[45e-}"); - assertFalse("should Throws Exception before", true); + assertFalse(true, "should Throws Exception before"); } catch (Exception e) { assertEquals("should throw EOF", e.getMessage(), "Unexpected End Of File position 8: EOF"); } diff --git a/json-smart/src/test/java/net/minidev/json/test/TestKeyword.java b/json-smart/src/test/java/net/minidev/json/test/TestKeyword.java index 0efebdbb..f55265e3 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestKeyword.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestKeyword.java @@ -6,8 +6,9 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; -public class TestKeyword extends TestCase { +public class TestKeyword { @Test public void testBool() throws Exception { diff --git a/json-smart/src/test/java/net/minidev/json/test/TestMisc.java b/json-smart/src/test/java/net/minidev/json/test/TestMisc.java index 41dc19a0..9fe0a002 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestMisc.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestMisc.java @@ -4,6 +4,8 @@ import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; public class TestMisc { diff --git a/json-smart/src/test/java/net/minidev/json/test/TestNavi.java b/json-smart/src/test/java/net/minidev/json/test/TestNavi.java index 304a6d66..63345d20 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestNavi.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestNavi.java @@ -5,8 +5,9 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class TestNavi extends TestCase { +public class TestNavi { @Test public void testNaviWrite() { JSONNavi nav = JSONNavi.newInstance(); @@ -35,7 +36,7 @@ public void testNaviRead() { String json = "{name:foo,str:null,ar:[1,2,3,4]}"; JSONNavi nav = new JSONNavi(json, JSONAwareEx.class); nav.at(5); - assertTrue("Navigator should be in error stat", nav.hasFailure()); + assertTrue(nav.hasFailure(), "Navigator should be in error stat"); nav.root(); assertEquals(3, nav.at("ar").at(2).asInt()); nav.up(2); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestNumberPrecision.java b/json-smart/src/test/java/net/minidev/json/test/TestNumberPrecision.java index 7fd97774..62c91ee3 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestNumberPrecision.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestNumberPrecision.java @@ -1,5 +1,7 @@ package net.minidev.json.test; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.math.BigInteger; import net.minidev.json.JSONArray; diff --git a/json-smart/src/test/java/net/minidev/json/test/TestStrict.java b/json-smart/src/test/java/net/minidev/json/test/TestStrict.java index b2e56dfd..b41ae73b 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestStrict.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestStrict.java @@ -4,9 +4,11 @@ import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; -public class TestStrict extends TestCase { +public class TestStrict { @Test public void testS1() throws Exception { diff --git a/json-smart/src/test/java/net/minidev/json/test/TestString.java b/json-smart/src/test/java/net/minidev/json/test/TestString.java index b7324208..b9254868 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestString.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestString.java @@ -4,9 +4,11 @@ import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; -public class TestString extends TestCase { +public class TestString { @Test public void testS0() throws Exception { diff --git a/json-smart/src/test/java/net/minidev/json/test/TestStringStrict.java b/json-smart/src/test/java/net/minidev/json/test/TestStringStrict.java index 13830454..c8fb77f7 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestStringStrict.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestStringStrict.java @@ -1,8 +1,10 @@ package net.minidev.json.test; +import org.junit.jupiter.api.Test; + import net.minidev.json.parser.ParseException; -public class TestStringStrict extends TestCase { +public class TestStringStrict { @Test public void testS1() throws Exception { diff --git a/json-smart/src/test/java/net/minidev/json/test/TestTruncated.java b/json-smart/src/test/java/net/minidev/json/test/TestTruncated.java index e194c089..8c6ea839 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestTruncated.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestTruncated.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; -public class TestTruncated extends TestCase { +public class TestTruncated { @Test public void testS1() throws Exception { diff --git a/json-smart/src/test/java/net/minidev/json/test/strict/TestExcessiveComma.java b/json-smart/src/test/java/net/minidev/json/test/strict/TestExcessiveComma.java index 105fb4bd..22a613fb 100644 --- a/json-smart/src/test/java/net/minidev/json/test/strict/TestExcessiveComma.java +++ b/json-smart/src/test/java/net/minidev/json/test/strict/TestExcessiveComma.java @@ -6,7 +6,7 @@ import org.junit.jupiter.api.Test; -public class TestExcessiveComma extends TestCase { +public class TestExcessiveComma { @Test public void testExcessiveComma1A() throws Exception { String s = "[1,2,,3]"; diff --git a/json-smart/src/test/java/net/minidev/json/test/strict/TestSpecialChar.java b/json-smart/src/test/java/net/minidev/json/test/strict/TestSpecialChar.java index 87c5379d..3041332f 100644 --- a/json-smart/src/test/java/net/minidev/json/test/strict/TestSpecialChar.java +++ b/json-smart/src/test/java/net/minidev/json/test/strict/TestSpecialChar.java @@ -1,5 +1,9 @@ package net.minidev.json.test.strict; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + import net.minidev.json.JSONArray; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; @@ -10,7 +14,7 @@ * @author uriel * */ -public class TestSpecialChar extends TestCase { +public class TestSpecialChar { @Test public void testSpecial127() throws Exception { diff --git a/json-smart/src/test/java/net/minidev/json/test/strict/TestTaillingJunk.java b/json-smart/src/test/java/net/minidev/json/test/strict/TestTaillingJunk.java index df9db024..c710b7f0 100644 --- a/json-smart/src/test/java/net/minidev/json/test/strict/TestTaillingJunk.java +++ b/json-smart/src/test/java/net/minidev/json/test/strict/TestTaillingJunk.java @@ -5,12 +5,14 @@ import net.minidev.json.parser.ParseException; import net.minidev.json.test.MustThrows; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; /** * @since 1.0.7 */ -public class TestTaillingJunk extends TestCase { +public class TestTaillingJunk { @Test public void testTaillingSpace() throws Exception { diff --git a/json-smart/src/test/java/net/minidev/json/test/strict/TestZeroLead.java b/json-smart/src/test/java/net/minidev/json/test/strict/TestZeroLead.java index 9e5162c2..723e6139 100644 --- a/json-smart/src/test/java/net/minidev/json/test/strict/TestZeroLead.java +++ b/json-smart/src/test/java/net/minidev/json/test/strict/TestZeroLead.java @@ -7,6 +7,8 @@ import net.minidev.json.parser.ParseException; import net.minidev.json.test.MustThrows; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; /** diff --git a/json-smart/src/test/java/net/minidev/json/test/writer/TestWriteFeatures.java b/json-smart/src/test/java/net/minidev/json/test/writer/TestWriteFeatures.java index 5f20a917..21d0511a 100644 --- a/json-smart/src/test/java/net/minidev/json/test/writer/TestWriteFeatures.java +++ b/json-smart/src/test/java/net/minidev/json/test/writer/TestWriteFeatures.java @@ -1,9 +1,13 @@ package net.minidev.json.test.writer; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + import net.minidev.json.JSONStyle; import net.minidev.json.JSONValue; -public class TestWriteFeatures extends TestCase { +public class TestWriteFeatures { @Test public void testS1() throws Exception { diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestAdvancedMapper.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestAdvancedMapper.java index f60eaaeb..d08ebc59 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestAdvancedMapper.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestAdvancedMapper.java @@ -1,12 +1,16 @@ package net.minidev.json.testMapping; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.text.SimpleDateFormat; import java.util.Date; +import org.junit.jupiter.api.Test; + import net.minidev.asm.BeansAccessConfig; import net.minidev.json.JSONValue; -public class TestAdvancedMapper extends TestCase { +public class TestAdvancedMapper { public static SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); @Test diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestDate.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestDate.java index 1d676228..b4a386bf 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestDate.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestDate.java @@ -2,6 +2,8 @@ import net.minidev.json.JSONValue; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; public class TestDate { diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestFieldRename.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestFieldRename.java index 936228ea..d5a06631 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestFieldRename.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestFieldRename.java @@ -2,9 +2,12 @@ import net.minidev.json.JSONValue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.jupiter.api.Test; -public class TestFieldRename extends TestCase { +public class TestFieldRename { public static class TRen { public String new_; diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapBeans.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapBeans.java index a2c46a4a..6faaa205 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapBeans.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapBeans.java @@ -7,7 +7,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; -public class TestMapBeans extends TestCase { +public class TestMapBeans { @Test public void testObjInts() throws Exception { diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPrimArrays.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPrimArrays.java index 7f272af2..890c1b9c 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPrimArrays.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPrimArrays.java @@ -2,9 +2,11 @@ import net.minidev.json.JSONValue; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; -public class TestMapPrimArrays extends TestCase { +public class TestMapPrimArrays { @Test public void testInts() throws Exception { String s = "[1,2,3]"; diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic.java index 18dd2b6b..670f8828 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic.java @@ -1,5 +1,7 @@ package net.minidev.json.testMapping; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.util.Map; import java.util.TreeMap; @@ -7,7 +9,7 @@ import org.junit.jupiter.api.Test; -public class TestMapPublic extends TestCase { +public class TestMapPublic { @Test public void testObjInts() throws Exception { String s = "{\"vint\":[1,2,3]}"; diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic2.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic2.java index 47695d66..b0a19b92 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic2.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestMapPublic2.java @@ -1,5 +1,7 @@ package net.minidev.json.testMapping; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.util.Map; import java.util.TreeMap; diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestSerPrimArrays.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestSerPrimArrays.java index 37eab2ac..5c3c67bd 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestSerPrimArrays.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestSerPrimArrays.java @@ -1,5 +1,7 @@ package net.minidev.json.testMapping; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.text.SimpleDateFormat; import java.util.Date; @@ -13,7 +15,6 @@ public class TestSerPrimArrays { String testDateString; Date testDate; - @Test public TestSerPrimArrays() { try { sdf = new SimpleDateFormat("dd/MM/yyyy"); diff --git a/json-smart/src/test/java/net/minidev/json/testMapping/TestUpdater.java b/json-smart/src/test/java/net/minidev/json/testMapping/TestUpdater.java index c8323e4a..3f279f01 100644 --- a/json-smart/src/test/java/net/minidev/json/testMapping/TestUpdater.java +++ b/json-smart/src/test/java/net/minidev/json/testMapping/TestUpdater.java @@ -6,9 +6,11 @@ import net.minidev.json.testMapping.TestMapPublic.T2; import net.minidev.json.testMapping.TestMapPublic.T3; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; -public class TestUpdater extends TestCase { +public class TestUpdater { @Test public void testUpdate1() throws Exception { diff --git a/pom.xml b/pom.xml index 166703c3..2363b85f 100644 --- a/pom.xml +++ b/pom.xml @@ -271,6 +271,12 @@ 5.7.1 test + + org.junit.jupiter + junit-jupiter-params + 5.7.1 + test + From 6d98b915bfc35e1264864e6789d828e6e46f0bb9 Mon Sep 17 00:00:00 2001 From: urielch Date: Sat, 3 Apr 2021 18:58:01 +0300 Subject: [PATCH 3/5] fix some warning / errors --- .../main/java/net/minidev/asm/ASMUtil.java | 27 +++++++++++++++++-- .../test/java/net/minidev/asm/ASMTest.java | 4 +-- .../net/minidev/json/actions/PathLocator.java | 1 + .../minidev/json/actions/PathsRetainer.java | 1 + .../json/actions/navigate/TreeNavigator.java | 10 ++++--- .../json/actions/traverse/TreeTraverser.java | 6 +++-- .../json/test/actions/PathLocatorTest.java | 1 + .../json/test/actions/PathRemoverTest.java | 7 +++-- .../json/test/actions/PathReplicatorTest.java | 2 ++ .../json/test/actions/PathsRetainerTest.java | 10 +++---- .../main/java/net/minidev/json/JSONValue.java | 22 +++++++++++++-- .../net/minidev/json/writer/JsonReaderI.java | 8 +++--- .../minidev/json/test/TestInvalidNumber.java | 10 +++---- 13 files changed, 79 insertions(+), 30 deletions(-) diff --git a/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java b/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java index b5752d9c..ed25b7eb 100644 --- a/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java +++ b/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java @@ -34,6 +34,9 @@ public class ASMUtil { /** * Append the call of proper autoboxing method for the given primitive type. + * + * @param mv MethodVisitor + * @param clz expected class */ public static void autoBoxing(MethodVisitor mv, Class clz) { autoBoxing(mv, Type.getType(clz)); @@ -69,6 +72,9 @@ static public Accessor[] getAccessors(Class type, FieldFilter filter) { /** * Append the call of proper autoboxing method for the given primitive type. + * + * @param mv MethodVisitor + * @param fieldType expected class */ protected static void autoBoxing(MethodVisitor mv, Type fieldType) { switch (fieldType.getSort()) { @@ -101,6 +107,9 @@ protected static void autoBoxing(MethodVisitor mv, Type fieldType) { /** * Append the call of proper extract primitive type of an boxed object. + * + * @param mv MethodVisitor + * @param fieldType expected class */ protected static void autoUnBoxing1(MethodVisitor mv, Type fieldType) { switch (fieldType.getSort()) { @@ -147,6 +156,9 @@ protected static void autoUnBoxing1(MethodVisitor mv, Type fieldType) { /** * Append the call of proper extract primitive type of an boxed object. this * method use Number interface to unbox object + * + * @param mv MethodVisitor + * @param fieldType expected class */ protected static void autoUnBoxing2(MethodVisitor mv, Type fieldType) { switch (fieldType.getSort()) { @@ -193,8 +205,7 @@ protected static void autoUnBoxing2(MethodVisitor mv, Type fieldType) { /** * return a array of new Label (used for switch/case generation) * - * @param cnt - * number of label to return + * @param cnt number of label to return */ public static Label[] newLabels(int cnt) { Label[] r = new Label[cnt]; @@ -203,6 +214,10 @@ public static Label[] newLabels(int cnt) { return r; } + /** + * @param key the field name + * @return setter name + */ public static String getSetterName(String key) { int len = key.length(); char[] b = new char[len + 3]; @@ -219,6 +234,10 @@ public static String getSetterName(String key) { return new String(b); } + /** + * @param key the field name + * @return getter name + */ public static String getGetterName(String key) { int len = key.length(); char[] b = new char[len + 3]; @@ -235,6 +254,10 @@ public static String getGetterName(String key) { return new String(b); } + /** + * @param key the boolean field name + * @return boolean getter name + */ public static String getIsName(String key) { int len = key.length(); char[] b = new char[len + 2]; diff --git a/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java b/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java index 91418441..705081c8 100644 --- a/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java +++ b/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java @@ -12,7 +12,7 @@ public class ASMTest { @Test public void testGet() throws Exception { - long T1; + // long T1; BeansAccess acBT = BeansAccess.get(BTest.class); // BeansAccess acHand = new BTestBeansAccessB(); @@ -27,7 +27,7 @@ public void testGet() throws Exception { // String clsPath = FastMap1Builder.getName(m.size()); // String clsName = clsPath.replace("/", "."); - byte[] data; + // byte[] data; // data = FastMap1Builder.dump(m.size()); // data = FastMap2Builder.dump(m); diff --git a/json-smart-action/src/main/java/net/minidev/json/actions/PathLocator.java b/json-smart-action/src/main/java/net/minidev/json/actions/PathLocator.java index f62efb51..c0a93595 100644 --- a/json-smart-action/src/main/java/net/minidev/json/actions/PathLocator.java +++ b/json-smart-action/src/main/java/net/minidev/json/actions/PathLocator.java @@ -56,6 +56,7 @@ public PathLocator with(PathDelimiter pathDelimiter) { return this; } + @SuppressWarnings("unchecked") public List locate(JSONObject object) { JSONTraverseAction action = new LocatePathsJsonAction(this.pathsToFind, pathDelimiter); JSONTraverser traversal = new JSONTraverser(action).with(pathDelimiter); diff --git a/json-smart-action/src/main/java/net/minidev/json/actions/PathsRetainer.java b/json-smart-action/src/main/java/net/minidev/json/actions/PathsRetainer.java index e641ec2e..013baa81 100644 --- a/json-smart-action/src/main/java/net/minidev/json/actions/PathsRetainer.java +++ b/json-smart-action/src/main/java/net/minidev/json/actions/PathsRetainer.java @@ -62,6 +62,7 @@ public PathsRetainer with(PathDelimiter pathDelimiter) { return this; } + @SuppressWarnings("unchecked") public JSONObject retain(JSONObject object) { /** * a path to retain which contains a path in the object, but is not itself a path in the object, diff --git a/json-smart-action/src/main/java/net/minidev/json/actions/navigate/TreeNavigator.java b/json-smart-action/src/main/java/net/minidev/json/actions/navigate/TreeNavigator.java index 7811d812..4d60353c 100644 --- a/json-smart-action/src/main/java/net/minidev/json/actions/navigate/TreeNavigator.java +++ b/json-smart-action/src/main/java/net/minidev/json/actions/navigate/TreeNavigator.java @@ -30,10 +30,10 @@ */ public class TreeNavigator, L extends List> { protected List pathsToNavigate; - protected NavigateAction action; + protected NavigateAction action; protected String pathPrefix = ""; - public TreeNavigator(NavigateAction action, List pathsToNavigate) { + public TreeNavigator(NavigateAction action, List pathsToNavigate) { if (action == null) { throw new IllegalArgumentException("NavigateAction cannot be null"); } @@ -41,12 +41,12 @@ public TreeNavigator(NavigateAction action, List pathsToNavigate) { this.pathsToNavigate = pathsToNavigate; } - public TreeNavigator with(String pathPrefix) { + public TreeNavigator with(String pathPrefix) { this.pathPrefix = pathPrefix; return this; } - public TreeNavigator(NavigateAction action, String... pathsToNavigate) { + public TreeNavigator(NavigateAction action, String... pathsToNavigate) { this(action, Arrays.asList(pathsToNavigate)); } @@ -71,6 +71,7 @@ public void nav(M object) throws Exception { action.end(); } + @SuppressWarnings("unchecked") public void nav(TreePath jp, M map) { if (map == null || !action.recurInto(jp, map)) { //source is null - navigation impossible @@ -103,6 +104,7 @@ public void nav(TreePath jp, M map) { action.recurEnd(jp, (M) map); } + @SuppressWarnings("unchecked") public void nav(TreePath jp, L list) { if (list == null || !action.recurInto(jp, (L) list)) { //list is null - navigation impossible diff --git a/json-smart-action/src/main/java/net/minidev/json/actions/traverse/TreeTraverser.java b/json-smart-action/src/main/java/net/minidev/json/actions/traverse/TreeTraverser.java index 77f9085f..f410d6f6 100644 --- a/json-smart-action/src/main/java/net/minidev/json/actions/traverse/TreeTraverser.java +++ b/json-smart-action/src/main/java/net/minidev/json/actions/traverse/TreeTraverser.java @@ -23,12 +23,12 @@ public class TreeTraverser, L extends List protected PathDelimiter delim; protected String pathPrefix = ""; - public TreeTraverser(TreeTraverseAction action, PathDelimiter delim) { + public TreeTraverser(TreeTraverseAction action, PathDelimiter delim) { this.action = action; this.delim = delim; } - public TreeTraverser with(String pathPrefix) { + public TreeTraverser with(String pathPrefix) { this.pathPrefix = pathPrefix; return this; } @@ -40,6 +40,7 @@ public void traverse(M map) { action.end(); } + @SuppressWarnings("unchecked") private void depthFirst(String fullPath, M map) { if (map == null || map.entrySet() == null || !action.recurInto(fullPath, map)) { return; @@ -66,6 +67,7 @@ private void depthFirst(String fullPath, M map) { } } + @SuppressWarnings("unchecked") private void depthFirst(String fullPath, L list) { if (!action.recurInto(fullPath, (L) list)) { return; diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java index 613e7ead..a896edbf 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java @@ -116,6 +116,7 @@ public void test() throws ParseException assertEquals(Arrays.asList(expectedFound), found); } + @SuppressWarnings("unchecked") private PathLocator switchKeyToRemove() { long m = System.currentTimeMillis(); diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java index 679a1ed2..56ab5c5d 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java @@ -5,16 +5,14 @@ import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; import net.minidev.json.parser.ParseException; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +// import org.junit.runner.RunWith; +// import org.junit.runners.Parameterized; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; -import static org.junit.Assert.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; @@ -89,6 +87,7 @@ public void test() throws ParseException assertEquals(expectedObject, objectToClean); } + @SuppressWarnings("unchecked") private PathRemover switchKeyToRemove() { long m = System.currentTimeMillis(); diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java index 2778432b..168951cd 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java @@ -143,6 +143,7 @@ public void test2() throws Exception { assertEquals(expectedObj, copied); } + @SuppressWarnings("unchecked") private PathReplicator switchKeyToCopy() { long m = System.currentTimeMillis(); if (pathsToCopy == null && m % 4 == 0) { @@ -170,6 +171,7 @@ private PathReplicator switchKeyToCopy() { } } + @SuppressWarnings("unchecked") private PathReplicator switchKeyToCopy2() { long m = System.currentTimeMillis(); if (pathsToCopy == null && m % 4 == 0) { diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java index d2c87da1..3bf7ce95 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java @@ -6,9 +6,9 @@ import net.minidev.json.JSONValue; import net.minidev.json.actions.path.DotDelimiter; import net.minidev.json.parser.ParseException; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; + +// import org.junit.runner.RunWith; +// import org.junit.runners.Parameterized; import java.util.ArrayList; import java.util.Arrays; @@ -19,13 +19,12 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import static org.junit.Assert.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals; /** * @author adoneitan@gmail.com */ -@RunWith(Parameterized.class) +// @RunWith(Parameterized.class) public class PathsRetainerTest { private String jsonToReduce; private Object keyToKeep; @@ -126,6 +125,7 @@ public void test() throws ParseException { assertEquals(expectedReducedObj, reducedObj); } + @SuppressWarnings("unchecked") private PathsRetainer switchKeyToRemove() { long m = System.currentTimeMillis(); if (keyToKeep == null && m % 4 == 0) { diff --git a/json-smart/src/main/java/net/minidev/json/JSONValue.java b/json-smart/src/main/java/net/minidev/json/JSONValue.java index 4272662d..46fec60d 100644 --- a/json-smart/src/main/java/net/minidev/json/JSONValue.java +++ b/json-smart/src/main/java/net/minidev/json/JSONValue.java @@ -333,6 +333,9 @@ public static Object parseKeepingOrder(String in) { /** * Reformat Json input keeping element order * + * @param input text to parse + * @param style parse options + * * @since 1.0.6.2 * * need to be rewrite in 2.0 @@ -350,6 +353,8 @@ public static String compress(String input, JSONStyle style) { /** * Compress Json input keeping element order * + * @param input text to parse + * * @since 1.0.6.1 * * need to be rewrite in 2.0 @@ -360,6 +365,7 @@ public static String compress(String input) { /** * Compress Json input keeping element order + * @param input text to parse * * @since 1.0.6.1 */ @@ -370,6 +376,8 @@ public static String uncompress(String input) { /** * Parse JSON text into java object from the input source. * + * @param in source to parse + * * @see JSONParser * * @return Instance of the following: JSONObject, JSONArray, String, @@ -382,6 +390,7 @@ public static Object parseWithException(byte[] in) throws IOException, ParseExce /** * Parse JSON text into java object from the input source. * + * @param in source to parse * @see JSONParser * * @return Instance of the following: JSONObject, JSONArray, String, @@ -394,6 +403,8 @@ public static Object parseWithException(InputStream in) throws IOException, Pars /** * Parse JSON text into java object from the input source. * + * @param in source to parse + * * @see JSONParser * * @return Instance of the following: JSONObject, JSONArray, String, @@ -406,18 +417,22 @@ public static Object parseWithException(Reader in) throws IOException, ParseExce /** * Parse JSON text into java object from the input source. * + * @param input string to parse + * @see JSONParser * * @return Instance of the following: JSONObject, JSONArray, String, * java.lang.Number, java.lang.Boolean, null */ - public static Object parseWithException(String s) throws ParseException { - return new JSONParser(DEFAULT_PERMISSIVE_MODE).parse(s, defaultReader.DEFAULT); + public static Object parseWithException(String input) throws ParseException { + return new JSONParser(DEFAULT_PERMISSIVE_MODE).parse(input, defaultReader.DEFAULT); } /** * Parse input json as a mapTo class * + * @param in source to parse + * * mapTo can be a bean * * @since 2.0 @@ -430,6 +445,8 @@ public static T parseWithException(String in, Class mapTo) throws ParseEx /** * Parse valid RFC4627 JSON text into java object from the input source. * + * @param in source to parse + * @see JSONParser * * @return Instance of the following: JSONObject, JSONArray, String, @@ -442,6 +459,7 @@ public static Object parseStrict(Reader in) throws IOException, ParseException { /** * Parse valid RFC4627 JSON text into java object from the input source. * + * @param s source to parse * @see JSONParser * * @return Instance of the following: JSONObject, JSONArray, String, diff --git a/json-smart/src/main/java/net/minidev/json/writer/JsonReaderI.java b/json-smart/src/main/java/net/minidev/json/writer/JsonReaderI.java index 54127734..ea350448 100644 --- a/json-smart/src/main/java/net/minidev/json/writer/JsonReaderI.java +++ b/json-smart/src/main/java/net/minidev/json/writer/JsonReaderI.java @@ -25,7 +25,7 @@ * * @author uriel Chemouni * - * @param + * @param result type */ public abstract class JsonReaderI { public final JsonReader base; @@ -33,7 +33,7 @@ public abstract class JsonReaderI { /** * Reader can be link to the JsonReader Base * - * @param base + * @param base parent reader */ public JsonReaderI(JsonReader base) { this.base = base; @@ -43,6 +43,7 @@ public JsonReaderI(JsonReader base) { /** * called when json-smart parser meet an object key + * @param key key name */ public JsonReaderI startObject(String key) throws ParseException, IOException { throw new RuntimeException(ERR_MSG + " startObject(String key) in " + this.getClass() + " key=" + key); @@ -51,8 +52,7 @@ public JsonReaderI startObject(String key) throws ParseException, IOException /** * called when json-smart parser start an array. * - * @param key - * the destination key name, or null. + * @param key the destination key name, or null. */ public JsonReaderI startArray(String key) throws ParseException, IOException { throw new RuntimeException(ERR_MSG + " startArray in " + this.getClass() + " key=" + key); diff --git a/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java b/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java index b7953d88..1c90daae 100644 --- a/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java +++ b/json-smart/src/test/java/net/minidev/json/test/TestInvalidNumber.java @@ -22,7 +22,7 @@ private void validFloatAsFloat(String test) { assertEquals("{a:\"" + test + "\"}", comp); o = JSONValue.parse(comp, JSONObject.class); Object convertedValue = o.get("a"); - assertEquals("Should handle valid number '" + test + "' as number", convertedValue, test); + assertEquals(convertedValue, test, "Should handle valid number '" + test + "' as number"); } private void invalidFloatAsText(String test) { @@ -32,7 +32,7 @@ private void invalidFloatAsText(String test) { assertEquals("{a:" + test + "}", comp); o = JSONValue.parse(comp, JSONObject.class); Object convertedValue = o.get("a"); - assertEquals("should handle invalid number '" + test + "' as string", convertedValue, test); + assertEquals(convertedValue, test, "should handle invalid number '" + test + "' as string"); } @Test @@ -61,21 +61,21 @@ public void testCVE_2021_27568() { JSONValue.parseWithException("{a:-.}"); assertFalse(true, "should Throws Exception before"); } catch (Exception e) { - assertEquals("should throw EOF", e.getMessage(), "Unexpected token -. at position 5."); + assertEquals(e.getMessage(), "Unexpected token -. at position 5.", "should throw EOF"); } try { JSONValue.parseWithException("{a:2e+}"); assertFalse(true, "should Throws Exception before"); } catch (Exception e) { - assertEquals("should throw EOF", e.getMessage(), "Unexpected token 2e+ at position 6."); + assertEquals(e.getMessage(), "Unexpected token 2e+ at position 6.", "should throw EOF"); } try { JSONValue.parseWithException("{a:[45e-}"); assertFalse(true, "should Throws Exception before"); } catch (Exception e) { - assertEquals("should throw EOF", e.getMessage(), "Unexpected End Of File position 8: EOF"); + assertEquals(e.getMessage(), "Unexpected End Of File position 8: EOF", "should throw EOF"); } } } From 581f6da18ac28d0cd74934029713c69afd9cf3b4 Mon Sep 17 00:00:00 2001 From: urielch Date: Sat, 3 Apr 2021 19:54:01 +0300 Subject: [PATCH 4/5] fix junit 5 test + fix warnings --- json-smart-action/pom.xml | 2 +- .../json/test/actions/ElementRemoverTest.java | 53 +++--- .../json/test/actions/PathLocatorTest.java | 141 ++++++-------- .../json/test/actions/PathRemoverTest.java | 97 ++++------ .../json/test/actions/PathReplicatorTest.java | 179 +++++++++--------- .../json/test/actions/PathsRetainerTest.java | 178 ++++++++--------- .../main/java/net/minidev/json/JSONNavi.java | 30 ++- .../main/java/net/minidev/json/JSONValue.java | 53 +++--- 8 files changed, 353 insertions(+), 380 deletions(-) diff --git a/json-smart-action/pom.xml b/json-smart-action/pom.xml index 49e4b505..799426a9 100644 --- a/json-smart-action/pom.xml +++ b/json-smart-action/pom.xml @@ -7,7 +7,7 @@ 4.0.0 json-smart-action - JSON Small and Fast Parser + JSON-smart-action Small and Fast Parser JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language. diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java index c68c6afc..1e9451fd 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/ElementRemoverTest.java @@ -5,9 +5,11 @@ import net.minidev.json.actions.ElementRemover; import net.minidev.json.parser.ParseException; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; -import java.util.*; +import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -16,16 +18,10 @@ * * @author adoneitan@gmail.com */ -@RunWith(Parameterized.class) +// @RunWith(Parameterized.class) public class ElementRemoverTest { - private String jsonToClean; - private String elementsToRemove; - private String expectedJson; - - public ElementRemoverTest(String jsonToClean, String elementsToRemove, String expectedJson) { - this.jsonToClean = filter(jsonToClean); - this.elementsToRemove = filter(elementsToRemove); - this.expectedJson = filter(expectedJson); + + public ElementRemoverTest() { } private static String filter(String test) { @@ -34,22 +30,25 @@ private static String filter(String test) { return test.replace("'", "\""); } - @Parameterized.Parameters - public static Collection params() { - List list = Arrays.asList(new String[][]{ - {"{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", null, "{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}"}, - {"{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", "{}", "{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}"}, - {"{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", "{'k0':'v2'}", "{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}"}, - {"{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", "{'k2':'v2'}", "{'k0':{},'k1':{'k3':'v3'}}"}, - {"{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", "{'k0':{'k2':'v2'}}", "{'k1':{'k2':'v2','k3':'v3'}}"}, - {"{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", "{'k2':'v2','k3':'v3'}", "{'k0':{},'k1':{}}"}, - {"{'k0':{}}", "{}", "{'k0':{}}"}, - }); - return list; - } - - @Test - public void test() throws ParseException { + public static Stream params() { + return Stream.of( + Arguments.of("{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", null, "{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}"), + Arguments.of("{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", "{}", "{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}"), + Arguments.of("{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", "{'k0':'v2'}", "{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}"), + Arguments.of("{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", "{'k2':'v2'}", "{'k0':{},'k1':{'k3':'v3'}}"), + Arguments.of("{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", "{'k0':{'k2':'v2'}}", "{'k1':{'k2':'v2','k3':'v3'}}"), + Arguments.of("{'k0':{'k2':'v2'},'k1':{'k2':'v2','k3':'v3'}}", "{'k2':'v2','k3':'v3'}", "{'k0':{},'k1':{}}"), + Arguments.of("{'k0':{}}", "{}", "{'k0':{}}") + ); + }; + + @ParameterizedTest + @MethodSource("params") + public void test(String jsonToClean, String elementsToRemove, String expectedJson) throws ParseException { + jsonToClean = filter(jsonToClean); + elementsToRemove = filter(elementsToRemove); + expectedJson = filter(expectedJson); + JSONObject objectToClean = jsonToClean != null ? (JSONObject) JSONValue.parseWithException(jsonToClean) : null; JSONObject expectedObject = expectedJson != null ? (JSONObject) JSONValue.parseWithException(expectedJson) : null; JSONObject toRemove = elementsToRemove != null ? (JSONObject) JSONValue.parseWithException(elementsToRemove) : null; diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java index a896edbf..99a02f5a 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathLocatorTest.java @@ -5,119 +5,96 @@ import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; import net.minidev.json.parser.ParseException; -// import org.junit.Test; -// import org.junit.runner.RunWith; -// import org.junit.runners.Parameterized; import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.List; +import java.util.stream.Stream; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; /** * @author adoneitan@gmail.com */ // @ExtendWith(Parameterized.class) -public class PathLocatorTest -{ - private String jsonToSearch; - private Object keysToFind; - private String[] expectedFound; - - @ParameterizedTest - public PathLocatorTest(String jsonToSearch, Object keysToFind, String[] expectedFound) - { - this.jsonToSearch = jsonToSearch; - this.keysToFind = keysToFind; - this.expectedFound = expectedFound; - } - - @Parameterized.Parameters - public static Collection params() { - return Arrays.asList(new Object[][]{ +public class PathLocatorTest { + public static Stream params() { + return Stream.of( //nulls, bad/empty keys - {null, null, new String[]{} }, - {null, "", new String[]{} }, - {null, "k1", new String[]{} }, - {null, new String[]{}, new String[]{} }, - {null, new JSONArray(), new String[]{} }, - {null, new ArrayList(0), new String[]{} },//5 - + Arguments.of(null, null, new String[]{} ), + Arguments.of(null, "", new String[]{} ), + Arguments.of(null, "k1", new String[]{} ), + Arguments.of(null, new String[]{}, new String[]{} ), + Arguments.of(null, new JSONArray(), new String[]{} ), + Arguments.of(null, new ArrayList(0), new String[]{} ),//5 //empty json, bad/empty keys - {"{}", null, new String[]{} }, - {"{}", "", new String[]{} }, - {"{}", "k1", new String[]{} }, - {"{}", new String[]{}, new String[]{} }, - {"{}", new JSONArray(), new String[]{} },//10 - {"{}", new ArrayList(0), new String[]{} }, - + Arguments.of("{}", null, new String[]{} ), + Arguments.of("{}", "", new String[]{} ), + Arguments.of("{}", "k1", new String[]{} ), + Arguments.of("{}", new String[]{}, new String[]{} ), + Arguments.of("{}", new JSONArray(), new String[]{} ),//10 + Arguments.of("{}", new ArrayList(0), new String[]{} ), //simple json, bad/empty keys - {"{\"k0\":\"v0\"}", null, new String[]{} }, - {"{\"k0\":\"v0\"}", "", new String[]{} }, - {"{\"k0\":\"v0\"}", "k1", new String[]{} }, - {"{\"k0\":\"v0\"}", new String[]{}, new String[]{} },//15 - {"{\"k0\":\"v0\"}", new JSONArray(), new String[]{} }, - {"{\"k0\":\"v0\"}", new ArrayList(0), new String[]{} }, - + Arguments.of("{\"k0\":\"v0\"}", null, new String[]{} ), + Arguments.of("{\"k0\":\"v0\"}", "", new String[]{} ), + Arguments.of("{\"k0\":\"v0\"}", "k1", new String[]{} ), + Arguments.of("{\"k0\":\"v0\"}", new String[]{}, new String[]{} ),//15 + Arguments.of("{\"k0\":\"v0\"}", new JSONArray(), new String[]{} ), + Arguments.of("{\"k0\":\"v0\"}", new ArrayList(0), new String[]{} ), //simple json, valid/invalid keys - {"{\"k0\":\"v0\"}", "k0", new String[]{"k0"} }, - {"{\"k0\":\"v0\"}", "v0", new String[]{} }, - {"{\"k0\":\"v0\"}", "k0.k1", new String[]{} },//20 - {"{\"k0\":\"v0\"}", "k1.k0", new String[]{} }, - {"{\"k0\":null}", "k0", new String[]{"k0"} }, - {"{\"k0\":null}", null, new String[]{} }, - + Arguments.of("{\"k0\":\"v0\"}", "k0", new String[]{"k0"} ), + Arguments.of("{\"k0\":\"v0\"}", "v0", new String[]{} ), + Arguments.of("{\"k0\":\"v0\"}", "k0.k1", new String[]{} ),//20 + Arguments.of("{\"k0\":\"v0\"}", "k1.k0", new String[]{} ), + Arguments.of("{\"k0\":null}", "k0", new String[]{"k0"} ), + Arguments.of("{\"k0\":null}", null, new String[]{} ), //key with dot char - {"{\"k0.k1\":\"v0\"}", "k0", new String[]{} }, - {"{\"k0.k1\":\"v0\"}", "k1", new String[]{} },//25 - {"{\"k0.k1\":\"v0\"}", "k0.k1", new String[]{} }, - + Arguments.of("{\"k0.k1\":\"v0\"}", "k0", new String[]{} ), + Arguments.of("{\"k0.k1\":\"v0\"}", "k1", new String[]{} ),//25 + Arguments.of("{\"k0.k1\":\"v0\"}", "k0.k1", new String[]{} ), // key with dot ambiguity - {"{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k0", new String[]{"k0"} }, - {"{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k1", new String[]{} }, - {"{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k0.k1", new String[]{"k0.k1"} }, - {"{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k0.k1", new String[]{"k0.k1"} },//30 - {"{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k0.k1.k2", new String[]{"k0.k1.k2"} }, - {"{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k1.k2", new String[]{} }, - {"{\"k0\":{\"k1.k2\":\"dot\"},\"k1\":{\"k2\":\"v2\"}}}","k0", new String[]{"k0"} }, - {"{\"k0\":{\"k1.k2\":\"dot\"},\"k1\":{\"k2\":\"v2\"}}}","k1.k2", new String[]{"k1.k2"} }, - + Arguments.of("{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k0", new String[]{"k0"} ), + Arguments.of("{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k1", new String[]{} ), + Arguments.of("{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k0.k1", new String[]{"k0.k1"} ), + Arguments.of("{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k0.k1", new String[]{"k0.k1"} ),//30 + Arguments.of("{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k0.k1.k2", new String[]{"k0.k1.k2"} ), + Arguments.of("{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k1.k2", new String[]{} ), + Arguments.of("{\"k0\":{\"k1.k2\":\"dot\"},\"k1\":{\"k2\":\"v2\"}}}","k0", new String[]{"k0"} ), + Arguments.of("{\"k0\":{\"k1.k2\":\"dot\"},\"k1\":{\"k2\":\"v2\"}}}","k1.k2", new String[]{"k1.k2"} ), //ignore non-existent keys but keep good keys - {"{\"k0\":\"v0\",\"k1\":\"v1\"}", new String[]{"k0","k2"}, new String[]{"k0"} },//35 - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k2"}, new String[]{"k0"} }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1.k2"}, new String[]{"k0", "k1.k2"} }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1.k2.k3"}, new String[]{"k0"} }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1.k2","k1"}, new String[]{"k0","k1","k1.k2"} }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1","k0.k2"}, new String[]{"k0","k1"} },//40 - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1","k2"}, new String[]{"k0","k1"} }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k1.k2"}, new String[]{"k1.k2"} }, - + Arguments.of("{\"k0\":\"v0\",\"k1\":\"v1\"}", new String[]{"k0","k2"}, new String[]{"k0"} ),//35 + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k2"}, new String[]{"k0"} ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1.k2"}, new String[]{"k0", "k1.k2"} ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1.k2.k3"}, new String[]{"k0"} ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1.k2","k1"}, new String[]{"k0","k1","k1.k2"} ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1","k0.k2"}, new String[]{"k0","k1"} ),//40 + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1","k2"}, new String[]{"k0","k1"} ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k1.k2"}, new String[]{"k1.k2"} ), //arrays - key inside array treated as child - {"{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0", new String[]{"k0"} }, - {"{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1", new String[]{"k0.k1"} }, - {"{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1.k2", new String[]{"k0.k1.k2"} },//45 - {"{\"k0\":{\"k1\":[{\"k2\":\"v2\"},{\"k2\":\"v2\"}]}}", "k0.k1.k2", new String[]{"k0.k1.k2", "k0.k1.k2"} }, - }); + Arguments.of("{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0", new String[]{"k0"} ), + Arguments.of("{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1", new String[]{"k0.k1"} ), + Arguments.of("{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1.k2", new String[]{"k0.k1.k2"} ),//45 + Arguments.of("{\"k0\":{\"k1\":[{\"k2\":\"v2\"},{\"k2\":\"v2\"}]}}", "k0.k1.k2", new String[]{"k0.k1.k2", "k0.k1.k2"} ) + ); } - @Test - public void test() throws ParseException + @ParameterizedTest + @MethodSource("params") + public void test(String jsonToSearch, Object keysToFind, String[] expectedFound) throws ParseException { JSONObject objectToSearch = jsonToSearch != null ? (JSONObject) JSONValue.parseWithException(jsonToSearch) : null; - PathLocator locator = switchKeyToRemove(); + PathLocator locator = switchKeyToRemove(keysToFind); List found = locator.locate(objectToSearch); assertEquals(Arrays.asList(expectedFound), found); } @SuppressWarnings("unchecked") - private PathLocator switchKeyToRemove() + private PathLocator switchKeyToRemove(Object keysToFind) { long m = System.currentTimeMillis(); if (keysToFind == null && m % 4 == 0) { diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java index 56ab5c5d..c7b433e6 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathRemoverTest.java @@ -5,90 +5,75 @@ import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; import net.minidev.json.parser.ParseException; -// import org.junit.runner.RunWith; -// import org.junit.runners.Parameterized; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.List; +import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; /** * Tests {@link PathRemover} * * @author adoneitan@gmail.com */ -@RunWith(Parameterized.class) -public class PathRemoverTest -{ - private String jsonToClean; - private Object keyToRemove; - private String expectedJson; - - public PathRemoverTest(String jsonToClean, Object keyToRemove, String expectedJson) - { - this.jsonToClean = jsonToClean; - this.keyToRemove = keyToRemove; - this.expectedJson = expectedJson; - } - - @Parameterized.Parameters - public static Collection params() { - return Arrays.asList(new Object[][]{ - {null, "key", null }, // null json - {"{}", "key", "{}" }, // empty json - {"{\"first\": null}", null, "{\"first\": null}" }, // null key - {"{\"first\": null}", "", "{\"first\": null}" }, // empty string key - {"{\"first\": null}", new String[]{}, "{\"first\": null}" }, // empty string array key - {"{\"first\": null}", new JSONArray(), "{\"first\": null}" }, // empty json array key - {"{\"first\": null}", new ArrayList(0), "{\"first\": null}" }, // empty list key - {"{\"first\": null}", "first", "{}" }, // remove root key - {"{\"first.f1\": null}", "first.f1", "{}" }, // key with dot - {"{\"first.f1\": \"withDot\", \"first\":{\"f1\": null}}", "first.f1", "{\"first\":{}}" }, //9 key with dot ambiguity - {"{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\"}}}}", "first.f2.f3.id", "{\"first\":{\"f2\":{\"f3\":{}}}}" }, // nested object remove single leaf - {"{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\"}}}}", "notfound", "{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\"}}}}" }, // nested object key does not exist - {"{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\",\"name\":\"me\"}}}}", "first.f2.f3.id", "{\"first\":{\"f2\":{\"f3\":{\"name\":\"me\"}}}}"}, // nested object remove first leaf - {"{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\",\"name\":\"me\"}}}}", "first.f2.f3.name", "{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\"}}}}" }, //13 nested object remove last leaf - {"{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\",\"name\":\"me\"}}}}", "first.f2.f3", "{\"first\":{\"f2\":{}}}" }, // nested object remove intermediate node - {"{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\",\"name\":\"me\"}}}}", "first", "{}" }, // nested object remove root - {"{\"first\":{\"f2\":[[1,{\"id\":\"id1\"},3],4]}}", "first.f2.id", "{\"first\":{\"f2\":[[1,{},3],4]}}" }, // double nested array remove leaf - {"{\"first\":{\"f2\":[[1,{\"id\":\"id1\"},3],4]}}", "first.f2", "{\"first\":{}}" }, // double nested array remove array - {"{\"first\":[[1,{\"id\":\"id1\"},3],4]}", "first", "{}" }, // double nested array remove root - +// @RunWith(Parameterized.class) +public class PathRemoverTest { + public static Stream params() { + return Stream.of( + Arguments.of(null, "key", null ), // null json + Arguments.of("{}", "key", "{}" ), // empty json + Arguments.of("{\"first\": null}", null, "{\"first\": null}" ), // null key + Arguments.of("{\"first\": null}", "", "{\"first\": null}" ), // empty string key + Arguments.of("{\"first\": null}", new String[]{}, "{\"first\": null}" ), // empty string array key + Arguments.of("{\"first\": null}", new JSONArray(), "{\"first\": null}" ), // empty json array key + Arguments.of("{\"first\": null}", new ArrayList(0), "{\"first\": null}" ), // empty list key + Arguments.of("{\"first\": null}", "first", "{}" ), // remove root key + Arguments.of("{\"first.f1\": null}", "first.f1", "{}" ), // key with dot + Arguments.of("{\"first.f1\": \"withDot\", \"first\":{\"f1\": null}}", "first.f1", "{\"first\":{}}" ), //9 key with dot ambiguity + Arguments.of("{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\"}}}}", "first.f2.f3.id", "{\"first\":{\"f2\":{\"f3\":{}}}}" ), // nested object remove single leaf + Arguments.of("{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\"}}}}", "notfound", "{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\"}}}}" ), // nested object key does not exist + Arguments.of("{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\",\"name\":\"me\"}}}}", "first.f2.f3.id", "{\"first\":{\"f2\":{\"f3\":{\"name\":\"me\"}}}}"), // nested object remove first leaf + Arguments.of("{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\",\"name\":\"me\"}}}}", "first.f2.f3.name", "{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\"}}}}" ), //13 nested object remove last leaf + Arguments.of("{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\",\"name\":\"me\"}}}}", "first.f2.f3", "{\"first\":{\"f2\":{}}}" ), // nested object remove intermediate node + Arguments.of("{\"first\":{\"f2\":{\"f3\":{\"id\":\"id1\",\"name\":\"me\"}}}}", "first", "{}" ), // nested object remove root + Arguments.of("{\"first\":{\"f2\":[[1,{\"id\":\"id1\"},3],4]}}", "first.f2.id", "{\"first\":{\"f2\":[[1,{},3],4]}}" ), // double nested array remove leaf + Arguments.of("{\"first\":{\"f2\":[[1,{\"id\":\"id1\"},3],4]}}", "first.f2", "{\"first\":{}}" ), // double nested array remove array + Arguments.of("{\"first\":[[1,{\"id\":\"id1\"},3],4]}", "first", "{}" ), // double nested array remove root //arrays - {"{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1", "{\"k0\":{}}" }, // value is array - {"{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1.k2", "{\"k0\":{\"k1\":[1,{},3,4]}}" }, // full path into array object - {"{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1.3" , "{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}" }, // full path into array primitive - {"{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},{\"k2\":\"v2\"},3,4]}}", "k0.k1.k2", "{\"k0\":{\"k1\":[1,{},{},3,4]}}" }, // full path into array with identical items - + Arguments.of("{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1", "{\"k0\":{}}" ), // value is array + Arguments.of("{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1.k2", "{\"k0\":{\"k1\":[1,{},3,4]}}" ), // full path into array object + Arguments.of("{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1.3" , "{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}" ), // full path into array primitive + Arguments.of("{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},{\"k2\":\"v2\"},3,4]}}", "k0.k1.k2", "{\"k0\":{\"k1\":[1,{},{},3,4]}}" ), // full path into array with identical items // composite json remove all roots - {"{\"first\": {\"f2\":{\"id\":\"id1\"}}, \"second\": [{\"k1\":{\"id\":\"id1\"}}, 4, 5, 6, {\"id\": 123}], \"third\": 789, \"id\": null}", + Arguments.of("{\"first\": {\"f2\":{\"id\":\"id1\"}}, \"second\": [{\"k1\":{\"id\":\"id1\"}}, 4, 5, 6, {\"id\": 123}], \"third\": 789, \"id\": null}", (JSONArray) JSONValue.parse("[\"first\",\"second\",\"third\",\"id\"]"), - "{}" }, + "{}" ), // composite json remove all leaves - {"{\"first\": {\"f2\":{\"id\":\"id1\"}}, \"second\": [{\"k1\":{\"id\":\"id1\"}}, 4, 5, 6, {\"id\": 123}], \"third\": 789, \"id\": null}", + Arguments.of("{\"first\": {\"f2\":{\"id\":\"id1\"}}, \"second\": [{\"k1\":{\"id\":\"id1\"}}, 4, 5, 6, {\"id\": 123}], \"third\": 789, \"id\": null}", (List) Arrays.asList("first.f2.id", "second.k1.id", "second.id", "third", "id"), - "{\"first\": {\"f2\":{}}, \"second\": [{\"k1\":{}}, 4, 5, 6, {}]}" }, - - }); + "{\"first\": {\"f2\":{}}, \"second\": [{\"k1\":{}}, 4, 5, 6, {}]}" ) + ); } - @Test - public void test() throws ParseException + @ParameterizedTest + @MethodSource("params") + public void test(String jsonToClean, Object keyToRemove, String expectedJson) throws ParseException { JSONObject objectToClean = jsonToClean != null ? (JSONObject) JSONValue.parseWithException(jsonToClean) : null; JSONObject expectedObject = expectedJson != null ? (JSONObject) JSONValue.parseWithException(expectedJson): null; - PathRemover cl = switchKeyToRemove(); + PathRemover cl = switchKeyToRemove(keyToRemove); cl.remove(objectToClean); assertEquals(expectedObject, objectToClean); } @SuppressWarnings("unchecked") - private PathRemover switchKeyToRemove() + private PathRemover switchKeyToRemove(Object keyToRemove) { long m = System.currentTimeMillis(); if (keyToRemove == null && m % 4 == 0) { diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java index 168951cd..d93f74ac 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathReplicatorTest.java @@ -4,32 +4,21 @@ import net.minidev.json.JSONArray; import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; -// import org.junit.runner.RunWith; -// import org.junit.runners.Parameterized; import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.List; +import java.util.stream.Stream; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; /** * @author adoneitan@gmail.com */ -@RunWith(Parameterized.class) public class PathReplicatorTest { - private String jsonSource; - private Object pathsToCopy; - private Object expected; - - public PathReplicatorTest(String jsonSource, Object pathsToCopy, Object expected) { - this.jsonSource = filter(jsonSource); - this.pathsToCopy = filter(pathsToCopy); - this.expected = filter(expected); - } @SuppressWarnings("unchecked") private static T filter(T obj) { @@ -40,111 +29,119 @@ private static T filter(T obj) { return obj; } - @Parameterized.Parameters - public static Collection params() { - return Arrays.asList(new Object[][] { + public static Stream params() { + return Stream.of( //nulls, bad/empty keys - {null, null, null }, - {null, "", null }, - {null, "k1", null }, - {null, new String[]{}, null }, - {null, new JSONArray(), null }, - {null, new ArrayList(0), null },//5 + Arguments.of(null, null, null ), + Arguments.of(null, "", null ), + Arguments.of(null, "k1", null ), + Arguments.of(null, new String[]{}, null ), + Arguments.of(null, new JSONArray(), null ), + Arguments.of(null, new ArrayList(0), null ),//5 //empty json, bad/empty keys - {"{}", null, "{}" }, - {"{}", "", "{}" }, - {"{}", "k1", "{}" }, - {"{}", new String[]{}, "{}" }, - {"{}", new JSONArray(), "{}" }, - {"{}", new ArrayList(0), "{}" },//11 + Arguments.of("{}", null, "{}" ), + Arguments.of("{}", "", "{}" ), + Arguments.of("{}", "k1", "{}" ), + Arguments.of("{}", new String[]{}, "{}" ), + Arguments.of("{}", new JSONArray(), "{}" ), + Arguments.of("{}", new ArrayList(0), "{}" ),//11 //simple json, bad/empty keys - {"{'k0':'v0'}", null, "{}" }, - {"{'k0':'v0'}", "", "{}" }, - {"{'k0':'v0'}", "k1", "{}" }, - {"{'k0':'v0'}", new String[]{}, "{}" }, - {"{'k0':'v0'}", new JSONArray(), "{}" }, - {"{'k0':'v0'}", new ArrayList(0), "{}" },//17 + Arguments.of("{'k0':'v0'}", null, "{}" ), + Arguments.of("{'k0':'v0'}", "", "{}" ), + Arguments.of("{'k0':'v0'}", "k1", "{}" ), + Arguments.of("{'k0':'v0'}", new String[]{}, "{}" ), + Arguments.of("{'k0':'v0'}", new JSONArray(), "{}" ), + Arguments.of("{'k0':'v0'}", new ArrayList(0), "{}" ),//17 //simple json, valid/invalid keys - {"{'k0':'v0'}", "k0", "{'k0':'v0'}" }, - {"{'k0':'v0'}", "v0", "{}" }, - {"{'k0':'v0'}", "k0.k1", "{}" },//20 - {"{'k0':'v0'}", "k1.k0", "{}" }, - {"{'k0':null}", "k0", "{'k0':null}" }, - {"{'k0':null}", "v0", "{}" }, + Arguments.of("{'k0':'v0'}", "k0", "{'k0':'v0'}" ), + Arguments.of("{'k0':'v0'}", "v0", "{}" ), + Arguments.of("{'k0':'v0'}", "k0.k1", "{}" ),//20 + Arguments.of("{'k0':'v0'}", "k1.k0", "{}" ), + Arguments.of("{'k0':null}", "k0", "{'k0':null}" ), + Arguments.of("{'k0':null}", "v0", "{}" ), //key with dot char - {"{'k0.k1':'v0'}", "k0", "{}" }, - {"{'k0.k1':'v0'}", "k1", "{}" }, - {"{'k0.k1':'v0'}", "k0.k1", "{}" }, + Arguments.of("{'k0.k1':'v0'}", "k0", "{}" ), + Arguments.of("{'k0.k1':'v0'}", "k1", "{}" ), + Arguments.of("{'k0.k1':'v0'}", "k0.k1", "{}" ), // key with dot ambiguity - {"{'k0.k1':'withDot','k0':{'k1':null}}", "k0", "{'k0':{}}" }, - {"{'k0.k1':'withDot','k0':{'k1':null}}", "k1", "{}" }, - {"{'k0.k1':'withDot','k0':{'k1':null}}", "k0.k1", "{'k0':{'k1':null}}" }, - {"{'k0':{'k1.k2':'dot','k1':{'k2':null}}}", "k0.k1", "{'k0':{'k1':{}}}" }, - {"{'k0':{'k1.k2':'dot','k1':{'k2':null}}}", "k0.k1.k2", "{'k0':{'k1':{'k2':null}}}" }, - {"{'k0':{'k1.k2':'dot','k1':{'k2':null}}}", "k1.k2", "{}" }, - {"{'k0':{'k1.k2':'dot'},'k1':{'k2':'v2'}}}", "k0", "{'k0':{}}}" }, - {"{'k0':{'k1.k2':'dot'},'k1':{'k2':'v2'}}}", "k1.k2", "{'k1':{'k2':'v2'}}}" }, - {"{'k0':{'k1':'v1','k2':{'k3.k4':'dot'}}}", "k0.k2.k3.k4", "{}" }, - {"{'k0':{'k1':'v1','k2':{'k3.k4':'dot'}}}", "k0.k2.k3", "{}" }, - {"{'k0':{'k1':'v1','k2':{'k3.k4':'dot'}}}", "k0.k2", "{'k0':{'k2':{}}}" }, - {"{'k0':{'k1':'v1','k2':{'k3.k4':'dot'}}}", "k0", "{'k0':{}}" },//38 + Arguments.of("{'k0.k1':'withDot','k0':{'k1':null}}", "k0", "{'k0':{}}" ), + Arguments.of("{'k0.k1':'withDot','k0':{'k1':null}}", "k1", "{}" ), + Arguments.of("{'k0.k1':'withDot','k0':{'k1':null}}", "k0.k1", "{'k0':{'k1':null}}" ), + Arguments.of("{'k0':{'k1.k2':'dot','k1':{'k2':null}}}", "k0.k1", "{'k0':{'k1':{}}}" ), + Arguments.of("{'k0':{'k1.k2':'dot','k1':{'k2':null}}}", "k0.k1.k2", "{'k0':{'k1':{'k2':null}}}" ), + Arguments.of("{'k0':{'k1.k2':'dot','k1':{'k2':null}}}", "k1.k2", "{}" ), + Arguments.of("{'k0':{'k1.k2':'dot'},'k1':{'k2':'v2'}}}", "k0", "{'k0':{}}}" ), + Arguments.of("{'k0':{'k1.k2':'dot'},'k1':{'k2':'v2'}}}", "k1.k2", "{'k1':{'k2':'v2'}}}" ), + Arguments.of("{'k0':{'k1':'v1','k2':{'k3.k4':'dot'}}}", "k0.k2.k3.k4", "{}" ), + Arguments.of("{'k0':{'k1':'v1','k2':{'k3.k4':'dot'}}}", "k0.k2.k3", "{}" ), + Arguments.of("{'k0':{'k1':'v1','k2':{'k3.k4':'dot'}}}", "k0.k2", "{'k0':{'k2':{}}}" ), + Arguments.of("{'k0':{'k1':'v1','k2':{'k3.k4':'dot'}}}", "k0", "{'k0':{}}" ),//38 //ignore non-existent keys but keep good keys - {"{'k0':'v0','k1':'v1'}", new String[]{"k0","k2"}, "{'k0':'v0'}" }, - {"{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k2"}, "{'k0':'v0'}" }, - {"{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k1.k2"}, "{'k0':'v0','k1':{'k2':'v2'}}" }, - {"{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k0.k2"}, "{'k0':'v0'}" }, - {"{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k1.k2","k1"}, "{'k0':'v0','k1':{'k2':'v2'}}" }, - {"{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k1"}, "{'k0':'v0','k1':{}}" }, - {"{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k1","k2"}, "{'k0':'v0','k1':{}}" }, - {"{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k1.k2"}, "{'k1':{'k2':'v2'}}" }, - {"{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k1.k2.k3"}, "{}" }, - {"{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0.k1.k2"}, "{}" },//48 - {"{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k1.k0"}, "{}" }, + Arguments.of("{'k0':'v0','k1':'v1'}", new String[]{"k0","k2"}, "{'k0':'v0'}" ), + Arguments.of("{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k2"}, "{'k0':'v0'}" ), + Arguments.of("{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k1.k2"}, "{'k0':'v0','k1':{'k2':'v2'}}" ), + Arguments.of("{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k0.k2"}, "{'k0':'v0'}" ), + Arguments.of("{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k1.k2","k1"}, "{'k0':'v0','k1':{'k2':'v2'}}" ), + Arguments.of("{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k1"}, "{'k0':'v0','k1':{}}" ), + Arguments.of("{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0","k1","k2"}, "{'k0':'v0','k1':{}}" ), + Arguments.of("{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k1.k2"}, "{'k1':{'k2':'v2'}}" ), + Arguments.of("{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k1.k2.k3"}, "{}" ), + Arguments.of("{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k0.k1.k2"}, "{}" ),//48 + Arguments.of("{'k0':'v0','k1':{'k2':'v2'}}", new String[]{"k1.k0"}, "{}" ), //arrays - key inside array treated as child - {"{'k0':{'k1':[1,2,3,4]}}", "k0", "{'k0':{}}" }, - {"{'k0':{'k1':[1,2,3,4]}}", "k0.k1", "{'k0':{'k1':[1,2,3,4]}}" }, - {"{'k0':{'k1':[1,{'k2':'v2'},3,4]}}", "k0", "{'k0':{}}" }, - {"{'k0':{'k1':[1,{'k2':'v2'},3,4]}}", "k0.k1", "{'k0':{'k1':[1,{},3,4]}}" }, - {"{'k0':{'k1':[1,{'k2':'v2'},3,4]}}", "k0.k1.k2", "{'k0':{'k1':[{'k2':'v2'}]}}" }, - {"{'k0':{'k1':[{'k2':'v2'},{'k2':'v2'}]}}", "k0.k1", "{'k0':{'k1':[{},{}]}}" }, - {"{'k0':{'k1':[{'k2':'v2'},{'k2':'v2'}]}}", "k0.k1.k2", "{'k0':{'k1':[{'k2':'v2'},{'k2':'v2'}]}}" }, - {"{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':'v4'}]}}", "k0.k1.k2", "{'k0':{'k1':[{'k2':'v2'}]}}" }, - {"{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':'v4'}]}}", "k0.k3.k4", "{'k0':{'k3':[{'k4':'v4'}]}}" }, - {"{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':{'k5':'v5'}}]}}", "k0.k1.k2", "{'k0':{'k1':[{'k2':'v2'}]}}" }, - {"{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':{'k5':'v5'}}]}}", "k0.k3.k4", "{'k0':{'k3':[{'k4':{}}]}}" }, - {"{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':{'k5':'v5'}}]}}", "k0.k3.k4.k5", "{'k0':{'k3':[{'k4':{'k5':'v5'}}]}}" }, - {"{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':{'k5':'v5'}}]}}", new String[]{"k0.k1", "k0.k3"}, "{'k0':{'k3':[{}],'k1':[{}]}}" }, - {"{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':{'k5':'v5'}}]}}", new String[]{"k0.k1", "k0.k3.k4.k5"}, "{'k0':{'k3':[{'k4':{'k5':'v5'}}],'k1':[{}]}}" }, - }); + Arguments.of("{'k0':{'k1':[1,2,3,4]}}", "k0", "{'k0':{}}" ), + Arguments.of("{'k0':{'k1':[1,2,3,4]}}", "k0.k1", "{'k0':{'k1':[1,2,3,4]}}" ), + Arguments.of("{'k0':{'k1':[1,{'k2':'v2'},3,4]}}", "k0", "{'k0':{}}" ), + Arguments.of("{'k0':{'k1':[1,{'k2':'v2'},3,4]}}", "k0.k1", "{'k0':{'k1':[1,{},3,4]}}" ), + Arguments.of("{'k0':{'k1':[1,{'k2':'v2'},3,4]}}", "k0.k1.k2", "{'k0':{'k1':[{'k2':'v2'}]}}" ), + Arguments.of("{'k0':{'k1':[{'k2':'v2'},{'k2':'v2'}]}}", "k0.k1", "{'k0':{'k1':[{},{}]}}" ), + Arguments.of("{'k0':{'k1':[{'k2':'v2'},{'k2':'v2'}]}}", "k0.k1.k2", "{'k0':{'k1':[{'k2':'v2'},{'k2':'v2'}]}}" ), + Arguments.of("{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':'v4'}]}}", "k0.k1.k2", "{'k0':{'k1':[{'k2':'v2'}]}}" ), + Arguments.of("{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':'v4'}]}}", "k0.k3.k4", "{'k0':{'k3':[{'k4':'v4'}]}}" ), + Arguments.of("{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':{'k5':'v5'}}]}}", "k0.k1.k2", "{'k0':{'k1':[{'k2':'v2'}]}}" ), + Arguments.of("{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':{'k5':'v5'}}]}}", "k0.k3.k4", "{'k0':{'k3':[{'k4':{}}]}}" ), + Arguments.of("{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':{'k5':'v5'}}]}}", "k0.k3.k4.k5", "{'k0':{'k3':[{'k4':{'k5':'v5'}}]}}" ), + Arguments.of("{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':{'k5':'v5'}}]}}", new String[]{"k0.k1", "k0.k3"}, "{'k0':{'k3':[{}],'k1':[{}]}}" ), + Arguments.of("{'k0':{'k1':[{'k2':'v2'}],'k3':[{'k4':{'k5':'v5'}}]}}", new String[]{"k0.k1", "k0.k3.k4.k5"}, "{'k0':{'k3':[{'k4':{'k5':'v5'}}],'k1':[{}]}}" ) + ); } - @Test - public void test() throws Exception { + @ParameterizedTest + @MethodSource("params") + public void test(String jsonSource, Object pathsToCopy, Object expected) throws Exception { + jsonSource = filter(jsonSource); + pathsToCopy = filter(pathsToCopy); + expected = filter(expected); + JSONObject objectSource = jsonSource != null ? (JSONObject) JSONValue.parseWithException(jsonSource) : null; - PathReplicator copier = switchKeyToCopy(); + PathReplicator copier = switchKeyToCopy(pathsToCopy); JSONObject copied = copier.replicate(objectSource); JSONObject expectedObj = expected != null ? (JSONObject) JSONValue.parseWithException((String) expected) : null; assertEquals(expectedObj, copied); } - @Test - public void test2() throws Exception { + @ParameterizedTest + @MethodSource("params") + public void test2(String jsonSource, Object pathsToCopy, Object expected) throws Exception { + jsonSource = filter(jsonSource); + pathsToCopy = filter(pathsToCopy); + expected = filter(expected); JSONObject objectSource = jsonSource != null ? (JSONObject) JSONValue.parseWithException(jsonSource) : null; - PathReplicator copier = switchKeyToCopy2(); + PathReplicator copier = switchKeyToCopy2(pathsToCopy); JSONObject copied = copier.replicate(objectSource); JSONObject expectedObj = expected != null ? (JSONObject) JSONValue.parseWithException((String) expected) : null; assertEquals(expectedObj, copied); } @SuppressWarnings("unchecked") - private PathReplicator switchKeyToCopy() { + private PathReplicator switchKeyToCopy(Object pathsToCopy) { long m = System.currentTimeMillis(); if (pathsToCopy == null && m % 4 == 0) { // System.out.println("cast to String"); @@ -172,7 +169,7 @@ private PathReplicator switchKeyToCopy() { } @SuppressWarnings("unchecked") - private PathReplicator switchKeyToCopy2() { + private PathReplicator switchKeyToCopy2(Object pathsToCopy) { long m = System.currentTimeMillis(); if (pathsToCopy == null && m % 4 == 0) { // System.out.println("cast to String"); diff --git a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java index 3bf7ce95..7c49b5e6 100644 --- a/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java +++ b/json-smart-action/src/test/java/net/minidev/json/test/actions/PathsRetainerTest.java @@ -11,12 +11,11 @@ // import org.junit.runners.Parameterized; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.List; +import java.util.stream.Stream; -import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -24,109 +23,94 @@ /** * @author adoneitan@gmail.com */ -// @RunWith(Parameterized.class) public class PathsRetainerTest { - private String jsonToReduce; - private Object keyToKeep; - private String expectedReducedJson; + + public static Stream params() { + return Stream.of( + //nulls, bad/empty keys + Arguments.of(null, null, null ), + Arguments.of(null, "", null ), + Arguments.of(null, "k1", null ), + Arguments.of(null, new String[]{}, null ), + Arguments.of(null, new JSONArray(), null ), + Arguments.of(null, new ArrayList(0), null ),//5 + //empty json, bad/empty keys + Arguments.of("{}", null, "{}" ), + Arguments.of("{}", "", "{}" ), + Arguments.of("{}", "k1", "{}" ), + Arguments.of("{}", new String[]{}, "{}" ), + Arguments.of("{}", new JSONArray(), "{}" ), + Arguments.of("{}", new ArrayList(0), "{}" ),//11 + //simple json, bad/empty keys + Arguments.of("{\"k0\":\"v0\"}", null, "{}" ), + Arguments.of("{\"k0\":\"v0\"}", "", "{}" ), + Arguments.of("{\"k0\":\"v0\"}", "k1", "{}" ), + Arguments.of("{\"k0\":\"v0\"}", new String[]{}, "{}" ), + Arguments.of("{\"k0\":\"v0\"}", new JSONArray(), "{}" ), + Arguments.of("{\"k0\":\"v0\"}", new ArrayList(0), "{}" ),//17 + //simple json, valid/invalid keys + Arguments.of("{\"k0\":\"v0\"}", "k0", "{\"k0\":\"v0\"}" ), + Arguments.of("{\"k0\":\"v0\"}", "v0", "{}" ), + Arguments.of("{\"k0\":\"v0\"}", "k0.k1", "{}" ), + Arguments.of("{\"k0\":\"v0\"}", "k1.k0", "{}" ), + Arguments.of("{\"k0\":null}", "k0", "{\"k0\":null}" ), + Arguments.of("{\"k0\":null}", "v0", "{}" ),//23 + //key with dot char + Arguments.of("{\"k0.k1\":\"v0\"}", "k0", "{}" ), + Arguments.of("{\"k0.k1\":\"v0\"}", "k1", "{}" ), + Arguments.of("{\"k0.k1\":\"v0\"}", "k0.k1", "{}" ), + // key with dot ambiguity + Arguments.of("{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k0", "{\"k0\":{}}" ),//27 + Arguments.of("{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k1", "{}" ), + Arguments.of("{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k0.k1", "{\"k0\":{\"k1\":null}}" ),//29 + Arguments.of("{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k0.k1", "{\"k0\":{\"k1\":{}}}" ), + Arguments.of("{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k0.k1.k2", "{\"k0\":{\"k1\":{\"k2\":null}}}" ),//31 + Arguments.of("{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k1.k2", "{}" ), + Arguments.of("{\"k0\":{\"k1.k2\":\"dot\"},\"k1\":{\"k2\":\"v2\"}}}","k0", "{\"k0\":{}}}" ), + Arguments.of("{\"k0\":{\"k1.k2\":\"dot\"},\"k1\":{\"k2\":\"v2\"}}}","k1.k2", "{\"k1\":{\"k2\":\"v2\"}}}" ), + Arguments.of("{\"k0\":{\"k1\":\"v1\",\"k2\":{\"k3.k4\":\"dot\"}}}", "k0.k2.k3.k4", "{}" ), + Arguments.of("{\"k0\":{\"k1\":\"v1\",\"k2\":{\"k3.k4\":\"dot\"}}}", "k0.k2.k3", "{}" ), + Arguments.of("{\"k0\":{\"k1\":\"v1\",\"k2\":{\"k3.k4\":\"dot\"}}}", "k0.k2", "{\"k0\":{\"k2\":{}}}" ), + Arguments.of("{\"k0\":{\"k1\":\"v1\",\"k2\":{\"k3.k4\":\"dot\"}}}", "k0", "{\"k0\":{}}" ), + + //ignore non-existent keys but keep good keys + Arguments.of("{\"k0\":\"v0\",\"k1\":\"v1\"}", new String[]{"k0","k2"}, "{\"k0\":\"v0\"}" ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k2"}, "{\"k0\":\"v0\"}" ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1.k2"}, "{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}" ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k0.k2"}, "{\"k0\":\"v0\"}" ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1.k2","k1"}, "{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}" ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1"}, "{\"k0\":\"v0\",\"k1\":{}}" ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1","k2"}, "{\"k0\":\"v0\",\"k1\":{}}" ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k1.k2"}, "{\"k1\":{\"k2\":\"v2\"}}" ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k1.k2.k3"}, "{}" ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0.k1.k2"}, "{}" ), + Arguments.of("{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k1.k0"}, "{}" ), + //arrays - key inside array treated as child + Arguments.of("{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0", "{\"k0\":{}}" ), + Arguments.of("{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1", "{\"k0\":{\"k1\":[1,{},3,4]}}" ), + Arguments.of("{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1.k2", "{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}" ), + Arguments.of("{\"k0\":{\"k1\":[{\"k2\":\"v2\"},{\"k2\":\"v2\"}]}}", "k0.k1", "{\"k0\":{\"k1\":[{},{}]}}" ), + Arguments.of("{\"k0\":{\"k1\":[{\"k2\":\"v2\"},{\"k2\":\"v2\"}]}}", "k0.k1.k2", "{\"k0\":{\"k1\":[{\"k2\":\"v2\"},{\"k2\":\"v2\"}]}}" ) + ); + } + + @ParameterizedTest @MethodSource("params") - public PathsRetainerTest(String jsonToReduce, Object keyToKeep, String expectedReducedJson) { - this.jsonToReduce = jsonToReduce; - this.keyToKeep = keyToKeep; - this.expectedReducedJson = expectedReducedJson; - } - - // @Parameterized.Parameters - public static Collection params() { - return Arrays - .asList(new Object[][] { - - //nulls, bad/empty keys - {null, null, null }, - {null, "", null }, - {null, "k1", null }, - {null, new String[]{}, null }, - {null, new JSONArray(), null }, - {null, new ArrayList(0), null },//5 - - //empty json, bad/empty keys - {"{}", null, "{}" }, - {"{}", "", "{}" }, - {"{}", "k1", "{}" }, - {"{}", new String[]{}, "{}" }, - {"{}", new JSONArray(), "{}" }, - {"{}", new ArrayList(0), "{}" },//11 - - //simple json, bad/empty keys - {"{\"k0\":\"v0\"}", null, "{}" }, - {"{\"k0\":\"v0\"}", "", "{}" }, - {"{\"k0\":\"v0\"}", "k1", "{}" }, - {"{\"k0\":\"v0\"}", new String[]{}, "{}" }, - {"{\"k0\":\"v0\"}", new JSONArray(), "{}" }, - {"{\"k0\":\"v0\"}", new ArrayList(0), "{}" },//17 - - //simple json, valid/invalid keys - {"{\"k0\":\"v0\"}", "k0", "{\"k0\":\"v0\"}" }, - {"{\"k0\":\"v0\"}", "v0", "{}" }, - {"{\"k0\":\"v0\"}", "k0.k1", "{}" }, - {"{\"k0\":\"v0\"}", "k1.k0", "{}" }, - {"{\"k0\":null}", "k0", "{\"k0\":null}" }, - {"{\"k0\":null}", "v0", "{}" },//23 - - //key with dot char - {"{\"k0.k1\":\"v0\"}", "k0", "{}" }, - {"{\"k0.k1\":\"v0\"}", "k1", "{}" }, - {"{\"k0.k1\":\"v0\"}", "k0.k1", "{}" }, - - // key with dot ambiguity - {"{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k0", "{\"k0\":{}}" },//27 - {"{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k1", "{}" }, - {"{\"k0.k1\":\"withDot\",\"k0\":{\"k1\":null}}", "k0.k1", "{\"k0\":{\"k1\":null}}" },//29 - {"{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k0.k1", "{\"k0\":{\"k1\":{}}}" }, - {"{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k0.k1.k2", "{\"k0\":{\"k1\":{\"k2\":null}}}" },//31 - {"{\"k0\":{\"k1.k2\":\"dot\",\"k1\":{\"k2\":null}}}", "k1.k2", "{}" }, - {"{\"k0\":{\"k1.k2\":\"dot\"},\"k1\":{\"k2\":\"v2\"}}}","k0", "{\"k0\":{}}}" }, - {"{\"k0\":{\"k1.k2\":\"dot\"},\"k1\":{\"k2\":\"v2\"}}}","k1.k2", "{\"k1\":{\"k2\":\"v2\"}}}" }, - {"{\"k0\":{\"k1\":\"v1\",\"k2\":{\"k3.k4\":\"dot\"}}}", "k0.k2.k3.k4", "{}" }, - {"{\"k0\":{\"k1\":\"v1\",\"k2\":{\"k3.k4\":\"dot\"}}}", "k0.k2.k3", "{}" }, - {"{\"k0\":{\"k1\":\"v1\",\"k2\":{\"k3.k4\":\"dot\"}}}", "k0.k2", "{\"k0\":{\"k2\":{}}}" }, - {"{\"k0\":{\"k1\":\"v1\",\"k2\":{\"k3.k4\":\"dot\"}}}", "k0", "{\"k0\":{}}" }, - - //ignore non-existent keys but keep good keys - {"{\"k0\":\"v0\",\"k1\":\"v1\"}", new String[]{"k0","k2"}, "{\"k0\":\"v0\"}" }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k2"}, "{\"k0\":\"v0\"}" }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1.k2"}, "{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}" }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k0.k2"}, "{\"k0\":\"v0\"}" }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1.k2","k1"}, "{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}" }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1"}, "{\"k0\":\"v0\",\"k1\":{}}" }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0","k1","k2"}, "{\"k0\":\"v0\",\"k1\":{}}" }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k1.k2"}, "{\"k1\":{\"k2\":\"v2\"}}" }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k1.k2.k3"}, "{}" }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k0.k1.k2"}, "{}" }, - {"{\"k0\":\"v0\",\"k1\":{\"k2\":\"v2\"}}", new String[]{"k1.k0"}, "{}" }, - - //arrays - key inside array treated as child - {"{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0", "{\"k0\":{}}" }, - {"{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1", "{\"k0\":{\"k1\":[1,{},3,4]}}" }, - {"{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}", "k0.k1.k2", "{\"k0\":{\"k1\":[1,{\"k2\":\"v2\"},3,4]}}" }, - {"{\"k0\":{\"k1\":[{\"k2\":\"v2\"},{\"k2\":\"v2\"}]}}", "k0.k1", "{\"k0\":{\"k1\":[{},{}]}}" }, - {"{\"k0\":{\"k1\":[{\"k2\":\"v2\"},{\"k2\":\"v2\"}]}}", "k0.k1.k2", "{\"k0\":{\"k1\":[{\"k2\":\"v2\"},{\"k2\":\"v2\"}]}}" }, - }); - } - - @Test - public void test() throws ParseException { - JSONObject objectToReduce = jsonToReduce != null ? (JSONObject) JSONValue.parseWithException(jsonToReduce) : null; - JSONObject expectedReducedObj = expectedReducedJson != null ? (JSONObject) JSONValue.parseWithException(expectedReducedJson) : null; - PathsRetainer retainer = switchKeyToRemove().with(new DotDelimiter().withAcceptDelimiterInNodeName(false)); + public void test(String jsonToReduce, Object keyToKeep, String expectedReducedJson) throws ParseException { + JSONObject objectToReduce = jsonToReduce != null ? (JSONObject) JSONValue.parseWithException(jsonToReduce) + : null; + JSONObject expectedReducedObj = expectedReducedJson != null + ? (JSONObject) JSONValue.parseWithException(expectedReducedJson) + : null; + PathsRetainer retainer = switchKeyToRemove(keyToKeep).with(new DotDelimiter().withAcceptDelimiterInNodeName(false)); JSONObject reducedObj = retainer.retain(objectToReduce); assertEquals(expectedReducedObj, reducedObj); } @SuppressWarnings("unchecked") - private PathsRetainer switchKeyToRemove() { + private PathsRetainer switchKeyToRemove(Object keyToKeep) { long m = System.currentTimeMillis(); if (keyToKeep == null && m % 4 == 0) { // System.out.println("cast to String"); diff --git a/json-smart/src/main/java/net/minidev/json/JSONNavi.java b/json-smart/src/main/java/net/minidev/json/JSONNavi.java index d508ffd7..eeeaea21 100644 --- a/json-smart/src/main/java/net/minidev/json/JSONNavi.java +++ b/json-smart/src/main/java/net/minidev/json/JSONNavi.java @@ -86,6 +86,8 @@ public JSONNavi(String json, Class mapTo) { /** * return to root node + * + * @return the root node */ public JSONNavi root() { this.current = this.root; @@ -299,6 +301,8 @@ public JSONNavi add(Object... values) { /** * get the current object value as String if the current Object is null * return null. + * + * @return value as string */ public String asString() { if (current == null) @@ -311,6 +315,8 @@ public String asString() { /** * get the current value as double if the current Object is null return * Double.NaN + * + * @return value as double */ public double asDouble() { if (current instanceof Number) @@ -321,6 +327,8 @@ public double asDouble() { /** * get the current object value as Double if the current Double can not be * cast as Integer return null. + * + * @return value as Double */ public Double asDoubleObj() { if (current == null) @@ -336,8 +344,10 @@ public Double asDoubleObj() { /** * get the current value as float if the current Object is null return * Float.NaN + * + * @return value as float */ - public double asFloat() { + public float asFloat() { if (current instanceof Number) return ((Number) current).floatValue(); return Float.NaN; @@ -360,6 +370,8 @@ public Float asFloatObj() { /** * get the current value as int if the current Object is null return 0 + * + * @return value as Int */ public int asInt() { if (current instanceof Number) @@ -390,6 +402,8 @@ public Integer asIntegerObj() { /** * get the current value as long if the current Object is null return 0 + * + * @return value as long */ public long asLong() { if (current instanceof Number) @@ -400,6 +414,8 @@ public long asLong() { /** * get the current object value as Long if the current Object can not be * cast as Long return null. + * + * @return value as Long */ public Long asLongObj() { if (current == null) @@ -417,6 +433,8 @@ public Long asLongObj() { /** * get the current value as boolean if the current Object is null or is not * a boolean return false + * + * @return boolean */ public boolean asBoolean() { if (current instanceof Boolean) @@ -427,6 +445,8 @@ public boolean asBoolean() { /** * get the current object value as Boolean if the current Object is not a * Boolean return null. + * + * @return Boolean object */ public Boolean asBooleanObj() { if (current == null) @@ -543,6 +563,8 @@ else if (isArray(parent)) { /** * is the current node is an array + * + * @return true if the current node is an array */ public boolean isArray() { return isArray(current); @@ -550,6 +572,8 @@ public boolean isArray() { /** * is the current node is an object + * + * @return true if the current node is an object */ public boolean isObject() { return isObject(current); @@ -557,6 +581,8 @@ public boolean isObject() { /** * check if Object is an Array + * + * @return true if the object is an array */ private boolean isArray(Object obj) { if (obj == null) @@ -566,6 +592,7 @@ private boolean isArray(Object obj) { /** * check if Object is an Map + * @return true if the object node is an object */ private boolean isObject(Object obj) { if (obj == null) @@ -575,6 +602,7 @@ private boolean isObject(Object obj) { /** * internal cast to List + * @return casted object */ @SuppressWarnings("unchecked") private List a(Object obj) { diff --git a/json-smart/src/main/java/net/minidev/json/JSONValue.java b/json-smart/src/main/java/net/minidev/json/JSONValue.java index 46fec60d..86b41081 100644 --- a/json-smart/src/main/java/net/minidev/json/JSONValue.java +++ b/json-smart/src/main/java/net/minidev/json/JSONValue.java @@ -287,6 +287,10 @@ public static Object parse(String s) { /** * Parse Json input to a java Object keeping element order * + * @param in json source + * + * @return a OrderedMap preserving field order. + * * @since 1.0.6.1 */ public static Object parseKeepingOrder(Reader in) { @@ -300,7 +304,11 @@ public static Object parseKeepingOrder(Reader in) { /** * Parse Json input to a java Object keeping element order * - * @since 1.0.6.1 + * @param in json source + * + * @return a OrderedMap preserving field order.\ + * + * @since 1.0.6.1 */ public static Object parseKeepingOrder(String in) { try { @@ -310,26 +318,6 @@ public static Object parseKeepingOrder(String in) { } } - /** - * Parse Json Using SAX event handler - * - * @since 1.0.6.2 - * @removed in 2.0 - */ - // public static void SAXParse(String input, ContentHandler handler) throws - // ParseException { - // } - - /** - * Parse Json Using SAX event handler - * - * @since 1.0.6.2 - * @removed in 2.0 - */ - // public static void SAXParse(Reader input, ContentHandler handler) throws - // ParseException, IOException { - // } - /** * Reformat Json input keeping element order * @@ -338,7 +326,7 @@ public static Object parseKeepingOrder(String in) { * * @since 1.0.6.2 * - * need to be rewrite in 2.0 + * @return json string */ public static String compress(String input, JSONStyle style) { try { @@ -421,6 +409,8 @@ public static Object parseWithException(Reader in) throws IOException, ParseExce * @see JSONParser * + * @throws ParseException if input in invalid + * * @return Instance of the following: JSONObject, JSONArray, String, * java.lang.Number, java.lang.Boolean, null */ @@ -432,10 +422,11 @@ public static Object parseWithException(String input) throws ParseException { * Parse input json as a mapTo class * * @param in source to parse - * - * mapTo can be a bean + * @param mapTo destination type, mapTo can be a javabean * * @since 2.0 + * + * @return unserialized object of type mapTo */ public static T parseWithException(String in, Class mapTo) throws ParseException { JSONParser p = new JSONParser(DEFAULT_PERMISSIVE_MODE); @@ -576,7 +567,7 @@ public static void registerReader(Class type, JsonReaderI mapper) { *

* If this object is a Map or a List, and it's also a JSONStreamAware or a * JSONAware, JSONStreamAware or JSONAware will be considered firstly. - *

+ *

* * @see JSONObject#writeJSON(Map, Appendable) * @see JSONArray#writeJSONString(List, Appendable) @@ -611,6 +602,10 @@ public static void writeJSONString(Object value, Appendable out, JSONStyle compr * JSONAware, JSONStreamAware or JSONAware will be considered firstly. *

* + * @param value object to serialize + * + * @return json string + * * @see JSONObject#writeJSON(Map, Appendable) * @see JSONArray#writeJSONString(List, Appendable) */ @@ -628,6 +623,9 @@ public static String toJSONString(Object value) { * both JSONAware and Map or List with "this" as the parameter, use * JSONObject.toJSONString(Map) or JSONArray.toJSONString(List) instead. * + * @param object to serialize + * @param compression serialisation options + * * @see JSONObject#toJSONString(Map) * @see JSONArray#toJSONString(List) * @@ -651,6 +649,11 @@ public static String escape(String s) { /** * Escape quotes, \, /, \r, \n, \b, \f, \t and other control characters * (U+0000 through U+001F). + * + * @param s string to escape + * @param compression compression options + * + * @return escaped string */ public static String escape(String s, JSONStyle compression) { if (s == null) From 4da35edfd6da83f6c04c206bb00f1f08185d1b20 Mon Sep 17 00:00:00 2001 From: urielch Date: Sat, 3 Apr 2021 20:08:46 +0300 Subject: [PATCH 5/5] upgrade code --- .../main/java/net/minidev/asm/ASMUtil.java | 48 +++++++++---------- .../java/net/minidev/asm/BeansAccess.java | 1 + .../net/minidev/asm/BeansAccessBuilder.java | 34 ++++++------- .../net/minidev/asm/DynamicClassLoader.java | 1 + .../main/java/net/minidev/json/JSONNavi.java | 12 +++++ pom.xml | 4 +- 6 files changed, 57 insertions(+), 43 deletions(-) diff --git a/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java b/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java index ed25b7eb..2f4e37c5 100644 --- a/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java +++ b/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java @@ -79,28 +79,28 @@ static public Accessor[] getAccessors(Class type, FieldFilter filter) { protected static void autoBoxing(MethodVisitor mv, Type fieldType) { switch (fieldType.getSort()) { case Type.BOOLEAN: - mv.visitMethodInsn(INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;"); + mv.visitMethodInsn(INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;", false); break; case Type.BYTE: - mv.visitMethodInsn(INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;"); + mv.visitMethodInsn(INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;", false); break; case Type.CHAR: - mv.visitMethodInsn(INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;"); + mv.visitMethodInsn(INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;", false); break; case Type.SHORT: - mv.visitMethodInsn(INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;"); + mv.visitMethodInsn(INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;", false); break; case Type.INT: - mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;"); + mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;", false); break; case Type.FLOAT: - mv.visitMethodInsn(INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;"); + mv.visitMethodInsn(INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;", false); break; case Type.LONG: - mv.visitMethodInsn(INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;"); + mv.visitMethodInsn(INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;", false); break; case Type.DOUBLE: - mv.visitMethodInsn(INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;"); + mv.visitMethodInsn(INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;", false); break; } } @@ -115,35 +115,35 @@ protected static void autoUnBoxing1(MethodVisitor mv, Type fieldType) { switch (fieldType.getSort()) { case Type.BOOLEAN: mv.visitTypeInsn(CHECKCAST, "java/lang/Boolean"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z", false); break; case Type.BYTE: mv.visitTypeInsn(CHECKCAST, "java/lang/Byte"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Byte", "byteValue", "()B"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Byte", "byteValue", "()B", false); break; case Type.CHAR: mv.visitTypeInsn(CHECKCAST, "java/lang/Character"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Character", "charValue", "()C"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Character", "charValue", "()C", false); break; case Type.SHORT: mv.visitTypeInsn(CHECKCAST, "java/lang/Short"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Short", "shortValue", "()S"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Short", "shortValue", "()S", false); break; case Type.INT: mv.visitTypeInsn(CHECKCAST, "java/lang/Integer"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I", false); break; case Type.FLOAT: mv.visitTypeInsn(CHECKCAST, "java/lang/Float"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Float", "floatValue", "()F"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Float", "floatValue", "()F", false); break; case Type.LONG: mv.visitTypeInsn(CHECKCAST, "java/lang/Long"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Long", "longValue", "()J"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Long", "longValue", "()J", false); break; case Type.DOUBLE: mv.visitTypeInsn(CHECKCAST, "java/lang/Double"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D", false); break; case Type.ARRAY: mv.visitTypeInsn(CHECKCAST, fieldType.getInternalName()); @@ -164,35 +164,35 @@ protected static void autoUnBoxing2(MethodVisitor mv, Type fieldType) { switch (fieldType.getSort()) { case Type.BOOLEAN: mv.visitTypeInsn(CHECKCAST, "java/lang/Boolean"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z", false); break; case Type.BYTE: mv.visitTypeInsn(CHECKCAST, "java/lang/Number"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "byteValue", "()B"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "byteValue", "()B", false); break; case Type.CHAR: mv.visitTypeInsn(CHECKCAST, "java/lang/Character"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Character", "charValue", "()C"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Character", "charValue", "()C", false); break; case Type.SHORT: mv.visitTypeInsn(CHECKCAST, "java/lang/Number"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "shortValue", "()S"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "shortValue", "()S", false); break; case Type.INT: mv.visitTypeInsn(CHECKCAST, "java/lang/Number"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "intValue", "()I"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "intValue", "()I", false); break; case Type.FLOAT: mv.visitTypeInsn(CHECKCAST, "java/lang/Number"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "floatValue", "()F"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "floatValue", "()F", false); break; case Type.LONG: mv.visitTypeInsn(CHECKCAST, "java/lang/Number"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "longValue", "()J"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "longValue", "()J", false); break; case Type.DOUBLE: mv.visitTypeInsn(CHECKCAST, "java/lang/Number"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "doubleValue", "()D"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "doubleValue", "()D", false); break; case Type.ARRAY: mv.visitTypeInsn(CHECKCAST, fieldType.getInternalName()); diff --git a/accessors-smart/src/main/java/net/minidev/asm/BeansAccess.java b/accessors-smart/src/main/java/net/minidev/asm/BeansAccess.java index 929639f3..8ffc02b8 100644 --- a/accessors-smart/src/main/java/net/minidev/asm/BeansAccess.java +++ b/accessors-smart/src/main/java/net/minidev/asm/BeansAccess.java @@ -73,6 +73,7 @@ static public

BeansAccess

get(Class

type) { * to be access * @return the BeansAccess */ + @SuppressWarnings("deprecation") static public

BeansAccess

get(Class

type, FieldFilter filter) { { @SuppressWarnings("unchecked") diff --git a/accessors-smart/src/main/java/net/minidev/asm/BeansAccessBuilder.java b/accessors-smart/src/main/java/net/minidev/asm/BeansAccessBuilder.java index a0ea6281..cf88b3db 100644 --- a/accessors-smart/src/main/java/net/minidev/asm/BeansAccessBuilder.java +++ b/accessors-smart/src/main/java/net/minidev/asm/BeansAccessBuilder.java @@ -117,7 +117,7 @@ public Class bulid() { mv = cw.visitMethod(ACC_PUBLIC, "", "()V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn(INVOKESPECIAL, METHOD_ACCESS_NAME, "", "()V"); + mv.visitMethodInsn(INVOKESPECIAL, METHOD_ACCESS_NAME, "", "()V", false); mv.visitInsn(RETURN); mv.visitMaxs(1, 1); mv.visitEnd(); @@ -192,7 +192,7 @@ public Class bulid() { mv.visitFieldInsn(GETFIELD, classNameInternal, acc.getName(), fieldType.getDescriptor()); } else { String sig = Type.getMethodDescriptor(acc.getter); - mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig); + mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig, false); } ASMUtil.autoBoxing(mv, fieldType); mv.visitInsn(ARETURN); @@ -213,7 +213,7 @@ public Class bulid() { if (acc.getter == null) throw new RuntimeException("no Getter for field " + acc.getName() + " in class " + this.className); String sig = Type.getMethodDescriptor(acc.getter); - mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig); + mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig, false); } ASMUtil.autoBoxing(mv, fieldType); mv.visitInsn(ARETURN); @@ -244,7 +244,7 @@ public Class bulid() { for (Accessor acc : accs) { mv.visitVarInsn(ALOAD, 2); mv.visitLdcInsn(acc.fieldName); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); mv.visitJumpInsn(IFEQ, labels[i]); internalSetFiled(mv, acc); mv.visitLabel(labels[i]); @@ -270,7 +270,7 @@ public Class bulid() { for (Accessor acc : accs) { mv.visitVarInsn(ALOAD, 2); // methodName mv.visitLdcInsn(acc.fieldName); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false); mv.visitJumpInsn(IFEQ, labels[i]); mv.visitVarInsn(ALOAD, 1); // object mv.visitTypeInsn(CHECKCAST, classNameInternal); @@ -279,7 +279,7 @@ public Class bulid() { mv.visitFieldInsn(GETFIELD, classNameInternal, acc.getName(), fieldType.getDescriptor()); } else { String sig = Type.getMethodDescriptor(acc.getter); - mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig); + mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig, false); } ASMUtil.autoBoxing(mv, fieldType); mv.visitInsn(ARETURN); @@ -302,7 +302,7 @@ public Class bulid() { mv.visitCode(); mv.visitTypeInsn(NEW, classNameInternal); mv.visitInsn(DUP); - mv.visitMethodInsn(INVOKESPECIAL, classNameInternal, "", "()V"); + mv.visitMethodInsn(INVOKESPECIAL, classNameInternal, "", "()V", false); mv.visitInsn(ARETURN); mv.visitMaxs(2, 1); mv.visitEnd(); @@ -359,15 +359,15 @@ private void internalSetFiled(MethodVisitor mv, Accessor acc) { String clsSig = Type.getInternalName(conMtd.getDeclaringClass()); String mtdName = conMtd.getName(); String mtdSig = Type.getMethodDescriptor(conMtd); - mv.visitMethodInsn(INVOKESTATIC, clsSig, mtdName, mtdSig); + mv.visitMethodInsn(INVOKESTATIC, clsSig, mtdName, mtdSig, false); } else if (acc.isEnum()) { // builtIn Enum Conversion Label isNull = new Label(); mv.visitJumpInsn(IFNULL, isNull); mv.visitVarInsn(ALOAD, 3); // mv.visitTypeInsn(CHECKCAST, "java/lang/String"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;"); - mv.visitMethodInsn(INVOKESTATIC, destClsName, "valueOf", "(Ljava/lang/String;)L" + destClsName + ";"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;", false); + mv.visitMethodInsn(INVOKESTATIC, destClsName, "valueOf", "(Ljava/lang/String;)L" + destClsName + ";", false); mv.visitVarInsn(ASTORE, 3); mv.visitLabel(isNull); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); @@ -380,7 +380,7 @@ private void internalSetFiled(MethodVisitor mv, Accessor acc) { Label isNull = new Label(); mv.visitJumpInsn(IFNULL, isNull); mv.visitVarInsn(ALOAD, 3); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;", false); mv.visitVarInsn(ASTORE, 3); mv.visitLabel(isNull); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); @@ -396,7 +396,7 @@ private void internalSetFiled(MethodVisitor mv, Accessor acc) { mv.visitFieldInsn(PUTFIELD, classNameInternal, acc.getName(), fieldType.getDescriptor()); } else { String sig = Type.getMethodDescriptor(acc.setter); - mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.setter.getName(), sig); + mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.setter.getName(), sig, false); } mv.visitInsn(RETURN); } @@ -410,9 +410,9 @@ private void throwExIntParam(MethodVisitor mv, Class exCls) { mv.visitInsn(DUP); mv.visitLdcInsn("mapping " + this.className + " failed to map field:"); mv.visitVarInsn(ILOAD, 2); - mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "toString", "(I)Ljava/lang/String;"); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "concat", "(Ljava/lang/String;)Ljava/lang/String;"); - mv.visitMethodInsn(INVOKESPECIAL, exSig, "", "(Ljava/lang/String;)V"); + mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "toString", "(I)Ljava/lang/String;", false); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "concat", "(Ljava/lang/String;)Ljava/lang/String;", false); + mv.visitMethodInsn(INVOKESPECIAL, exSig, "", "(Ljava/lang/String;)V", false); mv.visitInsn(ATHROW); } @@ -425,8 +425,8 @@ private void throwExStrParam(MethodVisitor mv, Class exCls) { mv.visitInsn(DUP); mv.visitLdcInsn("mapping " + this.className + " failed to map field:"); mv.visitVarInsn(ALOAD, 2); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "concat", "(Ljava/lang/String;)Ljava/lang/String;"); - mv.visitMethodInsn(INVOKESPECIAL, exSig, "", "(Ljava/lang/String;)V"); + mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "concat", "(Ljava/lang/String;)Ljava/lang/String;", false); + mv.visitMethodInsn(INVOKESPECIAL, exSig, "", "(Ljava/lang/String;)V", false); mv.visitInsn(ATHROW); } diff --git a/accessors-smart/src/main/java/net/minidev/asm/DynamicClassLoader.java b/accessors-smart/src/main/java/net/minidev/asm/DynamicClassLoader.java index bdefd99c..1699f690 100644 --- a/accessors-smart/src/main/java/net/minidev/asm/DynamicClassLoader.java +++ b/accessors-smart/src/main/java/net/minidev/asm/DynamicClassLoader.java @@ -50,6 +50,7 @@ public static Class directLoad(Class parent, String clsName, return clzz; } + @SuppressWarnings("deprecation") public static T directInstance(Class parent, String clsName, byte[] clsData) throws InstantiationException, IllegalAccessException { Class clzz = directLoad(parent, clsName, clsData); return clzz.newInstance(); diff --git a/json-smart/src/main/java/net/minidev/json/JSONNavi.java b/json-smart/src/main/java/net/minidev/json/JSONNavi.java index eeeaea21..2a549475 100644 --- a/json-smart/src/main/java/net/minidev/json/JSONNavi.java +++ b/json-smart/src/main/java/net/minidev/json/JSONNavi.java @@ -382,6 +382,7 @@ public int asInt() { /** * get the current object value as Integer if the current Object can not be * cast as Integer return null. + * @return the current node value as an Integer */ public Integer asIntegerObj() { if (current == null) @@ -459,6 +460,7 @@ public Boolean asBooleanObj() { /** * Set current value as Json Object You can also skip this call, Objects can * be create automatically. + * @return the current node as an object */ @SuppressWarnings("unchecked") public JSONNavi object() { @@ -485,6 +487,8 @@ public JSONNavi object() { /** * Set current value as Json Array You can also skip this call Arrays can be * create automatically. + * + * @return the current node as an array */ @SuppressWarnings("unchecked") public JSONNavi array() { @@ -510,6 +514,8 @@ public JSONNavi array() { /** * set current value as Number + * @param num new value for the current node + * @return this for code chaining */ public JSONNavi set(Number num) { if (failure) @@ -521,6 +527,9 @@ public JSONNavi set(Number num) { /** * set current value as Boolean + * @param num new value for the current node + * + * @return this for code chaining */ public JSONNavi set(Boolean bool) { if (failure) @@ -532,6 +541,9 @@ public JSONNavi set(Boolean bool) { /** * set current value as String + * @param text text value + * + * @return this for code chaining */ public JSONNavi set(String text) { if (failure) diff --git a/pom.xml b/pom.xml index 2363b85f..65a502a5 100644 --- a/pom.xml +++ b/pom.xml @@ -95,7 +95,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.10.3 + 2.10.4 false @@ -219,7 +219,7 @@ org.apache.maven.plugins maven-release-plugin - 2.5.2 + 2.5.3 forked-path -Psonatype-oss-release