⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classicgroovytestgeneratorhelper.java

📁 大名鼎鼎的java动态脚本语言。已经通过了sun的认证
💻 JAVA
字号:
package org.codehaus.groovy.tck;import java.io.Reader;import java.io.StringReader;import java.io.BufferedReader;import java.io.IOException;import java.util.ArrayList;import junit.framework.TestResult;// Jsr parser// @todo - refactor pulling generic parser interface upimport org.codehaus.groovy.antlr.parser.GroovyLexer;import org.codehaus.groovy.antlr.parser.GroovyRecognizer;// codehaus reference implementation usage// @todo - remove classic references from the TCKimport org.codehaus.groovy.control.CompilerConfiguration;import groovy.lang.GroovyShell;import antlr.RecognitionException;/** Helper methods for generated TCK test case using new JSR parser and classic groovy AST and evaluation */public class ClassicGroovyTestGeneratorHelper implements TestGeneratorHelper {    /** evaluate the source text against the classic AST with the JSR parser implementation*/    public Object evaluate(String theSrcText, String testName) throws Exception {        parse(theSrcText, testName); // fail early with a direct message if possible')        GroovyShell groovy = new GroovyShell(new CompilerConfiguration());        return groovy.run(theSrcText, "main", new ArrayList());    }    /** run the JSR parser implementation over the supplied source text*/    public void parse(String theSrcText, String testName) throws Exception {        System.out.println("-------------------------------");        System.out.println("  " + testName);        System.out.println("-------------------------------");        try {            Reader reader = new BufferedReader(new StringReader(theSrcText));            GroovyRecognizer recognizer = GroovyRecognizer.make(reader);            recognizer.compilationUnit();            System.out.println(decorateWithLineNumbers(theSrcText));        } catch (RecognitionException parseException) {            System.out.println(decorateWithLineNumbersAndErrorMessage(theSrcText,parseException));            throw parseException;        }        System.out.println("-------------------------------");    }    private String decorateWithLineNumbersAndErrorMessage(String theSrcText, RecognitionException parseException) {        try {            BufferedReader reader = new BufferedReader(new StringReader(theSrcText));            String line = null;            StringBuffer numberedSrcTextBuffer = new StringBuffer();            int lineNum = 1;            while ((line = reader.readLine() ) != null) {                numberedSrcTextBuffer.append(lineNum);                numberedSrcTextBuffer.append("\t");                numberedSrcTextBuffer.append(line);                numberedSrcTextBuffer.append(lineSep);                if (parseException != null) {                    if (lineNum == parseException.getLine()) {                        StringBuffer padding = new StringBuffer("\t");                        for (int col=1; col<parseException.getColumn();col++) {                            padding.append(" ");                        }                        numberedSrcTextBuffer.append(padding);                        numberedSrcTextBuffer.append("^");                        numberedSrcTextBuffer.append(lineSep);                        numberedSrcTextBuffer.append("ERROR:");                        numberedSrcTextBuffer.append(lineSep);                        numberedSrcTextBuffer.append(parseException.getMessage());                        numberedSrcTextBuffer.append(lineSep);                        numberedSrcTextBuffer.append(lineSep);                    }                }                lineNum++;            }            theSrcText = numberedSrcTextBuffer.toString();        } catch (IOException e) {            //ignore        }        return theSrcText;    }    private String decorateWithLineNumbers(String theSrcText) {        return decorateWithLineNumbersAndErrorMessage(theSrcText,null);    }    protected String lineSep = System.getProperty("line.separator");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -