unit test cleanup.

This commit is contained in:
Terence Parr 2012-09-29 16:51:33 -07:00
parent ebe9cd245e
commit 46fc5001d5
6 changed files with 81 additions and 83 deletions

View File

@ -298,7 +298,9 @@ public class GrammarTransformPipeline {
GrammarAST[] options = ((List<?>)optionsRoot.getChildren()).toArray(new GrammarAST[0]);
for (GrammarAST o : options) {
String optionName = o.getChild(0).getText();
if ( !Grammar.doNotCopyOptionsToLexer.contains(optionName) ) {
if ( Grammar.lexerOptions.contains(optionName) &&
!Grammar.doNotCopyOptionsToLexer.contains(optionName) )
{
lexerOptionsRoot.addChild((Tree)adaptor.dupTree(o));
}
}

View File

@ -91,6 +91,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -1140,4 +1141,24 @@ public abstract class BaseTest {
return null;
}
}
/** Sort a list */
public <T extends Comparable<? super T>> List<T> sort(List<T> data) {
List<T> dup = new ArrayList<T>();
dup.addAll(data);
Collections.sort(dup);
return dup;
}
/** Return map sorted by key */
public <K extends Comparable<? super K>,V> LinkedHashMap<K,V> sort(Map<K,V> data) {
LinkedHashMap<K,V> dup = new LinkedHashMap<K, V>();
List<K> keys = new ArrayList<K>();
keys.addAll(data.keySet());
Collections.sort(keys);
for (K k : keys) {
dup.put(k, data.get(k));
}
return dup;
}
}

View File

@ -29,7 +29,6 @@
package org.antlr.v4.test;
import org.antlr.v4.Tool;
import org.antlr.v4.tool.ErrorType;
import org.antlr.v4.tool.Grammar;
import org.antlr.v4.tool.GrammarSemanticsMessage;
@ -38,24 +37,6 @@ import org.junit.Test;
public class TestCompositeGrammars extends BaseTest {
protected boolean debug = false;
@Test public void testWildcardStillWorks() throws Exception {
String grammar =
"parser grammar S;\n" +
"a : B . C ;\n"; // not qualified ID
mkdir(tmpdir);
Grammar g = new Grammar(tmpdir + "/S.g4", grammar);
g.name = "S";
ErrorQueue equeue = new ErrorQueue();
Tool antlr = g.tool;
antlr.outputDirectory = tmpdir;
antlr.libDirectory = tmpdir;
antlr.addListener(equeue);
antlr.process(g,true);
assertEquals("unexpected errors: "+equeue, 0, equeue.errors.size());
}
@Test public void testDelegatorInvokesDelegateRule() throws Exception {
String slave =
"parser grammar S;\n" +
@ -235,11 +216,11 @@ public class TestCompositeGrammars extends BaseTest {
Grammar g = new Grammar(tmpdir+"/M.g4", master, equeue);
String expectedTokenIDToTypeMap = "{EOF=-1, B=1, A=2, C=3, WS=4}";
String expectedStringLiteralToTypeMap = "{'c'=3, 'a'=2, 'b'=1}";
String expectedStringLiteralToTypeMap = "{'a'=2, 'b'=1, 'c'=3}";
String expectedTypeToTokenList = "[B, A, C, WS]";
assertEquals(expectedTokenIDToTypeMap, g.tokenNameToTypeMap.toString());
assertEquals(expectedStringLiteralToTypeMap, g.stringLiteralToTypeMap.toString());
assertEquals(expectedStringLiteralToTypeMap, sort(g.stringLiteralToTypeMap).toString());
assertEquals(expectedTypeToTokenList, realElements(g.typeToTokenList).toString());
assertEquals("unexpected errors: "+equeue, 0, equeue.errors.size());

View File

@ -6,7 +6,7 @@ public class TestListeners extends BaseTest {
@Test public void testBasic() throws Exception {
String grammar =
"grammar T;\n" +
"@header {import org.antlr.v4.runtime.tree.ParseTree;}\n"+
"@header {import org.antlr.v4.runtime.tree.*;}\n"+
"@members {\n" +
"public static class LeafListener extends TBaseListener {\n" +
" public void visitTerminal(TerminalNode<Token> node) {\n" +
@ -14,7 +14,6 @@ public class TestListeners extends BaseTest {
" }\n" +
" }}\n" +
"s\n" +
"@init {setBuildParseTree(true);}\n" +
"@after {" +
" System.out.println($r.ctx.toStringTree(this));" +
" ParseTreeWalker walker = new ParseTreeWalker();\n" +
@ -47,7 +46,6 @@ public class TestListeners extends BaseTest {
" }\n" +
" }}\n" +
"s\n" +
"@init {setBuildParseTree(true);}\n" +
"@after {" +
" System.out.println($r.ctx.toStringTree(this));" +
" ParseTreeWalker walker = new ParseTreeWalker();\n" +
@ -88,7 +86,6 @@ public class TestListeners extends BaseTest {
" }\n" +
" }}\n" +
"s\n" +
"@init {setBuildParseTree(true);}\n" +
"@after {" +
" System.out.println($r.ctx.toStringTree(this));" +
" ParseTreeWalker walker = new ParseTreeWalker();\n" +
@ -131,7 +128,6 @@ public class TestListeners extends BaseTest {
" }" +
"}\n" +
"s\n" +
"@init {setBuildParseTree(true);}\n" +
"@after {" +
" System.out.println($r.ctx.toStringTree(this));" +
" ParseTreeWalker walker = new ParseTreeWalker();\n" +
@ -172,7 +168,6 @@ public class TestListeners extends BaseTest {
" }\n" +
"}\n" +
"s\n" +
"@init {setBuildParseTree(true);}\n" +
"@after {" +
" System.out.println($r.ctx.toStringTree(this));" +
" ParseTreeWalker walker = new ParseTreeWalker();\n" +

View File

@ -22,20 +22,21 @@ public class TestSymbolIssues extends BaseTest {
"ID : 'a'..'z'+ ID ;",
// YIELDS
"warning(83): A.g4:2:10: illegal option opt\n" +
"warning(83): A.g4:2:21: illegal option k\n" +
"error(94): A.g4:7:1: redefinition of header action\n" +
"warning(51): A.g4:2:10: illegal option opt\n" +
"error(19): A.g4:11:0: rule a redefinition\n" +
"error(60): A.g4:5:1: redefinition of members action\n" +
"error(47): A.g4:9:37: rule b has no defined parameters\n" +
"error(24): A.g4:9:43: reference to undefined rule: q\n" +
"error(46): A.g4:10:31: missing parameter(s) on rule reference: a\n"
"warning(83): A.g4:2:21: illegal option k\n" +
"error(94): A.g4:5:1: redefinition of members action\n" +
"error(94): A.g4:7:1: redefinition of header action\n" +
"warning(125): A.g4:9:27: implicit definition of token X in parser\n" +
"warning(125): A.g4:10:20: implicit definition of token Y in parser\n" +
"warning(125): A.g4:11:4: implicit definition of token FJKD in parser\n" +
"error(80): A.g4:9:32: rule a has no defined parameters\n" +
"error(80): A.g4:9:37: rule b has no defined parameters\n" +
"error(56): A.g4:9:43: reference to undefined rule: q\n"
};
static String[] B = {
// INPUT
"parser grammar B;\n" +
"tokens { ID; FOO; X='x'; Y; }\n" +
"tokens { ID, FOO, X, Y }\n" +
"\n" +
"a : s=ID b+=ID X=ID '.' ;\n" +
"\n" +
@ -54,7 +55,7 @@ public class TestSymbolIssues extends BaseTest {
static String[] D = {
// INPUT
"parser grammar D;\n" +
"tokens{ID;}\n" +
"tokens{ID}\n" +
"a[int j] \n" +
" : i=ID j=ID ;\n" +
"\n" +
@ -72,11 +73,9 @@ public class TestSymbolIssues extends BaseTest {
// INPUT
"grammar E;\n" +
"tokens {\n" +
" A; A;\n" +
" B='b'; B;\n" +
" C; C='c';\n" +
" D='d'; D='d';\n" +
" E='e'; X='e';\n" +
" A, A,\n" +
" B,\n" +
" C,\n" +
"}\n" +
"a : A ;\n",

View File

@ -43,7 +43,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testInsertBeforeIndex0() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -59,7 +59,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testInsertAfterLastIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -76,7 +76,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void test2InsertBeforeAfterMiddleIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -94,7 +94,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceIndex0() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -111,7 +111,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceLastIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -128,7 +128,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceMiddleIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -145,7 +145,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testToStringStartStop() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"ID : 'a'..'z'+;\n" +
"INT : '0'..'9'+;\n" +
"SEMI : ';';\n" +
@ -182,7 +182,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testToStringStartStop2() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"ID : 'a'..'z'+;\n" +
"INT : '0'..'9'+;\n" +
"SEMI : ';';\n" +
@ -240,7 +240,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void test2ReplaceMiddleIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -258,7 +258,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void test2ReplaceMiddleIndex1InsertBefore() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -277,7 +277,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceThenDeleteMiddleIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -295,7 +295,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testInsertInPriorReplace() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -320,7 +320,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testInsertThenReplaceSameIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -340,7 +340,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void test2InsertMiddleIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -358,7 +358,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void test2InsertThenReplaceIndex0() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -377,7 +377,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceThenInsertBeforeLastIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -395,7 +395,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testInsertThenReplaceLastIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -413,7 +413,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceThenInsertAfterLastIndex() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -431,7 +431,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceRangeThenInsertAtLeftEdge() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -449,7 +449,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceRangeThenInsertAtRightEdge() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -475,7 +475,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceRangeThenInsertAfterRightEdge() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -493,7 +493,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceAll() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -510,7 +510,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceSubsetThenFetch() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -527,7 +527,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceThenReplaceSuperset() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -554,7 +554,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceThenReplaceLowerIndexedSuperset() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -581,7 +581,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testReplaceSingleMiddleThenOverlappingSuperset() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -599,7 +599,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testCombineInserts() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -617,7 +617,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testCombine3Inserts() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -636,7 +636,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testCombineInsertOnLeftWithReplace() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -656,7 +656,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testCombineInsertOnLeftWithDelete() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -678,7 +678,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testDisjointInserts() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -697,7 +697,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testOverlappingReplace() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -717,7 +717,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testOverlappingReplace2() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -744,7 +744,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testOverlappingReplace3() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -764,7 +764,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testOverlappingReplace4() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -784,7 +784,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testDropIdenticalReplace() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -804,7 +804,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testDropPrevCoveredInsert() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -824,7 +824,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testLeaveAloneDisjointInsert() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -842,7 +842,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testLeaveAloneDisjointInsert2() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");
@ -860,7 +860,7 @@ public class TestTokenStreamRewriter extends BaseTest {
@Test public void testInsertBeforeTokenThenDeleteThatToken() throws Exception {
LexerGrammar g = new LexerGrammar(
"lexer grammar t;\n"+
"lexer grammar T;\n"+
"A : 'a';\n" +
"B : 'b';\n" +
"C : 'c';\n");