/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.javaee7.json.streaming.generate; import java.io.File; import java.io.StringWriter; import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonObject; import javax.json.JsonWriter; import javax.json.stream.JsonGenerator; import javax.json.stream.JsonGeneratorFactory; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.Archive; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.resolver.api.maven.Maven; import org.json.JSONException; import org.junit.Test; import org.junit.runner.RunWith; import org.skyscreamer.jsonassert.JSONAssert; import org.skyscreamer.jsonassert.JSONCompareMode; /** * * @author Arun Gupta */ @RunWith(Arquillian.class) public class StreamingGeneratorTest { @Deployment public static Archive<?> deploy() { File[] requiredLibraries = Maven.resolver().loadPomFromFile("pom.xml") .resolve("org.json:json", "org.skyscreamer:jsonassert") .withTransitivity().asFile(); return ShrinkWrap.create(WebArchive.class) .addAsLibraries(requiredLibraries); } @Test public void testEmptyObject() throws JSONException { JsonGeneratorFactory factory = Json.createGeneratorFactory(null); StringWriter w = new StringWriter(); JsonGenerator gen = factory.createGenerator(w); gen.writeStartObject().writeEnd(); gen.flush(); JSONAssert.assertEquals("{}", w.toString(), JSONCompareMode.STRICT); } @Test public void testSimpleObject() throws JSONException { JsonGeneratorFactory factory = Json.createGeneratorFactory(null); StringWriter w = new StringWriter(); JsonGenerator gen = factory.createGenerator(w); gen .writeStartObject() .write("apple", "red") .write("banana", "yellow") .writeEnd(); gen.flush(); JSONAssert.assertEquals("{\"apple\" : \"red\", \"banana\" : \"yellow\" }", w.toString(), JSONCompareMode.STRICT); } @Test public void testArray() throws JSONException { JsonGeneratorFactory factory = Json.createGeneratorFactory(null); StringWriter w = new StringWriter(); JsonGenerator gen = factory.createGenerator(w); gen .writeStartArray() .writeStartObject() .write("apple", "red") .writeEnd() .writeStartObject() .write("banana", "yellow") .writeEnd() .writeEnd(); gen.flush(); JSONAssert.assertEquals("[{\"apple\":\"red\"},{\"banana\":\"yellow\"}]", w.toString(), JSONCompareMode.STRICT); } @Test public void testNestedStructure() throws JSONException { JsonGeneratorFactory factory = Json.createGeneratorFactory(null); StringWriter w = new StringWriter(); JsonGenerator gen = factory.createGenerator(w); gen .writeStartObject() .write("title", "The Matrix") .write("year", 1999) .writeStartArray("cast") .write("Keanu Reaves") .write("Laurence Fishburne") .write("Carrie-Anne Moss") .writeEnd() .writeEnd(); gen.flush(); JSONAssert.assertEquals("{\"title\":\"The Matrix\",\"year\":1999,\"cast\":[\"Keanu Reaves\",\"Laurence Fishburne\",\"Carrie-Anne Moss\"]}", w.toString(), JSONCompareMode.STRICT); } }