@Test(expected=IllegalStateException.class) public void testDatatypeObjectWithBadFields1b() throws Exception { this.assertTokenizesTo(_t, // Stops parsing at \"_value_\" "{ \"a\":{ \"n\":12, \"_value_\" : \"BlA bLa\", \"_datatype_\" : \"lower\" } }", new String[] { "a", "n", "12" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL], TOKEN_TYPES[NUMBER] }); }
@Test public void testEmptyJson() throws Exception { this.assertTokenizesTo(_t, "{}", new String[] {}, new String[] {}); }
@Test(expected=IllegalStateException.class) public void testDatatypeObjectDuplicates1b() throws Exception { this.assertTokenizesTo(_t, "{ \"a\":{ \"_value_\" : \"BlA bLa\", \"_value_\" : \"BlA bLa\", \"_datatype_\" : \"lower\" } }", new String[] { "a" }, new String[] { TOKEN_TYPES[LITERAL] }, new String[] { JSON_FIELD }); }
@Test(expected=IllegalStateException.class) public void testDatatypeObjectDuplicates2a() throws Exception { this.assertTokenizesTo(_t, "{ \"a\":{ \"_value_\" : \"BlA bLa\", \"_datatype_\" : \"lower\", \"_datatype_\" : \"lower\" } }", new String[] { "a", "BlA bLa" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL] }, new String[] { JSON_FIELD, "lower" }); }
@Test public void testBackslashes() throws Exception { this.assertTokenizesTo(_t, "{\"test\":\"200309350 DP \\\\\\\\*\\\\\"}", new String[] { "test", "200309350 DP \\\\\\\\*\\\\" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL] }); }
@Test(expected=IllegalStateException.class) public void testDatatypeObjectWithBadFields3() throws Exception { this.assertTokenizesTo(_t, // Stops parsing at \"n\":12 "{ \"a\":{ \"_datatype_\" : \"lower\", \"_value_\" : \"BlA bLa\", \"n\":12 } }", new String[] { "a", "BlA bLa" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL] }, new String[] { JSON_FIELD, "lower" }); }
@Test(expected=IllegalStateException.class) public void testDatatypeObjectDuplicates1a() throws Exception { this.assertTokenizesTo(_t, "{ \"a\":{ \"_value_\" : \"BlA bLa\", \"_datatype_\" : \"lower\", \"_value_\" : \"BlA bLa\" } }", new String[] { "a", "BlA bLa" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL] }, new String[] { JSON_FIELD, "lower" }); }
@Test(expected=IllegalStateException.class) public void testNoFieldJson1() throws Exception { this.assertTokenizesTo(_t, "{ : \"bad\" }", new String[] { "bad" }, new String[] { TOKEN_TYPES[LITERAL] }, new String[] { XSD_STRING }, new int[] { 1 }, new IntsRef[] { node(-1, 0) }); }
@Test(expected=IllegalStateException.class) public void testNoFieldJson4() throws Exception { this.assertTokenizesTo(_t, "{ : true }", new String[] { "bad" }, new String[] { TOKEN_TYPES[TRUE] }, new String[] { XSD_BOOLEAN }, new int[] { 1 }, new IntsRef[] { node(-1, 0) }); }
@Test public void testEmptyArray() throws Exception { this.assertTokenizesTo(_t, "{\"a\":[]}", new String[] { "a" }, new String[] { TOKEN_TYPES[LITERAL] }); // nested empty array this.assertTokenizesTo(_t, "{\"a\":[ false, [], true ]}", new String[] { "a", "false", "true" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[FALSE], TOKEN_TYPES[TRUE] }, new String[] { JSON_FIELD, XSD_BOOLEAN, XSD_BOOLEAN }, new int[] { 1, 1, 1 }, new IntsRef[] { node(0), node(0, 0), node(0, 2) }); }
@Test(expected=IllegalStateException.class) public void testNoFieldJson3() throws Exception { this.assertTokenizesTo(_t, "{ : 1.1 }", new String[] { "bad" }, new String[] { TOKEN_TYPES[NUMBER] }, new String[] { XSD_DOUBLE }, new int[] { 1 }, new IntsRef[] { node(-1, 0) }); }
@Test(expected=IllegalStateException.class) public void testNoFieldJson5() throws Exception { this.assertTokenizesTo(_t, "{ : false }", new String[] { "bad" }, new String[] { TOKEN_TYPES[FALSE] }, new String[] { XSD_BOOLEAN }, new int[] { 1 }, new IntsRef[] { node(-1, 0) }); }
@Test public void testEmptyField() throws Exception { this.assertTokenizesTo(_t, "{ \"\" : \"b\" , }", new String[] { "", "b" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL] }, new String[] { JSON_FIELD, XSD_STRING }, new int[] { 1, 1 }, new IntsRef[] { node(0), node(0, 0) }); }
@Test public void testTrailingComma1b() throws Exception { this.assertTokenizesTo(_t, "{ \"a\" : \"b\" , }", new String[] { "a", "b" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL] }, new String[] { JSON_FIELD, XSD_STRING }, new int[] { 1, 1 }, new IntsRef[] { node(0), node(0, 0) }); }
@Test(expected=IllegalStateException.class) public void testColonInArray() throws Exception { this.assertTokenizesTo(_t, "{\"a\":[\"34\":34},\"a\":1}", // 34},\"a\":1 is not parsed because of the stray '}' character new String[] { "a", "34" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL] }, new String[] { JSON_FIELD, XSD_STRING }, new int[] { 1, 1, 1 }, new IntsRef[] { node(0), node(0, 0) }); }
@Test public void testArraysNumber() throws Exception { this.assertTokenizesTo(_t, "{ \"a\" : [ 10.5, 20 ] }", new String[] { "a", "10.5", "20" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[NUMBER], TOKEN_TYPES[NUMBER] }, new String[] { JSON_FIELD, XSD_DOUBLE, XSD_LONG }, new int[] { 1, 1, 1 }, new IntsRef[] { node(0), node(0, 0), node(0, 1) }); }
@Test(expected=IllegalStateException.class) public void testUnclosedObject() throws Exception { this.assertTokenizesTo(_t, "{\"a\":{\"34\":34,23}", // the 23 is not parsed, because it is not a literal new String[] { "a", "34", "34" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL], TOKEN_TYPES[NUMBER] }, new String[] { JSON_FIELD, JSON_FIELD, XSD_LONG }, new int[] { 1, 1, 1 }, new IntsRef[] { node(0), node(0, 0, 0), node(0, 0, 0, 0) }); }
@Test(expected=IllegalStateException.class) public void testWrongClosingCharacter() throws Exception { this.assertTokenizesTo(_t, "{\"a\":{\"34\":34],\"a\":1}", // \"a\":1 is not parsed because of the stray ']' character new String[] { "a", "34", "34" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL], TOKEN_TYPES[NUMBER] }, new String[] { JSON_FIELD, JSON_FIELD, XSD_LONG }, new int[] { 1, 1, 1 }, new IntsRef[] { node(0), node(0, 0, 0), node(0, 0, 0, 0) }); }
@Test(expected=IllegalStateException.class) public void testNoFieldJson9() throws Exception { this.assertTokenizesTo(_t, "{ \"a\" : \"b\" , : 12 }", new String[] { "a", "b", "12" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL], TOKEN_TYPES[NUMBER] }, new String[] { JSON_FIELD, XSD_STRING, XSD_LONG }, new int[] { 1, 1, 1 }, new IntsRef[] { node(0), node(0, 0), node(1, 0) }); }
@Test public void testNestedObjects2() throws Exception { this.assertTokenizesTo(_t, "{ \"a\" : { \"b\" : { \"c\" : \"d\" } } }", new String[] { "a", "b", "c", "d" }, new String[] { TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL], TOKEN_TYPES[LITERAL] }, new int[] { 1, 1, 1, 1 }, new IntsRef[] { node(0), node(0, 0, 0), node(0, 0, 0, 0, 0), node(0, 0, 0, 0, 0, 0) }); }