/* * ModeShape (http://www.modeshape.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.modeshape.schematic.internal.document; import java.io.ByteArrayOutputStream; import java.io.IOException; import org.junit.Test; public class PrettyJsonWriterTest extends CompactJsonWriterTest { @Override @Test public void shouldCorrectlyWriteSimpleBsonObject() { writer = new PrettyJsonWriter(); BasicDocument top = new BasicDocument(); top.put("firstName", "Jack"); top.put("lastName", "Riley"); top.put("age", 31); String actual = writer.write(top); String expected = "{\n \"firstName\" : \"Jack\",\n \"lastName\" : \"Riley\",\n \"age\" : 31\n}"; assertSame(expected, actual); } @Override @Test public void shouldCorrectlyWriteSimpleBsonObjectWithNullValue() { writer = new PrettyJsonWriter(); BasicDocument top = new BasicDocument(); top.put("firstName", "Jack"); top.put("lastName", null); top.put("age", 31); String actual = writer.write(top); String expected = "{\n \"firstName\" : \"Jack\",\n \"lastName\" : null,\n \"age\" : 31\n}"; assertSame(expected, actual); } @Override @Test public void shouldCorrectlyWriteBsonObjectWithNestedObjectValue() { writer = new PrettyJsonWriter(); BasicDocument address = new BasicDocument(); address.put("street", "100 Main St."); address.put("city", "Springfield"); BasicDocument top = new BasicDocument(); top.put("firstName", "Jack"); top.put("lastName", "Riley"); top.put("address", address); String actual = writer.write(top); String expected = "{\n \"firstName\" : \"Jack\",\n \"lastName\" : \"Riley\",\n \"address\" : {\n \"street\" : \"100 Main St.\",\n \"city\" : \"Springfield\"\n }\n}"; assertSame(expected, actual); } @Test public void shouldCorrectlyWriteDocumentToStream() throws IOException { writer = new PrettyJsonWriter(); BasicDocument address = new BasicDocument(); address.put("street", "100 Main St."); address.put("city", "Springfield"); BasicDocument top = new BasicDocument(); top.put("firstName", "Jack"); top.put("lastName", "Riley"); top.put("address", address); ByteArrayOutputStream baos = new ByteArrayOutputStream(); writer.write(top, baos); String actual = baos.toString(); String expected = "{\n \"firstName\" : \"Jack\",\n \"lastName\" : \"Riley\",\n \"address\" : {\n \"street\" : \"100 Main St.\",\n \"city\" : \"Springfield\"\n }\n}"; assertSame(expected, actual); } @Test public void shouldCorrectlyWriteBsonObjectWithNestedArrayValue() { writer = new PrettyJsonWriter(); BasicArray emails = new BasicArray(); emails.put("0", "jriley@example.com"); emails.put("1", "jriley@foobar.com"); BasicDocument top = new BasicDocument(); top.put("firstName", "Jack"); top.put("lastName", "Riley"); top.put("emails", emails); String actual = writer.write(top); String expected = "{\n \"firstName\" : \"Jack\",\n \"lastName\" : \"Riley\",\n \"emails\" : [\n \"jriley@example.com\",\n \"jriley@foobar.com\"\n ]\n}"; assertSame(expected, actual); } @Override @Test public void shouldCorrectlyWriteListValue() { writer = new PrettyJsonWriter(); testWritingList("[ ]"); testWritingList("[\n \"value1\"\n]", "value1"); testWritingList("[\n \"value1\",\n null,\n \"value3\"\n]", "value1", null, "value3"); testWritingList("[\n \"value1\",\n \"value2\",\n \"value3\"\n]", "value1", "value2", "value3"); testWritingList("[\n \"value1\",\n \"value2\",\n 4\n]", "value1", "value2", 4L); } }