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

📄 unicodeescapes2test.java

📁 大名鼎鼎的java动态脚本语言。已经通过了sun的认证
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package gls.ch03.s03;import junit.framework.*;import org.codehaus.groovy.tck.*;public class UnicodeEscapes2Test extends TestCase {    public void testPass() throws Throwable {        StringBuffer srcBuffer = new StringBuffer();        srcBuffer.append("package gls.ch03.s03").append(lineSep);        srcBuffer.append("/**").append(lineSep);        srcBuffer.append(" * GLS 3.3:").append(lineSep);        srcBuffer.append(" * Implementations first recognize Unicode escapes in their input, translating ").append(lineSep);        srcBuffer.append(" * the ASCII characters backslash and 'u' followed by four hexadecimal digits").append(lineSep);        srcBuffer.append(" * to the Unicode character with the indicated hexadecimal value, and passing").append(lineSep);        srcBuffer.append(" * all other characters unchanged.  ").append(lineSep);        srcBuffer.append(" *").append(lineSep);        srcBuffer.append(" * @author Alan Green").append(lineSep);        srcBuffer.append(" */").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("class UnicodeEscapes2 extends GroovyTestCase {").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("    // GLS: If an even number of backslashes precede the 'u', it is not ").append(lineSep);        srcBuffer.append("    // an escape").append(lineSep);        srcBuffer.append("    void testCountBackslash() {").append(lineSep);        srcBuffer.append("        def a = 1").append(lineSep);        srcBuffer.append("        assert \\u0061 == 1 // char 61 is 'a'").append(lineSep);        srcBuffer.append("        ").append(lineSep);        srcBuffer.append("        // Not intepreted as an escape").append(lineSep);        srcBuffer.append("        // \\\\u0061 == 1 // @fail:parse").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("        assert \"\\u0061\".length() == 1").append(lineSep);        srcBuffer.append("        // Double backslash interpreted as a single backslash in string").append(lineSep);        srcBuffer.append("        assert \"\\\\u0061\".length() == 6").append(lineSep);        srcBuffer.append("        assert \"\\\\\\u0061\".length() == 2").append(lineSep);        srcBuffer.append("        ").append(lineSep);        srcBuffer.append("    }").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("    // GLS: If an eligible \\ is followed by u, or more than one u, and the last u").append(lineSep);        srcBuffer.append("    // is not followed by four hexadecimal digits, then a compile-time error").append(lineSep);        srcBuffer.append("    // occurs.").append(lineSep);        srcBuffer.append("    void testFourHexDigits() {").append(lineSep);        srcBuffer.append("        // these next lines won't work. The backslash has been replace by a ").append(lineSep);        srcBuffer.append("        // forwards slash so that the file parses. (Comments don't comment out").append(lineSep);        srcBuffer.append("        // unicode escapes.)").append(lineSep);        srcBuffer.append("        // assert \"/u7\" == \"\\07\" //@fail:parse ").append(lineSep);        srcBuffer.append("        // def /u61 = 2 //@fail:parse ").append(lineSep);        srcBuffer.append("        // def /u061 = 2 //@fail:parse ").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("        // If five digits, only the first four count").append(lineSep);        srcBuffer.append("        def \\u00610 = 2 ").append(lineSep);        srcBuffer.append("        assert a0 == 2").append(lineSep);        srcBuffer.append("    }").append(lineSep);        srcBuffer.append("    void testInvalidHexDigits() {").append(lineSep);        srcBuffer.append("        // invalid hex digits").append(lineSep);        srcBuffer.append("        // assert \"\\ufffg\" == \"a\" // @fail:parse").append(lineSep);        srcBuffer.append("        // assert \"\\uu006g\" == \"a\" // @fail:parse").append(lineSep);        srcBuffer.append("        // assert \"\\uab cd\" == \"acd\" // @fail:parse").append(lineSep);        srcBuffer.append("    }").append(lineSep);        srcBuffer.append("}").append(lineSep);        Object result = helper.evaluate(srcBuffer.toString(),"testPass");        if (result instanceof TestResult) {            TestResult testResult = (TestResult)result;            if (testResult.errorCount() > 0) {                TestFailure firstTestFailure = (TestFailure)testResult.errors().nextElement();                throw firstTestFailure.thrownException();            }            if (testResult.failureCount() > 0) {                AssertionFailedError firstFailure = (AssertionFailedError)(testResult.failures().nextElement());                throw firstFailure;            }        }    }    public void testFailParse1() throws Throwable {        StringBuffer srcBuffer = new StringBuffer();        srcBuffer.append("package gls.ch03.s03").append(lineSep);        srcBuffer.append("/**").append(lineSep);        srcBuffer.append(" * GLS 3.3:").append(lineSep);        srcBuffer.append(" * Implementations first recognize Unicode escapes in their input, translating ").append(lineSep);        srcBuffer.append(" * the ASCII characters backslash and 'u' followed by four hexadecimal digits").append(lineSep);        srcBuffer.append(" * to the Unicode character with the indicated hexadecimal value, and passing").append(lineSep);        srcBuffer.append(" * all other characters unchanged.  ").append(lineSep);        srcBuffer.append(" *").append(lineSep);        srcBuffer.append(" * @author Alan Green").append(lineSep);        srcBuffer.append(" */").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("class UnicodeEscapes2 extends GroovyTestCase {").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("    // GLS: If an even number of backslashes precede the 'u', it is not ").append(lineSep);        srcBuffer.append("    // an escape").append(lineSep);        srcBuffer.append("    void testCountBackslash() {").append(lineSep);        srcBuffer.append("        def a = 1").append(lineSep);        srcBuffer.append("        assert \\u0061 == 1 // char 61 is 'a'").append(lineSep);        srcBuffer.append("        ").append(lineSep);        srcBuffer.append("        // Not intepreted as an escape").append(lineSep);        srcBuffer.append("           \\\\u0061 == 1 // @fail:parse").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("        assert \"\\u0061\".length() == 1").append(lineSep);        srcBuffer.append("        // Double backslash interpreted as a single backslash in string").append(lineSep);        srcBuffer.append("        assert \"\\\\u0061\".length() == 6").append(lineSep);        srcBuffer.append("        assert \"\\\\\\u0061\".length() == 2").append(lineSep);        srcBuffer.append("        ").append(lineSep);        srcBuffer.append("    }").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("    // GLS: If an eligible \\ is followed by u, or more than one u, and the last u").append(lineSep);        srcBuffer.append("    // is not followed by four hexadecimal digits, then a compile-time error").append(lineSep);        srcBuffer.append("    // occurs.").append(lineSep);        srcBuffer.append("    void testFourHexDigits() {").append(lineSep);        srcBuffer.append("        // these next lines won't work. The backslash has been replace by a ").append(lineSep);        srcBuffer.append("        // forwards slash so that the file parses. (Comments don't comment out").append(lineSep);        srcBuffer.append("        // unicode escapes.)").append(lineSep);        srcBuffer.append("        // assert \"/u7\" == \"\\07\" //@fail:parse ").append(lineSep);        srcBuffer.append("        // def /u61 = 2 //@fail:parse ").append(lineSep);        srcBuffer.append("        // def /u061 = 2 //@fail:parse ").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("        // If five digits, only the first four count").append(lineSep);        srcBuffer.append("        def \\u00610 = 2 ").append(lineSep);        srcBuffer.append("        assert a0 == 2").append(lineSep);        srcBuffer.append("    }").append(lineSep);        srcBuffer.append("    void testInvalidHexDigits() {").append(lineSep);        srcBuffer.append("        // invalid hex digits").append(lineSep);        srcBuffer.append("        // assert \"\\ufffg\" == \"a\" // @fail:parse").append(lineSep);        srcBuffer.append("        // assert \"\\uu006g\" == \"a\" // @fail:parse").append(lineSep);        srcBuffer.append("        // assert \"\\uab cd\" == \"acd\" // @fail:parse").append(lineSep);        srcBuffer.append("    }").append(lineSep);        srcBuffer.append("}").append(lineSep);        try {            helper.parse(srcBuffer.toString(),"testFailParse1");            fail("This line did not fail to parse:  \\\\u0061 == 1 // @fail:parse");        } catch (Exception e) {            // ignore an exception as that is what we're hoping for in this case.        }    }    public void testFailParse2() throws Throwable {        StringBuffer srcBuffer = new StringBuffer();        srcBuffer.append("package gls.ch03.s03").append(lineSep);        srcBuffer.append("/**").append(lineSep);        srcBuffer.append(" * GLS 3.3:").append(lineSep);        srcBuffer.append(" * Implementations first recognize Unicode escapes in their input, translating ").append(lineSep);        srcBuffer.append(" * the ASCII characters backslash and 'u' followed by four hexadecimal digits").append(lineSep);        srcBuffer.append(" * to the Unicode character with the indicated hexadecimal value, and passing").append(lineSep);        srcBuffer.append(" * all other characters unchanged.  ").append(lineSep);        srcBuffer.append(" *").append(lineSep);        srcBuffer.append(" * @author Alan Green").append(lineSep);        srcBuffer.append(" */").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("class UnicodeEscapes2 extends GroovyTestCase {").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("    // GLS: If an even number of backslashes precede the 'u', it is not ").append(lineSep);        srcBuffer.append("    // an escape").append(lineSep);        srcBuffer.append("    void testCountBackslash() {").append(lineSep);        srcBuffer.append("        def a = 1").append(lineSep);        srcBuffer.append("        assert \\u0061 == 1 // char 61 is 'a'").append(lineSep);        srcBuffer.append("        ").append(lineSep);        srcBuffer.append("        // Not intepreted as an escape").append(lineSep);        srcBuffer.append("        // \\\\u0061 == 1 // @fail:parse").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("        assert \"\\u0061\".length() == 1").append(lineSep);        srcBuffer.append("        // Double backslash interpreted as a single backslash in string").append(lineSep);        srcBuffer.append("        assert \"\\\\u0061\".length() == 6").append(lineSep);        srcBuffer.append("        assert \"\\\\\\u0061\".length() == 2").append(lineSep);        srcBuffer.append("        ").append(lineSep);        srcBuffer.append("    }").append(lineSep);        srcBuffer.append("").append(lineSep);        srcBuffer.append("    // GLS: If an eligible \\ is followed by u, or more than one u, and the last u").append(lineSep);        srcBuffer.append("    // is not followed by four hexadecimal digits, then a compile-time error").append(lineSep);        srcBuffer.append("    // occurs.").append(lineSep);        srcBuffer.append("    void testFourHexDigits() {").append(lineSep);

⌨️ 快捷键说明

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