📄 jspwikimarkupparsertest.java
字号:
package com.ecyrd.jspwiki.parser;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.StringReader;import java.util.Collection;import java.util.Iterator;import java.util.Properties;import java.util.Vector;import javax.servlet.ServletException;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;import stress.Benchmark;import com.ecyrd.jspwiki.*;import com.ecyrd.jspwiki.attachment.Attachment;import com.ecyrd.jspwiki.providers.BasicAttachmentProvider;import com.ecyrd.jspwiki.render.XHTMLRenderer;public class JSPWikiMarkupParserTest extends TestCase{ Properties props = new Properties(); Vector<String> created = new Vector<String>(); static final String PAGE_NAME = "testpage"; TestEngine testEngine; public JSPWikiMarkupParserTest( String s ) { super( s ); } public void setUp() throws Exception { props.load( TestEngine.findTestProperties() ); props.setProperty( "jspwiki.translatorReader.matchEnglishPlurals", "true" ); testEngine = new TestEngine( props ); } public void tearDown() { deleteCreatedPages(); } private void newPage( String name ) throws WikiException { testEngine.saveText( name, "<test>" ); created.addElement( name ); } private void deleteCreatedPages() { for( Iterator i = created.iterator(); i.hasNext(); ) { String name = (String) i.next(); TestEngine.deleteTestPage(name); testEngine.deleteAttachments(name); } created.clear(); } private String translate( String src ) throws IOException, NoRequiredPropertyException, ServletException { return translate( new WikiPage(testEngine, PAGE_NAME), src ); } private String translate( WikiEngine e, String src ) throws IOException, NoRequiredPropertyException, ServletException { return translate( e, new WikiPage(testEngine, PAGE_NAME), src ); } private String translate( WikiPage p, String src ) throws IOException, NoRequiredPropertyException, ServletException { return translate( testEngine, p, src ); } private String translate( WikiEngine e, WikiPage p, String src ) throws IOException, NoRequiredPropertyException, ServletException { WikiContext context = new WikiContext( e, p ); JSPWikiMarkupParser tr = new JSPWikiMarkupParser( context, new BufferedReader( new StringReader(src)) ); XHTMLRenderer conv = new XHTMLRenderer( context, tr.parse() ); return conv.getString(); } private String translate_nofollow( String src ) throws IOException, NoRequiredPropertyException, ServletException, WikiException { props.load( TestEngine.findTestProperties() ); props.setProperty( "jspwiki.translatorReader.useRelNofollow", "true" ); TestEngine testEngine2 = new TestEngine( props ); WikiContext context = new WikiContext( testEngine2, new WikiPage(testEngine2, PAGE_NAME) ); JSPWikiMarkupParser r = new JSPWikiMarkupParser( context, new BufferedReader( new StringReader(src)) ); XHTMLRenderer conv = new XHTMLRenderer( context, r.parse() ); return conv.getString(); } public void testHyperlinks2() throws Exception { newPage("Hyperlink"); String src = "This should be a [hyperlink]"; assertEquals( "This should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=Hyperlink\">hyperlink</a>", translate(src) ); } public void testHyperlinks3() throws Exception { newPage("HyperlinkToo"); String src = "This should be a [hyperlink too]"; assertEquals( "This should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperlinkToo\">hyperlink too</a>", translate(src) ); } public void testHyperlinks4() throws Exception { newPage("HyperLink"); String src = "This should be a [HyperLink]"; assertEquals( "This should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink\">HyperLink</a>", translate(src) ); } public void testHyperlinks5() throws Exception { newPage("HyperLink"); String src = "This should be a [here|HyperLink]"; assertEquals( "This should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink\">here</a>", translate(src) ); } public void testHyperlinksNamed1() throws Exception { newPage("HyperLink"); String src = "This should be a [here|HyperLink#heading]"; assertEquals( "This should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink#section-HyperLink-Heading\">here</a>", translate(src) ); } public void testHyperlinksNamed2() throws Exception { newPage("HyperLink"); String src = "This should be a [HyperLink#heading]"; assertEquals( "This should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink#section-HyperLink-Heading\">HyperLink#heading</a>", translate(src) ); } public void testHyperlinksNamed3() throws Exception { newPage("HyperLink"); String src = "!Heading Too\r\nThis should be a [HyperLink#heading too]"; assertEquals( "<h4 id=\"section-testpage-HeadingToo\">Heading Too<a class=\"hashlink\" href=\"#section-testpage-HeadingToo\">#</a></h4>\nThis should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink#section-HyperLink-HeadingToo\">HyperLink#heading too</a>", translate(src) ); } // // Testing CamelCase hyperlinks // public void testHyperLinks6() throws Exception { newPage("DiscussionAboutWiki"); newPage("WikiMarkupDevelopment"); String src = "[DiscussionAboutWiki] [WikiMarkupDevelopment]."; assertEquals( "<a class=\"wikipage\" href=\"/Wiki.jsp?page=DiscussionAboutWiki\">DiscussionAboutWiki</a> <a class=\"wikipage\" href=\"/Wiki.jsp?page=WikiMarkupDevelopment\">WikiMarkupDevelopment</a>.", translate(src) ); } public void testHyperlinksCC() throws Exception { newPage("HyperLink"); String src = "This should be a HyperLink."; assertEquals( "This should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink\">HyperLink</a>.", translate(src) ); } public void testHyperlinksCCNonExistant() throws Exception { String src = "This should be a HyperLink."; assertEquals( "This should be a <a class=\"createpage\" href=\"/Edit.jsp?page=HyperLink\" title=\"Create "HyperLink"\">HyperLink</a>.", translate(src) ); } /** * Check if the CC hyperlink translator gets confused with * unorthodox bracketed links. */ public void testHyperlinksCC2() throws Exception { newPage("HyperLink"); String src = "This should be a [ HyperLink ]."; assertEquals( "This should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink\"> HyperLink </a>.", translate(src) ); } public void testHyperlinksCC3() throws Exception { String src = "This should be a nonHyperLink."; assertEquals( "This should be a nonHyperLink.", translate(src) ); } /** Two links on same line. */ public void testHyperlinksCC4() throws Exception { newPage("HyperLink"); newPage("ThisToo"); String src = "This should be a HyperLink, and ThisToo."; assertEquals( "This should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink\">HyperLink</a>, and <a class=\"wikipage\" href=\"/Wiki.jsp?page=ThisToo\">ThisToo</a>.", translate(src) ); } /** Two mixed links on same line. */ public void testHyperlinksCC5() throws Exception { newPage("HyperLink"); newPage("ThisToo"); String src = "This should be a [HyperLink], and ThisToo."; assertEquals( "This should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink\">HyperLink</a>, and <a class=\"wikipage\" href=\"/Wiki.jsp?page=ThisToo\">ThisToo</a>.", translate(src) ); } /** Closing tags only. */ public void testHyperlinksCC6() throws Exception { newPage("HyperLink"); newPage("ThisToo"); String src = "] This ] should be a HyperLink], and ThisToo."; assertEquals( "] This ] should be a <a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink\">HyperLink</a>], and <a class=\"wikipage\" href=\"/Wiki.jsp?page=ThisToo\">ThisToo</a>.", translate(src) ); } /** First and last words on line. */ public void testHyperlinksCCFirstAndLast() throws Exception { newPage("HyperLink"); newPage("ThisToo"); String src = "HyperLink, and ThisToo"; assertEquals( "<a class=\"wikipage\" href=\"/Wiki.jsp?page=HyperLink\">HyperLink</a>, and <a class=\"wikipage\" href=\"/Wiki.jsp?page=ThisToo\">ThisToo</a>", translate(src) ); } /** Hyperlinks inside URIs. */ public void testHyperlinksCCURLs() throws Exception { String src = "http://www.foo.bar/ANewHope/"; // System.out.println( "EX:"+translate(src) ); assertEquals( "<a class=\"external\" href=\"http://www.foo.bar/ANewHope/\">http://www.foo.bar/ANewHope/</a>", translate(src) ); } /** Hyperlinks inside URIs. */ public void testHyperlinksCCURLs2() throws Exception { String src = "mailto:foo@bar.com"; // System.out.println( "EX:"+translate(src) ); assertEquals( "<a class=\"external\" href=\"mailto:foo@bar.com\">mailto:foo@bar.com</a>", translate(src) ); } /** Hyperlinks inside URIs. */ public void testHyperlinksCCURLs3() throws Exception { String src = "This should be a link: http://www.foo.bar/ANewHope/. Is it?"; // System.out.println( "EX:"+translate(src) ); assertEquals( "This should be a link: <a class=\"external\" href=\"http://www.foo.bar/ANewHope/\">http://www.foo.bar/ANewHope/</a>. Is it?", translate(src) ); } /** Hyperlinks in brackets. */ public void testHyperlinksCCURLs4() throws Exception { String src = "This should be a link: (http://www.foo.bar/ANewHope/) Is it?"; // System.out.println( "EX:"+translate(src) ); assertEquals( "This should be a link: (<a class=\"external\" href=\"http://www.foo.bar/ANewHope/\">http://www.foo.bar/ANewHope/</a>) Is it?", translate(src) ); } /** Hyperlinks end line. */ public void testHyperlinksCCURLs5() throws Exception { String src = "This should be a link: http://www.foo.bar/ANewHope/\nIs it?"; // System.out.println( "EX:"+translate(src) ); assertEquals( "This should be a link: <a class=\"external\" href=\"http://www.foo.bar/ANewHope/\">http://www.foo.bar/ANewHope/</a>\nIs it?", translate(src) ); } /** Hyperlinks with odd chars. */ public void testHyperlinksCCURLs6() throws Exception { String src = "This should not be a link: http://''some.server''/wiki//Wiki.jsp\nIs it?"; // System.out.println( "EX:"+translate(src) ); assertEquals( "This should not be a link: http://<i>some.server</i>/wiki//Wiki.jsp\nIs it?", translate(src) ); } public void testHyperlinksCCURLs7() throws Exception { String src = "http://www.foo.bar/ANewHope?q=foobar&gobble=bobble+gnoo"; // System.out.println( "EX:"+translate(src) ); assertEquals( "<a class=\"external\" href=\"http://www.foo.bar/ANewHope?q=foobar&gobble=bobble+gnoo\">http://www.foo.bar/ANewHope?q=foobar&gobble=bobble+gnoo</a>", translate(src) ); } public void testHyperlinksCCURLs8() throws Exception { String src = "http://www.foo.bar/~ANewHope/"; // System.out.println( "EX:"+translate(src) ); assertEquals( "<a class=\"external\" href=\"http://www.foo.bar/~ANewHope/\">http://www.foo.bar/~ANewHope/</a>", translate(src) ); } public void testHyperlinksCCURLs9() throws Exception { String src = "http://www.foo.bar/%7EANewHope/"; // System.out.println( "EX:"+translate(src) ); assertEquals( "<a class=\"external\" href=\"http://www.foo.bar/%7EANewHope/\">http://www.foo.bar/%7EANewHope/</a>", translate(src) ); } public void testHyperlinksCCNegated() throws Exception { String src = "This should not be a ~HyperLink."; assertEquals( "This should not be a HyperLink.", translate(src) ); } public void testHyperlinksCCNegated2() throws Exception { String src = "~HyperLinks should not be matched."; assertEquals( "HyperLinks should not be matched.", translate(src) ); } public void testHyperlinksCCNegated3() throws Exception
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -