package net.minidev.json.test.actions; import net.minidev.json.JSONObject; 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 java.util.*; import static org.junit.Assert.assertEquals; /** * Tests {@link ElementRemover} * * @author [email protected] */ @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); } private static String filter(String test) { if (test == null) return null; return test.replace("'", "\""); } @Parameterized.Parameters public static Collection<String[]> params() { List<String[]> 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 { 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; ElementRemover er = new ElementRemover(toRemove); 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<String>"); // return new ElementRemover((List<String>)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<String>) elementsToRemove); // } // else // { // throw new IllegalArgumentException("bad test setup: wrong type of key to remove"); // } // } }