private static String toJson(Map<?,?> x) { // was: // return new Gson().toJson(x); // but GSON does funny things with DSL, whereas toString is the right thing to do return Jsonya.newInstance().add(x).toString(); }
@Test public void testAddStringsAtRootDefaultsToMap() { Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().add("a", 1); Assert.assertEquals( j.toString(), "{ \"a\": 1 }"); }
@Test public void testAddStringToRoot() { Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().add("a"); Assert.assertEquals( j.toString(), "\"a\""); Assert.assertEquals( j.get(), "a"); }
@Test public void testAddOddStringsAtRootIsError() { try { Jsonya.newInstance().add("a", 1, "b"); Asserts.shouldHaveFailedPreviously(); } catch (Exception e) { Asserts.expectedFailureContainsIgnoreCase(e, "odd"); } }
@Test public void testAddMapAddsReference() { MutableMap<Object, Object> map = MutableMap.<Object,Object>of("a", 1, "b", 2); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().add("root", map); Assert.assertEquals( j.toString(), "{ \"root\": { \"a\": 1, \"b\": 2 } }"); map.put("b", 1); Assert.assertEquals( j.toString(), "{ \"root\": { \"a\": 1, \"b\": 1 } }"); }
@Test public void testAddListAddsReference() { MutableList<Object> list = MutableList.<Object>of("a", "b"); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().add("root", list); Assert.assertEquals( j.toString(), "{ \"root\": [ \"a\", \"b\" ] }"); list.append("c"); Assert.assertEquals( j.toString(), "{ \"root\": [ \"a\", \"b\", \"c\" ] }"); }
@Test public void testAddMapAtRootAddsReference() { MutableMap<Object, Object> map = MutableMap.<Object,Object>of("a", 1, "b", 2); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().add(map); Assert.assertEquals( j.toString(), "{ \"a\": 1, \"b\": 2 }"); map.put("b", 1); Assert.assertEquals( j.toString(), "{ \"a\": 1, \"b\": 1 }"); }
@Test public void testAddListAtRootAddsReference() { MutableList<Object> list = MutableList.<Object>of("a", "b"); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().add(list); Assert.assertEquals( j.toString(), "[ \"a\", \"b\" ]"); list.append("c"); Assert.assertEquals( j.toString(), "[ \"a\", \"b\", \"c\" ]"); }
@Test public void testAddMapToExistingRootAddsCopy() { MutableMap<Object, Object> map = MutableMap.<Object,Object>of("a", 1, "b", 2); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().map().add(map); Assert.assertEquals( j.toString(), "{ \"a\": 1, \"b\": 2 }"); map.put("b", 1); Assert.assertEquals( j.toString(), "{ \"a\": 1, \"b\": 2 }"); }
@Test public void testAddStringToList() { Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().at("root").list().add("a", "b").root(); Assert.assertEquals( j.toString(), "{ \"root\": [ \"a\", \"b\" ] }"); }
@Test public void testAddStringToListAtRoot() { Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().list().add("a", "b").root(); Assert.assertEquals( j.toString(), "[ \"a\", \"b\" ]" ); Assert.assertEquals( j.get(), MutableList.of("a", "b") ); }
@Test public void testAddStringAtKey() { Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().at("root").add("value").root(); Assert.assertEquals( j.get(), MutableMap.of("root", "value")); } public void testAddStringAtKeySequence() {
@Test public void testAddListToExistingRootAddsCopy() { MutableList<Object> list = MutableList.<Object>of("a", "b"); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().list().add(list); Assert.assertEquals( j.toString(), "[ \"a\", \"b\" ]"); list.append("c"); Assert.assertEquals( j.toString(), "[ \"a\", \"b\" ]"); }
@Test public void testAddMapToExistingAddsCopy() { MutableMap<Object, Object> map = MutableMap.<Object,Object>of("a", 1, "b", 2); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().at("root").map().add(map).root(); Assert.assertEquals( j.toString(), "{ \"root\": { \"a\": 1, \"b\": 2 } }"); map.put("b", 1); Assert.assertEquals( j.toString(), "{ \"root\": { \"a\": 1, \"b\": 2 } }"); }
public void testAddStringAtKeySequence() { Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().at("1", "2").add("value"); Assert.assertEquals( j.get(), MutableMap.of("1", MutableMap.of("2", "value"))); } }
@Test public void testAddListToExistingAddsCopy() { MutableList<Object> list = MutableList.<Object>of("a", "b"); Navigator<MutableMap<Object, Object>> j = Jsonya.newInstance().at("root").list().add(list).root(); Assert.assertEquals( j.toString(), "{ \"root\": [ \"a\", \"b\" ] }"); list.append("c"); Assert.assertEquals( j.toString(), "{ \"root\": [ \"a\", \"b\" ] }"); }
public static JsonElement europeMap() { Navigator<MutableMap<Object, Object>> europe = Jsonya.newInstance().at("europe", "uk", "edinburgh") .put("population", 500*1000) .put("weather", "wet", "lighting", "dark") .root().at("europe").at("france").put("population", 80*1000*1000) .root(); return new JsonParser().parse( europe.toString() ); }
@Test public void testJsonyaDeepMoreComplicated() { Navigator<MutableMap<Object, Object>> n = Jsonya.of(europeMap()).at("asia") .list().add("china", "japan") .root().add( Jsonya.newInstance().at("europe", "uk", "glasgow").put("weather", "even wetter").getRootMap() ); Assert.assertEquals( n.getRootMap().size(), 2 ); Assert.assertTrue( n.root().at("asia").get(List.class).contains("china") ); Assert.assertTrue( ((List<?>)n.root().get("asia")).contains("japan") ); Assert.assertEquals(n.root().at("europe", "uk").get(Map.class).size(), 2); Assert.assertEquals(n.root().at("europe", "uk", "edinburgh", "weather").get(), "wet"); Assert.assertEquals(n.root().at("europe", "uk", "glasgow", "weather").get(), "even wetter"); }
public static Navigator<MutableMap<Object,Object>> europeMap() { return Jsonya.newInstance().at("europe", "uk", "edinburgh") .put("population", 500*1000) .put("weather", "wet", "lighting", "dark") .root().at("europe").at("france").put("population", 80*1000*1000) .root(); }
private MockResponse applicationStatusResponse(String status) { String body = Jsonya.newInstance() .put("status", status) .at("spec", "locations").list().add("localhost") .root() .toString(); return newJsonResponse() .setBody(body); }