📄 groovy593_bug.groovy
字号:
package groovy.bugsimport java.io.StringWriterimport groovy.xml.MarkupBuilder/** * Tests that special XML chars are entitized by MarkupBuilder. * * @author <a href="mailto:scottstirling@rcn.com">Scott Stirling</a> * * @version $Revision: 1.4 $ * * Fix the cr lf handling of multiline stringon both of linux and Windows XP. * This test should success on Windows XP. * * @author Pilho Kim */class Groovy593_Bug extends GroovyTestCase { StringWriter writer = new StringWriter() MarkupBuilder chars = new MarkupBuilder(writer) XmlParser parser = new XmlParser() String expectedXML = """<chars> <ampersand a='&'>&</ampersand> <quote attr='"'>"</quote> <apostrophe attr='''>'</apostrophe> <lessthan attr='value'>chars: & < > '</lessthan> <element attr='value 1 & 2'>chars: & < > " in middle</element> <greaterthan>></greaterthan></chars>""" void testBug() { // XML characters to test with chars.chars { ampersand(a: "&", "&") quote(attr: "\"", "\"") apostrophe(attr: "'", "'") lessthan(attr: "value", "chars: & < > '") element(attr: "value 1 & 2", "chars: & < > \" in middle") greaterthan(">") } //DEBUG //println writer // Test MarkupBuilder state with expectedXML // Handling the cr lf characters, depending on operating system. def outputValue = writer.toString() if (expectedXML.indexOf("\r\n") >= 0) expectedXML = expectedXML.replaceAll("\r\n", "\n"); if (outputValue.indexOf("\r\n") >= 0) outputValue = outputValue.replaceAll("\r\n", "\n"); assertEquals(expectedXML.replaceAll("\r\n", "\n"), outputValue) // parser will throw a SAXParseException if XML is not valid parser.parseText(writer.toString()) } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -