@Test
public void test() throws IOException, URISyntaxException{
final String inputString = TestUtils.loadFile(sourceFile);
final File expectedFile = new File(sourceFile.getPath().replaceAll("\\.rpgle", ".expected.txt"));
final String expectedFileText = expectedFile.exists()?TestUtils.loadFile(expectedFile):null;
final String expectedTokens = getTokens(expectedFileText);
String expectedTree = getTree(expectedFileText);
final List<String> errors = new ArrayList<String>();
final ANTLRInputStream input = new ANTLRInputStream(new FixedWidthBufferedReader(inputString));
final RpgLexer rpglexer = new RpgLexer(input);
final TokenSource lexer = new PreprocessTokenSource(rpglexer);
final CommonTokenStream tokens = new CommonTokenStream(lexer);
final RpgParser parser = new RpgParser(tokens);
final ErrorListener errorListener = new ErrorListener(errors, rpglexer, parser);
rpglexer.addErrorListener(errorListener);
parser.addErrorListener(errorListener);
final String actualTokens = TestUtils.printTokens(lexer,rpglexer.getVocabulary());
boolean rewriteExpectFile=false;
if(expectedTokens != null && expectedTokens.trim().length()>0 ){
if(autoReplaceFailed && !expectedTokens.equals(actualTokens)){
rewriteExpectFile=true;
}else{
assertEquals("Token lists do not match",expectedTokens,actualTokens);
}
}
rpglexer.reset();
parser.getInterpreter().setPredictionMode(PredictionMode.SLL);
parser.reset();
final ParseTree parseTree = parser.r();
final String actualTree = TreeUtils.printTree(parseTree, parser);
if(!errors.isEmpty()){
System.out.println("/*===TOKENS===*/\r\n" + actualTokens + "\r\n");
System.out.println("/*===TREE===*/\r\n" + actualTree + "\r\n/*======*/");
}
assertThat(errors, is(empty()));
if(expectedTree==null || expectedTree.trim().length() == 0||rewriteExpectFile){
writeExpectFile(expectedFile,actualTokens,actualTree);
System.out.println("Tree written to " + expectedFile);
}else{
if(autoReplaceFailed && !actualTree.equals(expectedTree)){
System.out.println("Replaced content of " + expectedFile);
expectedTree = actualTree;
writeExpectFile(expectedFile,actualTokens,actualTree);
}
assertEquals("Parse trees do not match",expectedTree,actualTree);
}
}
TestFiles.java 文件源码
java
阅读 27
收藏 0
点赞 0
评论 0
项目:rpgleparser
作者:
评论列表
文章目录