package com.ishchuk.antlr; import com.ishchuk.antlr.json.JsonListener; import com.ishchuk.antlr4.JSONgramLexer; import com.ishchuk.antlr4.JSONgramParser; import org.antlr.v4.runtime.CharStreams; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.tree.ParseTreeWalker; import org.junit.Test; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; public class JsonParserUnitTest { @Test public void whenJsonObjectWithString_thenStringIsDetected() throws Exception { // String line = "{\"menu\": \"light134-()%4praer---'$\"}"; String line = "{\n" + "\"line\": \"contentLine\"," + "\"table\":[{\"lineInTable\":\"contentLineIntTable\"},{}]," + " \"menu\": {\n" + " \"id\": \"file\",\n" + " \"value\": \"File\",\n" + " \"popup\": {\n" + " \"menuitem\": [\n" + " { \"value\": \"New\", \"onclick\": \"CreateNewDoc()\" },\n" + " { \"value\": \"Open\", \"onclick\": \"OpenDoc()\" },\n" + " { \"value\": \"Close\", \"onclick\": \"CloseDoc()\" }\n" + " ]\n" + " }\n" + " }\n" + "}"; JSONgramLexer serverJSONgramLexer = new JSONgramLexer(CharStreams.fromString(line)); CommonTokenStream tokens = new CommonTokenStream( serverJSONgramLexer ); JSONgramParser JSONgramParser = new JSONgramParser(tokens); ParseTreeWalker walker = new ParseTreeWalker(); JsonListener jsonWalker = new JsonListener(); walker.walk(jsonWalker, JSONgramParser.json()); System.out.println(jsonWalker.getJsonFile().getList().size()); jsonWalker.getJsonFile().getList().forEach(System.out::println); assertThat(jsonWalker.getJsonFile(), is(line)); } }