src.test.main.TestComments Maven / Gradle / Ivy
package main;
import java.io.*;
import org.codehaus.jackson.*;
/**
* Unit tests for verifying that support for (non-standard) comments
* works as expected.
*/
public class TestComments
extends BaseTest
{
final static String DOC_WITH_SLASHSTAR_COMMENT =
"[ /* comment:\n ends here */ 1 /* one more ok to have \"unquoted\" */ ]"
;
final static String DOC_WITH_SLASHSLASH_COMMENT =
"[ // comment...\n 1 \r // one more, not array: [] \n ]"
;
/**
* Unit test for verifying that by default comments are not
* recognized.
*/
public void testDefaultSettings()
throws Exception
{
JsonFactory jf = new JsonFactory();
assertFalse(jf.isParserFeatureEnabled(JsonParser.Feature.ALLOW_COMMENTS));
JsonParser jp = jf.createJsonParser(new StringReader("[ 1 ]"));
assertFalse(jp.isFeatureEnabled(JsonParser.Feature.ALLOW_COMMENTS));
}
public void testCommentsDisabled()
throws Exception
{
_testDisabled(DOC_WITH_SLASHSTAR_COMMENT, false);
_testDisabled(DOC_WITH_SLASHSLASH_COMMENT, false);
_testDisabled(DOC_WITH_SLASHSTAR_COMMENT, true);
_testDisabled(DOC_WITH_SLASHSLASH_COMMENT, true);
}
public void testCommentsEnabled()
throws Exception
{
_testEnabled(DOC_WITH_SLASHSTAR_COMMENT, false);
_testEnabled(DOC_WITH_SLASHSLASH_COMMENT, false);
_testEnabled(DOC_WITH_SLASHSTAR_COMMENT, true);
_testEnabled(DOC_WITH_SLASHSLASH_COMMENT, true);
}
/*
/////////////////////////////////////////////////
// Helper methods
/////////////////////////////////////////////////
*/
private void _testDisabled(String doc, boolean useStream)
throws IOException
{
JsonParser jp = _createParser(doc, useStream, false);
try {
jp.nextToken();
fail("Expected exception for unrecognized comment");
} catch (JsonParseException je) {
// Should have something denoting that user may want to enable 'ALLOW_COMMENTS'
verifyException(je, "ALLOW_COMMENTS");
}
}
private void _testEnabled(String doc, boolean useStream)
throws IOException
{
JsonParser jp = _createParser(doc, useStream, true);
assertToken(JsonToken.VALUE_NUMBER_INT, jp.nextToken());
assertEquals(1, jp.getIntValue());
assertToken(JsonToken.END_ARRAY, jp.nextToken());
}
private JsonParser _createParser(String doc, boolean useStream, boolean enabled)
throws IOException
{
JsonFactory jf = new JsonFactory();
jf.setParserFeature(JsonParser.Feature.ALLOW_COMMENTS, enabled);
JsonParser jp = useStream ?
jf.createJsonParser(doc.getBytes("UTF-8"))
: jf.createJsonParser(doc);
assertToken(JsonToken.START_ARRAY, jp.nextToken());
return jp;
}
}