diff --git a/engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlEngineTests.java b/engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlEngineTests.java index a44d1b5d..e551205d 100644 --- a/engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlEngineTests.java +++ b/engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlEngineTests.java @@ -5,9 +5,10 @@ import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; - import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; import java.io.StringWriter; import java.nio.charset.StandardCharsets; import java.util.ArrayList; @@ -42,20 +43,37 @@ public class CqlEngineTests { } private Library toLibrary(String text) throws IOException, JAXBException { + return toLibrary( text, CqlTranslator.Format.XML ); + } + + private Library toLibrary(String text, CqlTranslator.Format format) throws IOException, JAXBException { ModelManager modelManager = new ModelManager(); LibraryManager libraryManager = new LibraryManager(modelManager); - return this.toLibrary(text, modelManager, libraryManager); + return this.toLibrary(text, modelManager, libraryManager, format); } - private Library toLibrary(String text, ModelManager modelManager, LibraryManager libraryManager) throws IOException, JAXBException { + private Library toLibrary(String text, ModelManager modelManager, LibraryManager libraryManager, CqlTranslator.Format format) throws IOException, JAXBException { CqlTranslator translator = CqlTranslator.fromText(text, modelManager, libraryManager); - return this.readXml(translator.toXml()); + switch( format ) { + case XML: + return this.readXml(translator.toXml()); + case JSON: + return this.readJson(translator.toJson()); + default: + throw new IllegalArgumentException( String.format( "No support for format %s", format.name() ) ); + } } private Library readXml(String xml) throws IOException, JAXBException { return CqlLibraryReader.read(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8))); } + + private Library readJson(String json ) throws IOException { + try( Reader r = new StringReader(json) ) { + return JsonCqlLibraryReader.read(r); + } + } private org.hl7.elm.r1.VersionedIdentifier toElmIdentifier(String name, String version) { return new org.hl7.elm.r1.VersionedIdentifier().withId(name).withVersion(version); @@ -91,6 +109,22 @@ public class CqlEngineTests { EvaluationResult result = engine.evaluate("Test"); + Object expResult = result.forExpression("X"); + + assertThat(expResult, is(10)); + } + + @Test + public void test_simpleLibraryJson_returnsResult() throws IOException, JAXBException { + Library library = this.toLibrary("library Test version '1.0.0'\ndefine X:\n5+5", CqlTranslator.Format.JSON); + + LibraryLoader libraryLoader = new InMemoryLibraryLoader(Collections.singleton(library)); + + CqlEngine engine = new CqlEngine(libraryLoader); + + EvaluationResult result = engine.evaluate("Test"); + + Object expResult = result.forExpression("X"); assertThat(expResult, is(10));