JsonParserUnitTest.java 1.95 KB
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));

    }
}