@Override protected JsonObject createNew() { return new MapBasedJsonObject(); }
public void shouldBeImmutable() { JsonObject o = object(field("x", 42)); MapBasedJsonObject mo = o.toMapBasedJsonObject(); assertThat(o.isMutable()).isTrue(); assertThat(mo.isMutable()).isTrue(); JsonObject imo = mo.immutableClone(); assertThat(imo.isMutable()).isFalse(); }
@Override public MapBasedJsonObject toMapBasedJsonObject() { return new MapBasedJsonObject(this); }
@Override public JsonObject immutableClone() { return new MapBasedJsonObject(this, () -> new LinkedHashMap<>(), true); }
@DataProvider public Object[][] objectConstructors() { return new Supplier[][]{ {() -> new JsonObject()}, {() -> new MapBasedJsonObject()}, {() -> new SimpleIntMapJsonObject()} }; }
public void shouldScaleNumberOfKeys() { // this test proves two points: // 1) inserting 1000000 elements is fast o(1) // 2) establishing a non existent key is not there is fast-ish // if it is not, both will take ages JsonObject jsonObject = new MapBasedJsonObject(); for(int i=0;i<100000;i++) { jsonObject.put("key_"+i, i); } JsonElement jsonElement = jsonObject.get("key_IDONTEXIST"); assertThat(jsonElement).isNull(); JsonElement parsed = parser.parse(jsonObject.toString()); assertThat(parsed).isEqualTo(jsonObject); }
public boolean endObjectEntry() { JsonElement value = stack.pollLast(); JsonElement e = stack.peekLast(); if (e.isPrimitive()) { // field name e = stack.pollLast(); JsonObject container = stack.peekLast().asObject(); String key = e.asPrimitive().asString(); container.put(key, value); if(container.size()>settings.upgradeThresholdToMapBasedJsonObject() && !MapBasedJsonObject.class.equals(container.getClass())) { JsonElement removed = stack.pollLast(); MapBasedJsonObject newContainer = new MapBasedJsonObject(removed.asObject()); stack.add(newContainer); } } return true; }
IJsonObject o; if(on.size()>100) { o = new MapBasedJsonObject(); } else { o = new JsonObject();
public void shouldNotRevertToJsonObjectWhenCloning() { JsonObject jsonObject = new MapBasedJsonObject(); for(int i=0;i<1000;i++) { jsonObject.put("key_"+i, i); } assertThat(jsonObject.deepClone()).isInstanceOf(MapBasedJsonObject.class); assertThat(jsonObject.immutableClone()).isInstanceOf(MapBasedJsonObject.class); } }