package ca.uhn.fhir.parser.json; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.StringReader; import org.junit.Test; public class JsonLikeStructureTest { // private static FhirContext ourCtx; // private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(JsonLikeStructureTest.class); private static final String TEST_STRUCTURELOADING_DATA = "{" + " \"resourceType\":\"Organization\"," + " \"id\":\"11111\"," + " \"meta\":{" + " \"lastUpdated\":\"3900-09-20T10:10:10.000-07:00\"" + " }," + " \"identifier\":[" + " {" + " \"value\":\"15250\"" + " }" + " ]," + " \"type\":{" + " \"coding\":[" + " {" + " \"system\":\"http://test\"," + " \"code\":\"ins\"," + " \"display\":\"General Ledger System\"," + " \"userSelected\":false" + " }" + " ]" + " }," + " \"name\":\"Acme Investments\"" + "}"; @Test public void testStructureLoading() { StringReader reader = new StringReader(TEST_STRUCTURELOADING_DATA); JsonLikeStructure jsonStructure = new GsonStructure(); jsonStructure.load(reader); JsonLikeObject rootObject = jsonStructure.getRootObject(); assertNotNull(rootObject); assertEquals(JsonLikeValue.ValueType.OBJECT, rootObject.getJsonType()); } private static final String TEST_JSONTYPES_DATA = "{" + " \"scalar-string\":\"A scalar string\"," + " \"scalar-number\":11111," + " \"scalar-boolean\":true," + " \"null-value\":null," + " \"object-value\":{" + " \"lastUpdated\":\"3900-09-20T10:10:10.000-07:00\"," + " \"deleted\":\"3909-09-20T10:10:10.000-07:00\"" + " }," + " \"array-value\":[" + " 12345," + " {" + " \"value\":\"15250\"" + " }" + " ]" + "}"; @Test public void testJsonAndDataTypes() { StringReader reader = new StringReader(TEST_JSONTYPES_DATA); JsonLikeStructure jsonStructure = new GsonStructure(); jsonStructure.load(reader); JsonLikeObject rootObject = jsonStructure.getRootObject(); assertNotNull(rootObject); JsonLikeValue value = rootObject.get("object-value"); assertNotNull(value); assertEquals(JsonLikeValue.ValueType.OBJECT, value.getJsonType()); assertEquals(true, value.isObject()); assertEquals(false, value.isArray()); assertEquals(false, value.isScalar()); assertEquals(false, value.isNull()); JsonLikeObject obj = value.getAsObject(); assertNotNull(obj); assertEquals(JsonLikeValue.ValueType.OBJECT, obj.getJsonType()); assertEquals(true, obj.isObject()); assertEquals(false, obj.isArray()); assertEquals(false, obj.isScalar()); assertEquals(false, obj.isNull()); value = rootObject.get("array-value"); assertNotNull(value); assertEquals(JsonLikeValue.ValueType.ARRAY, value.getJsonType()); assertEquals(false, value.isObject()); assertEquals(true, value.isArray()); assertEquals(false, value.isScalar()); assertEquals(false, value.isNull()); JsonLikeArray array = value.getAsArray(); assertNotNull(array); assertEquals(JsonLikeValue.ValueType.ARRAY, array.getJsonType()); assertEquals(false, array.isObject()); assertEquals(true, array.isArray()); assertEquals(false, array.isScalar()); assertEquals(false, array.isNull()); value = rootObject.get("null-value"); assertNotNull(value); assertEquals(JsonLikeValue.ValueType.NULL, value.getJsonType()); assertEquals(false, value.isObject()); assertEquals(false, value.isArray()); assertEquals(false, value.isScalar()); assertEquals(true, value.isNull()); value = rootObject.get("scalar-string"); assertNotNull(value); assertEquals(JsonLikeValue.ValueType.SCALAR, value.getJsonType()); assertEquals(false, value.isObject()); assertEquals(false, value.isArray()); assertEquals(true, value.isScalar()); assertEquals(false, value.isNull()); assertEquals(JsonLikeValue.ScalarType.STRING, value.getDataType()); assertEquals(value.getAsString(), "A scalar string"); value = rootObject.get("scalar-number"); assertNotNull(value); assertEquals(JsonLikeValue.ValueType.SCALAR, value.getJsonType()); assertEquals(JsonLikeValue.ScalarType.NUMBER, value.getDataType()); assertEquals(value.getAsString(), "11111"); value = rootObject.get("scalar-boolean"); assertNotNull(value); assertEquals(JsonLikeValue.ValueType.SCALAR, value.getJsonType()); assertEquals(JsonLikeValue.ScalarType.BOOLEAN, value.getDataType()); assertEquals(value.getAsString(), "true"); } }