/**
* Oshi (https://github.com/oshi/oshi)
*
* Copyright (c) 2010 - 2017 The Oshi Project Team
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Maintainers:
* dblock[at]dblock[dot]org
* widdis[at]gmail[dot]com
* enrico.bianchi[at]gmail[dot]com
*
* Contributors:
* https://github.com/oshi/oshi/graphs/contributors
*/
package oshi.json.json;
import static org.junit.Assert.assertEquals;
import java.math.BigDecimal;
import java.math.BigInteger;
import javax.json.Json;
import javax.json.JsonArrayBuilder;
import javax.json.JsonBuilderFactory;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.JsonValue;
import org.junit.Test;
public class NullAwareJsonObjectBuilderTest {
@Test(expected = IllegalArgumentException.class)
public void testWrapNull() {
NullAwareJsonObjectBuilder.wrap(null);
}
@Test
public void testBuilder() {
JsonBuilderFactory jsonFactory = Json.createBuilderFactory(null);
JsonObjectBuilder json = NullAwareJsonObjectBuilder.wrap(jsonFactory.createObjectBuilder());
json.addNull("null");
json.add("nullValue", JsonValue.NULL);
json.add("false", JsonValue.FALSE);
String nullString = null;
json.add("nullString", nullString);
json.add("string", "String");
BigInteger nullBigInt = null;
json.add("nullBigInt", nullBigInt);
json.add("big1", BigInteger.ONE);
BigDecimal nullBigDec = null;
json.add("nullBigDec", nullBigDec);
json.add("big0.42", BigDecimal.valueOf(0.42));
json.add("int", 42);
json.add("long", 4200L);
json.add("double", 42d);
json.add("boolean", true);
JsonArrayBuilder arrayBuilder = null;
json.add("nullArray", arrayBuilder);
arrayBuilder = jsonFactory.createArrayBuilder();
JsonObjectBuilder jsonA = null;
json.add("nullBuilder", jsonA);
jsonA = NullAwareJsonObjectBuilder.wrap(jsonFactory.createObjectBuilder());
JsonObject zero = null;
json.add("nullObject", zero);
zero = jsonA.add("zero", 0).build();
arrayBuilder.add(zero);
json.add("zeroArray", arrayBuilder);
json.add("zeroObject", zero);
JsonObject obj = json.build();
assertEquals(JsonValue.NULL, obj.get("null"));
assertEquals(JsonValue.NULL, obj.get("nullValue"));
assertEquals(JsonValue.FALSE, obj.get("false"));
assertEquals(JsonValue.NULL, obj.get("nullString"));
assertEquals(JsonValue.ValueType.STRING, obj.get("string").getValueType());
assertEquals("\"String\"", obj.get("string").toString());
assertEquals(JsonValue.NULL, obj.get("nullBigInt"));
assertEquals(JsonValue.ValueType.NUMBER, obj.get("big1").getValueType());
assertEquals("1", obj.get("big1").toString());
assertEquals(JsonValue.NULL, obj.get("nullBigDec"));
assertEquals(JsonValue.ValueType.NUMBER, obj.get("big0.42").getValueType());
assertEquals("0.42", obj.get("big0.42").toString());
assertEquals(JsonValue.ValueType.NUMBER, obj.get("int").getValueType());
assertEquals("42", obj.get("int").toString());
assertEquals(JsonValue.ValueType.NUMBER, obj.get("long").getValueType());
assertEquals("4200", obj.get("long").toString());
assertEquals(JsonValue.ValueType.NUMBER, obj.get("double").getValueType());
assertEquals("42.0", obj.get("double").toString());
assertEquals(JsonValue.ValueType.TRUE, obj.get("boolean").getValueType());
assertEquals("true", obj.get("boolean").toString());
assertEquals(JsonValue.ValueType.ARRAY, obj.get("zeroArray").getValueType());
assertEquals("[{\"zero\":0}]", obj.get("zeroArray").toString());
assertEquals(JsonValue.ValueType.OBJECT, obj.get("zeroObject").getValueType());
assertEquals("{\"zero\":0}", obj.get("zeroObject").toString());
assertEquals(JsonValue.NULL, obj.get("nullArray"));
assertEquals(JsonValue.NULL, obj.get("nullObject"));
assertEquals(JsonValue.NULL, obj.get("nullBuilder"));
}
}