Author: sdumitriu
Date: 2008-02-11 00:24:49 +0100 (Mon, 11 Feb 2008)
New Revision: 7480
Added:
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/StrikethroughTest.java
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/SyntaxTestsParent.java
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/UnderlineTest.java
Log:
XWIKI-2080: Server hangs while rendering certain pages
Addet unit tests (the build will take forever if it happens again).
XWIKI-1207: Strikethrough XWiki syntax
XWIKI-1243: Underline XWiki syntax
Added unit tests
Added:
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/StrikethroughTest.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/StrikethroughTest.java
(rev 0)
+++
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/StrikethroughTest.java
2008-02-10 23:24:49 UTC (rev 7480)
@@ -0,0 +1,146 @@
+package com.xpn.xwiki.render.markup;
+
+import java.util.ArrayList;
+
+public class StrikethroughTest extends SyntaxTestsParent
+{
+ protected void setUp()
+ {
+ super.setUp();
+ }
+
+ public void testNotTriggeredWithWhitespace()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("This is not -- stroked --");
+ expects.add("This is not -- stroked --");
+ tests.add("This is not --stroked --");
+ expects.add("This is not --stroked --");
+ tests.add("This is not -- stroked--");
+ expects.add("This is not -- stroked--");
+ test(tests, expects);
+ }
+
+ public void testSimple()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("This is --stroked--");
+ expects.add("This is <del>stroked</del>");
+ tests.add("This is --a-- stroke");
+ expects.add("This is <del>a</del> stroke");
+ tests.add("--a--");
+ expects.add("<del>a</del>");
+ test(tests, expects);
+ }
+
+ public void testThree()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("This is --a-- short stroke--");
+ expects.add("This is <del>a</del> short stroke--");
+ tests.add("This is --all -- stroked--");
+ expects.add("This is <del>all -- stroked</del>");
+ tests.add("This is --all --stroked--");
+ expects.add("This is <del>all --stroked</del>");
+ tests.add("This is --one--stroked--");
+ expects.add("This is <del>one</del>stroked--");
+ test(tests, expects);
+ }
+
+ public void testMultiple()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("More --strokes-- on a --line--");
+ expects.add("More <del>strokes</del> on a <del>line</del>");
+ test(tests, expects);
+ }
+
+ public void testExtraDashesAreInside()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("The extra dashes are ---inside---");
+ expects.add("The extra dashes are <del>-inside-</del>");
+ tests.add("The extra dashes are --- inside ---");
+ expects.add("The extra dashes are <del>- inside -</del>");
+ test(tests, expects);
+ }
+
+ public void testWithoutWhitespace()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("This--is--stroked");
+ expects.add("This<del>is</del>stroked");
+ test(tests, expects);
+ }
+
+ public void testSequence()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("--Eeny--meeny--miny--moe--");
+ expects.add("<del>Eeny</del>meeny<del>miny</del>moe--");
+ tests.add("-- Eeny--meeny--miny--moe--");
+ expects.add("...<li>Eeny<del>meeny</del>miny<del>moe</del></li>...");
+ test(tests, expects);
+ }
+
+ public void testHR()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("this is a ------ line");
+ expects.add("this is a <hr class=\"line\"/> line");
+ test(tests, expects);
+ }
+
+ public void testWithLists()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("-- this is a list item--");
+ expects.add("...<li>this is a list item--</li>...");
+ test(tests, expects);
+ }
+
+ public void testHtmlComments()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("HTML <!-- comments are ignored -->");
+ expects.add("HTML <!-- comments are ignored -->");
+ tests.add("Multiple HTML <!-- comments --> are <!-- ignored -->");
+ expects.add("Multiple HTML <!-- comments --> are <!-- ignored -->");
+ test(tests, expects);
+ }
+
+ public void testMultiline()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("This is not --not\nstroked--");
+ expects.add("This is not --not\nstroked--");
+ test(tests, expects);
+ }
+
+ public void testTimeComplexity()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ // Something like this should be (negatively) matched in linear time,
thus it should take no
+ // time. If the build takes a lot, then the regular expression is not
in linear time, thus
+ // wrong.
+ String text = "--";
+ for (int i = 0; i < 1000; ++i) {
+ text += "abc-";
+ }
+ tests.add(text);
+ expects.add(text);
+ test(tests, expects);
+ }
+}
Property changes on:
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/StrikethroughTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added:
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/SyntaxTestsParent.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/SyntaxTestsParent.java
(rev 0)
+++
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/SyntaxTestsParent.java
2008-02-10 23:24:49 UTC (rev 7480)
@@ -0,0 +1,54 @@
+package com.xpn.xwiki.render.markup;
+
+import java.util.ArrayList;
+
+import org.jmock.Mock;
+import org.jmock.cglib.MockObjectTestCase;
+
+import com.xpn.xwiki.XWiki;
+import com.xpn.xwiki.XWikiConfig;
+import com.xpn.xwiki.XWikiContext;
+import com.xpn.xwiki.doc.XWikiDocument;
+import com.xpn.xwiki.render.XWikiRadeoxRenderer;
+
+public class SyntaxTestsParent extends MockObjectTestCase
+{
+ private XWikiContext context;
+
+ private XWikiRadeoxRenderer renderer;
+
+ private Mock mockXWiki;
+
+ private Mock mockDocument;
+
+ private XWikiDocument document;
+
+ protected void setUp()
+ {
+ this.renderer = new XWikiRadeoxRenderer();
+ this.context = new XWikiContext();
+
+ this.mockXWiki =
+ mock(XWiki.class, new Class[] {XWikiConfig.class,
XWikiContext.class}, new Object[] {
+ new XWikiConfig(), context});
+ this.context.setWiki((XWiki) this.mockXWiki.proxy());
+
+ this.mockDocument = mock(XWikiDocument.class);
+ this.document = (XWikiDocument) this.mockDocument.proxy();
+
+ this.context.setDoc(document);
+ }
+
+ protected void test(ArrayList tests, ArrayList expects)
+ {
+ for (int i = 0; i < tests.size(); ++i) {
+ String result = renderer.render(tests.get(i).toString(), document,
document, context);
+ String expected = expects.get(i).toString();
+ if (expected.startsWith("...")) {
+ assertTrue(result.indexOf(expected.substring(3,
expected.length() - 3)) > 0);
+ } else {
+ assertEquals(expects.get(i).toString(), result);
+ }
+ }
+ }
+}
Property changes on:
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/SyntaxTestsParent.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added:
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/UnderlineTest.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/UnderlineTest.java
(rev 0)
+++
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/UnderlineTest.java
2008-02-10 23:24:49 UTC (rev 7480)
@@ -0,0 +1,130 @@
+package com.xpn.xwiki.render.markup;
+
+import java.util.ArrayList;
+
+public class UnderlineTest extends SyntaxTestsParent
+{
+ protected void setUp()
+ {
+ super.setUp();
+ }
+
+ public void testNotTriggeredWithWhitespace()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("This is not __ underlined __");
+ expects.add("This is not __ underlined __");
+ tests.add("This is not __underlined __");
+ expects.add("This is not __underlined __");
+ tests.add("This is not __ underlined__");
+ expects.add("This is not __ underlined__");
+ test(tests, expects);
+ }
+
+ public void testSimple()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("This is __underlined__");
+ expects.add("This is <em class=\"underline\">underlined</em>");
+ tests.add("This is __a__ letter underlined");
+ expects.add("This is <em class=\"underline\">a</em> letter
underlined");
+ tests.add("__a__");
+ expects.add("<em class=\"underline\">a</em>");
+ test(tests, expects);
+ }
+
+ public void testThree()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("This is __a__ short underline__");
+ expects.add("This is <em class=\"underline\">a</em> short
underline__");
+ tests.add("This is __all __ underlined__");
+ expects.add("This is <em class=\"underline\">all __ underlined</em>");
+ tests.add("This is __all __underlined__");
+ expects.add("This is <em class=\"underline\">all __underlined</em>");
+ tests.add("This is __one__underlined__");
+ expects.add("This is <em class=\"underline\">one</em>underlined__");
+ test(tests, expects);
+ }
+
+ public void testMultiple()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("More __underlines__ on a __line__");
+ expects.add("More <em class=\"underline\">underlines</em> on a <em
class=\"underline\">line</em>");
+ test(tests, expects);
+ }
+
+ public void testExtraUnderscoresAreInside()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("The extra underscores are ___inside___");
+ expects.add("The extra underscores are <em
class=\"underline\">_inside_</em>");
+ tests.add("The extra underscores are ___ inside ___");
+ expects.add("The extra underscores are <em class=\"underline\">_
inside _</em>");
+ test(tests, expects);
+ }
+
+ public void testWithoutWhitespace()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("This__is__underlined");
+ expects.add("This<em class=\"underline\">is</em>underlined");
+ test(tests, expects);
+ }
+
+ public void testSequence()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("__Eeny__meeny__miny__moe__");
+ expects.add("<em class=\"underline\">Eeny</em>meeny<em
class=\"underline\">miny</em>moe__");
+ tests.add("__ Eeny__meeny__miny__moe__");
+ expects.add("__ Eeny<em class=\"underline\">meeny</em>miny<em
class=\"underline\">moe</em>");
+ test(tests, expects);
+ }
+
+ public void testSeveralInARow()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("this is not an underline: ____ ");
+ expects.add("this is not an underline: ____ ");
+ tests.add("this is an underscore underlined: _____ ");
+ expects.add("this is an underscore underlined: <em
class=\"underline\">_</em> ");
+ tests.add("this is two underscores underlined: ______ ");
+ expects.add("this is two underscores underlined: <em
class=\"underline\">__</em> ");
+ test(tests, expects);
+ }
+
+ public void testMultiline()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ tests.add("This is not __not\nunderlined__");
+ expects.add("This is not __not\nunderlined__");
+ test(tests, expects);
+ }
+
+ public void testTimeComplexity()
+ {
+ ArrayList tests = new ArrayList();
+ ArrayList expects = new ArrayList();
+ // Something like this should be (negatively) matched in linear time,
thus it should take no
+ // time. If the build takes a lot, then the regular expression is not
in linear time, thus
+ // wrong.
+ String text = "__";
+ for (int i = 0; i < 1000; ++i) {
+ text += "abc_";
+ }
+ tests.add(text);
+ expects.add(text);
+ test(tests, expects);
+ }
+}
Property changes on:
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/render/markup/UnderlineTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications