java 7 - Testing antlr4 visitor rules -


i've got complicated antlr4 grammar utilizes visitor pattern. i'd test parts of visitor. what's way test individual visit rules?

my visitor has tons of rules want test:

@override public object visitqux(exclparser.quxcontext ctx) {   return visitchildren(ctx); } 

and test code following:

printstream ps = new printstream(stderror, false /* autoflush */, "utf-8") antlrinputstream input = new antlrinputstream(is);  mylexer lexer = new mylexer(input); commontokenstream tokens = new commontokenstream(lexer); myparser parser = new myparser(tokens);  parser.removeerrorlisteners(); myerrorlistener errorlistener = new myerrorlistener(ps, filename); parser.adderrorlistener(errorlistener);  myvisitor visitor = new myvisitor(); visitor.setparser(filename, parser, errorlistener); parsetree tree = parser.qux();   // <--- line want vary. object result = visitor.visit(tree); assertthat(describeexpectation(), result, equalto(this.expectedoutput)); 

ideally able test visitor using parameterized test. parse tree want visit (parser.qux) can't specify variant of qux() in table because parser.qux() not static.

any thoughts?

reflection may right answer here:

method method = myparser.class.getdeclaredmethod("qux"); parsetree tree = (parsetree) method.invoke(parser); 

is suitable replacement for:

parsetree tree = parser.qux(); 

Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

jsf - How to ajax update an item in the footer of a PrimeFaces dataTable? -

django - CSRF verification failed. Request aborted. CSRF cookie not set -