📄 unicodeescapes1test.java
字号:
package gls.ch03.s03;import junit.framework.*;import org.codehaus.groovy.tck.*;public class UnicodeEscapes1Test 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(" * @author Jeremy Rayner").append(lineSep); srcBuffer.append(" */").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append("class UnicodeEscapes1 extends GroovyTestCase {").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" void testAllHexDigits() {").append(lineSep); srcBuffer.append(" // All hex digits work (char def0 is a special codepoint)").append(lineSep); srcBuffer.append(" def s = \"\\u1234\\u5678\\u9abc\\u0fed\\u9ABC\\u0FEC\"").append(lineSep); srcBuffer.append(" assert s.charAt(0) == 0x1234").append(lineSep); srcBuffer.append(" assert s.charAt(1) == 0x5678").append(lineSep); srcBuffer.append(" assert s.charAt(2) == 0x9abc").append(lineSep); srcBuffer.append(" assert s.charAt(3) == 0x0fed").append(lineSep); srcBuffer.append(" assert s.charAt(4) == 0x9abc").append(lineSep); srcBuffer.append(" assert s.charAt(5) == 0x0fec").append(lineSep); srcBuffer.append(" }").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" // There can be 1 or more u's after the backslash").append(lineSep); srcBuffer.append(" void testMultipleUs() {").append(lineSep); srcBuffer.append(" assert \"\\uu0061\" == \"a\"").append(lineSep); srcBuffer.append(" assert \"\\uuu0061\" == \"a\"").append(lineSep); srcBuffer.append(" assert \"\\uuuuu0061\" == \"a\"").append(lineSep); srcBuffer.append(" }").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" void testOtherVariations() {").append(lineSep); srcBuffer.append(" // Capital 'U' not allowed").append(lineSep); srcBuffer.append(" // assert \"\\U0061\" == \"a\" // @fail:parse ").append(lineSep); srcBuffer.append(" }").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" // todo: Implementations should use the \\ uxxxx notation as an output format to").append(lineSep); srcBuffer.append(" // display Unicode characters when a suitable font is not available.").append(lineSep); srcBuffer.append(" // (to be tested as part of the standard library)").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" // todo: Representing supplementary characters requires two consecutive Unicode").append(lineSep); srcBuffer.append(" // escapes. ").append(lineSep); srcBuffer.append(" // (not sure how to test)").append(lineSep); srcBuffer.append(" // see: gls.ch03.s01.Unicode2.testUTF16SupplementaryCharacters()").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" // todo: test unicode escapes last in file").append(lineSep); srcBuffer.append(" // and invalid escapes at end of file").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(" * @author Jeremy Rayner").append(lineSep); srcBuffer.append(" */").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append("class UnicodeEscapes1 extends GroovyTestCase {").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" void testAllHexDigits() {").append(lineSep); srcBuffer.append(" // All hex digits work (char def0 is a special codepoint)").append(lineSep); srcBuffer.append(" def s = \"\\u1234\\u5678\\u9abc\\u0fed\\u9ABC\\u0FEC\"").append(lineSep); srcBuffer.append(" assert s.charAt(0) == 0x1234").append(lineSep); srcBuffer.append(" assert s.charAt(1) == 0x5678").append(lineSep); srcBuffer.append(" assert s.charAt(2) == 0x9abc").append(lineSep); srcBuffer.append(" assert s.charAt(3) == 0x0fed").append(lineSep); srcBuffer.append(" assert s.charAt(4) == 0x9abc").append(lineSep); srcBuffer.append(" assert s.charAt(5) == 0x0fec").append(lineSep); srcBuffer.append(" }").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" // There can be 1 or more u's after the backslash").append(lineSep); srcBuffer.append(" void testMultipleUs() {").append(lineSep); srcBuffer.append(" assert \"\\uu0061\" == \"a\"").append(lineSep); srcBuffer.append(" assert \"\\uuu0061\" == \"a\"").append(lineSep); srcBuffer.append(" assert \"\\uuuuu0061\" == \"a\"").append(lineSep); srcBuffer.append(" }").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" void testOtherVariations() {").append(lineSep); srcBuffer.append(" // Capital 'U' not allowed").append(lineSep); srcBuffer.append(" assert \"\\U0061\" == \"a\" // @fail:parse ").append(lineSep); srcBuffer.append(" }").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" // todo: Implementations should use the \\ uxxxx notation as an output format to").append(lineSep); srcBuffer.append(" // display Unicode characters when a suitable font is not available.").append(lineSep); srcBuffer.append(" // (to be tested as part of the standard library)").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" // todo: Representing supplementary characters requires two consecutive Unicode").append(lineSep); srcBuffer.append(" // escapes. ").append(lineSep); srcBuffer.append(" // (not sure how to test)").append(lineSep); srcBuffer.append(" // see: gls.ch03.s01.Unicode2.testUTF16SupplementaryCharacters()").append(lineSep); srcBuffer.append("").append(lineSep); srcBuffer.append(" // todo: test unicode escapes last in file").append(lineSep); srcBuffer.append(" // and invalid escapes at end of file").append(lineSep); srcBuffer.append("}").append(lineSep); try { helper.parse(srcBuffer.toString(),"testFailParse1"); fail("This line did not fail to parse: assert \"\\U0061\" == \"a\" // @fail:parse"); } catch (Exception e) { // ignore an exception as that is what we're hoping for in this case. } } protected String lineSep = System.getProperty("line.separator"); protected TestGeneratorHelper helper = new ClassicGroovyTestGeneratorHelper();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -