| package org.codehaus.jackson.main; |
| |
| import org.codehaus.jackson.*; |
| import org.codehaus.jackson.util.MinimalPrettyPrinter; |
| |
| import java.io.*; |
| |
| /** |
| * Set of basic unit tests for verifying that indenting |
| * option of generator works correctly |
| */ |
| public class TestPrettyPrinter |
| extends main.BaseTest |
| { |
| public void testSimpleDocWithDefault() throws Exception |
| { |
| StringWriter sw = new StringWriter(); |
| JsonGenerator gen = new JsonFactory().createJsonGenerator(sw); |
| gen.useDefaultPrettyPrinter(); |
| _verifyPrettyPrinter(gen, sw); |
| } |
| |
| public void testSimpleDocWithMinimal() throws Exception |
| { |
| StringWriter sw = new StringWriter(); |
| JsonGenerator gen = new JsonFactory().createJsonGenerator(sw); |
| // first with standard minimal |
| gen.setPrettyPrinter(new MinimalPrettyPrinter()); |
| String docStr = _verifyPrettyPrinter(gen, sw); |
| // which should have no linefeeds, tabs |
| assertEquals(-1, docStr.indexOf('\n')); |
| assertEquals(-1, docStr.indexOf('\t')); |
| |
| // And then with slightly customized variant |
| gen = new JsonFactory().createJsonGenerator(sw); |
| gen.setPrettyPrinter(new MinimalPrettyPrinter() { |
| @Override |
| // use TAB between array values |
| public void beforeArrayValues(JsonGenerator jg) throws IOException, JsonGenerationException |
| { |
| jg.writeRaw("\t"); |
| } |
| }); |
| docStr = _verifyPrettyPrinter(gen, sw); |
| assertEquals(-1, docStr.indexOf('\n')); |
| assertTrue(docStr.indexOf('\t') >= 0); |
| } |
| |
| private String _verifyPrettyPrinter(JsonGenerator gen, StringWriter sw) throws Exception |
| { |
| gen.writeStartArray(); |
| gen.writeNumber(3); |
| gen.writeString("abc"); |
| |
| gen.writeStartArray(); |
| gen.writeBoolean(true); |
| gen.writeEndArray(); |
| |
| gen.writeStartObject(); |
| gen.writeFieldName("f"); |
| gen.writeNull(); |
| gen.writeFieldName("f2"); |
| gen.writeNull(); |
| gen.writeEndObject(); |
| |
| gen.writeEndArray(); |
| gen.close(); |
| |
| String docStr = sw.toString(); |
| JsonParser jp = createParserUsingReader(docStr); |
| |
| assertEquals(JsonToken.START_ARRAY, jp.nextToken()); |
| |
| assertEquals(JsonToken.VALUE_NUMBER_INT, jp.nextToken()); |
| assertEquals(3, jp.getIntValue()); |
| assertEquals(JsonToken.VALUE_STRING, jp.nextToken()); |
| assertEquals("abc", jp.getText()); |
| |
| assertEquals(JsonToken.START_ARRAY, jp.nextToken()); |
| assertEquals(JsonToken.VALUE_TRUE, jp.nextToken()); |
| assertEquals(JsonToken.END_ARRAY, jp.nextToken()); |
| |
| assertEquals(JsonToken.START_OBJECT, jp.nextToken()); |
| assertEquals(JsonToken.FIELD_NAME, jp.nextToken()); |
| assertEquals("f", jp.getText()); |
| assertEquals(JsonToken.VALUE_NULL, jp.nextToken()); |
| assertEquals(JsonToken.FIELD_NAME, jp.nextToken()); |
| assertEquals("f2", jp.getText()); |
| assertEquals(JsonToken.VALUE_NULL, jp.nextToken()); |
| assertEquals(JsonToken.END_OBJECT, jp.nextToken()); |
| |
| assertEquals(JsonToken.END_ARRAY, jp.nextToken()); |
| |
| jp.close(); |
| |
| return docStr; |
| } |
| } |