summaryrefslogtreecommitdiff
path: root/cmake/elfinfo/src/main/test/io/trygvis/ld/test1/Test1Test.java
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/elfinfo/src/main/test/io/trygvis/ld/test1/Test1Test.java')
-rw-r--r--cmake/elfinfo/src/main/test/io/trygvis/ld/test1/Test1Test.java102
1 files changed, 102 insertions, 0 deletions
diff --git a/cmake/elfinfo/src/main/test/io/trygvis/ld/test1/Test1Test.java b/cmake/elfinfo/src/main/test/io/trygvis/ld/test1/Test1Test.java
new file mode 100644
index 0000000..ca3f49a
--- /dev/null
+++ b/cmake/elfinfo/src/main/test/io/trygvis/ld/test1/Test1Test.java
@@ -0,0 +1,102 @@
+package io.trygvis.ld.test1;
+
+import org.antlr.v4.runtime.ANTLRInputStream;
+import org.antlr.v4.runtime.BufferedTokenStream;
+import org.antlr.v4.runtime.CommonToken;
+import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.Parser;
+import org.antlr.v4.runtime.Token;
+import org.junit.Test;
+
+import javax.annotation.Nonnull;
+
+import static org.junit.Assert.assertEquals;
+
+public class Test1Test {
+
+ @Test
+ public void test1() {
+ name("foo", "foo");
+ }
+
+ @Test
+ public void test2() {
+ name("\"foo bar\"", "foo bar");
+ }
+
+ private void name(String input, String expected) {
+ Test1Parser parser = load(input);
+
+ Test1Parser.NameContext name = parser.name();
+ System.out.println("String tree: " + name.toStringTree(parser));
+
+ String actual = name.getText();
+ assertEquals(input + "\n" + name.toStringTree(parser), expected, actual);
+ }
+
+ @Test
+ public void expr1() {
+ expr("a + b", "(expr (name a) + (name b))");
+ }
+
+ @Test
+ public void expr2() {
+ expr("\"foo bar\" + b", "(expr (name f o o b a r) + (name b))");
+ }
+
+ @Test
+ public void expr3() {
+ expr("\n\n\r\n\t\"foo bar\" + b\r\r\t", "(expr (name f o o b a r) + (name b))");
+ }
+
+ private void expr(String input, String expected) {
+ Test1Parser parser = load(input);
+
+ Test1Parser.ExprContext expr = parser.expr();
+ String stringTree = expr.toStringTree(parser);
+
+ assertEquals(expected, stringTree);
+ }
+
+ @Nonnull
+ private Test1Parser load(String input) {
+ System.out.println("Input : |" + input + "|");
+ CommonTokenStream tokens = new CommonTokenStream(new Test1Lexer(new ANTLRInputStream(input)));
+ Test1Parser parser = new Test1Parser(tokens);
+ parser.setBuildParseTree(true);
+ parser.setTrace(true);
+
+ tokens.fill();
+ showTokens(tokens, parser);
+ return parser;
+ }
+
+ public static void showTokens(BufferedTokenStream tokens, Parser parser) {
+ for (Token tok : tokens.getTokens()) {
+ String s;
+ if (tok instanceof CommonToken) {
+ CommonToken t = (CommonToken) tok;
+
+ String channelStr = "";
+ if (t.getChannel() > 0) {
+ channelStr = ",channel=" + t.getChannel();
+ }
+
+ String txt = t.getText();
+ if (txt != null) {
+ txt = txt.replace("\n", "\\n");
+ txt = txt.replace("\r", "\\r");
+ txt = txt.replace("\t", "\\t");
+ } else {
+ txt = "<no text>";
+ }
+
+ String type = parser.getVocabulary().getDisplayName(t.getType());
+ s = "[@" + t.getTokenIndex() + "," + t.getStartIndex() + ":" + t.getStopIndex() + "=\'" + txt + "\',<" + type + ">" + channelStr + "," + t.getLine() + ":" + t.getCharPositionInLine() + "]";
+ } else {
+ s = tok.toString();
+ }
+ System.out.println(s);
+ }
+ }
+}