You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by aj...@apache.org on 2008/12/04 04:10:39 UTC
svn commit: r723198 [3/3] - in /incubator/jspwiki/trunk: ./
src/com/ecyrd/jspwiki/ src/com/ecyrd/jspwiki/action/
src/com/ecyrd/jspwiki/content/ src/com/ecyrd/jspwiki/log/
src/com/ecyrd/jspwiki/plugin/ src/com/ecyrd/jspwiki/tags/
src/com/ecyrd/jspwiki/u...
Added: incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/JspParserTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/JspParserTest.java?rev=723198&view=auto
==============================================================================
--- incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/JspParserTest.java (added)
+++ incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/JspParserTest.java Wed Dec 3 19:10:36 2008
@@ -0,0 +1,779 @@
+package com.ecyrd.jspwiki.ui.migrator;
+
+import java.io.File;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class JspParserTest extends TestCase
+{
+ public JspParserTest( String s )
+ {
+ super( s );
+ }
+
+ public void testDeclaration() throws Exception
+ {
+ String s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><html/>";
+
+ // Parse the contents
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Verify 2 nodes total
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 2, nodes.size() );
+
+ // First node is XML declaration
+ Tag node = (Tag)nodes.get( 0 );
+ assertEquals( "xml", node.getName() );
+ assertEquals( null, node.getValue() );
+ assertEquals( NodeType.DECLARATION, node.getType() );
+ assertEquals( 2, node.getAttributes().size() );
+ }
+
+ public void testParseDoctype() throws Exception
+ {
+ String s = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
+
+ // Parse the contents
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Verify three nodes total
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 1, nodes.size() );
+ Node node = nodes.get( 0 );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( NodeType.DOCTYPE, node.getType() );
+ assertEquals( "html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"", node.getValue() );
+ assertEquals( s, node.toString() );
+ }
+
+ public void testMeta() throws Exception
+ {
+ String s = "<META name=\"Author\" content=\"Dave Raggett\">";
+
+ // Parse the contents
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Verify three nodes total
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 1, nodes.size() );
+ Tag tag = (Tag)nodes.get( 0 );
+ assertEquals( "META", tag.getName() );
+ assertEquals( NodeType.META, tag.getType() );
+ assertEquals( 2, tag.getAttributes().size() );
+ assertEquals( "name", tag.getAttribute( "name" ).getName() );
+ assertEquals( "Author", tag.getAttribute( "name" ).getValue() );
+ assertEquals( "content", tag.getAttribute( "content" ).getName() );
+ assertEquals( "Dave Raggett", tag.getAttribute( "content" ).getValue() );
+ assertEquals( s, tag.toString() );
+ }
+
+ public void testLink() throws Exception
+ {
+ String s = "<LINK rel=\"Start\" title=\"First\" type=\"text/html\" href=\"http://start.html\">";
+
+ // Parse the contents
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Verify three nodes total
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 1, nodes.size() );
+ Tag tag = (Tag)nodes.get( 0 );
+ assertEquals( "LINK", tag.getName() );
+ assertEquals( NodeType.LINK, tag.getType() );
+ assertEquals( 4, tag.getAttributes().size() );
+ assertEquals( "rel", tag.getAttribute( "rel" ).getName() );
+ assertEquals( "Start", tag.getAttribute( "rel" ).getValue() );
+ assertEquals( "title", tag.getAttribute( "title" ).getName() );
+ assertEquals( "First", tag.getAttribute( "title" ).getValue() );
+ assertEquals( "type", tag.getAttribute( "type" ).getName() );
+ assertEquals( "text/html", tag.getAttribute( "type" ).getValue() );
+ assertEquals( "href", tag.getAttribute( "href" ).getName() );
+ assertEquals( "http://start.html", tag.getAttribute( "href" ).getValue() );
+ }
+
+ public void testNestedAttributes() throws Exception
+ {
+ String s = "<a <b test=\"c\">selected=\"d\"</b> >Foo</a>";
+
+ // Parse the contents
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Verify three nodes total
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 3, nodes.size() );
+
+ // First node is a start tag
+ Node node;
+ node = nodes.get( 0 );
+ assertEquals( "a", node.getName() );
+ assertEquals( NodeType.START_TAG, node.getType() );
+ assertEquals( "<a <b test=\"c\">selected=\"d\"</b> >", node.toString() );
+
+ // Second node is a Text node
+ node = nodes.get( 1 );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( "Foo", node.getValue() );
+
+ // Third node is an end tag
+ node = nodes.get( 2 );
+ assertEquals( "a", node.getName() );
+ assertEquals( NodeType.END_TAG, node.getType() );
+
+ // First and third node are children of the root
+ assertEquals( 2, doc.getRoot().getChildren().size() );
+ assertEquals( NodeType.START_TAG, doc.getRoot().getChildren().get( 0 ).getType() );
+ assertEquals( NodeType.END_TAG, doc.getRoot().getChildren().get( 1 ).getType() );
+
+ // Test first node: should have 3 attributes (2 dynamic)
+ Tag tag = (Tag)nodes.get( 0 );
+ assertEquals( 3, tag.getAttributes().size() );
+ Attribute attribute;
+ attribute = tag.getAttributes().get( 0 );
+ assertEquals( null, attribute.getName() );
+ assertEquals( NodeType.DYNAMIC_ATTRIBUTE, attribute.getType() );
+ assertEquals( "<b test=\"c\">", attribute.getValue() );
+ assertEquals( "<b test=\"c\">", attribute.toString() );
+ attribute = tag.getAttributes().get( 1 );
+ assertEquals( "selected", attribute.getName() );
+ assertEquals( "d", attribute.getValue() );
+ assertEquals( "selected=\"d\"", attribute.toString() );
+ attribute = tag.getAttributes().get( 2 );
+ assertEquals( null, attribute.getName() );
+ assertEquals( NodeType.DYNAMIC_ATTRIBUTE, attribute.getType() );
+ assertEquals( "</b>", attribute.getValue() );
+ assertEquals( "</b>", attribute.toString() );
+ }
+
+ public void testAttributes() throws Exception
+ {
+ String s = "<a b=\"cd\"/>";
+
+ // Parse the contents
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Results in one node
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 1, nodes.size() );
+ Tag node;
+
+ // Verify HTML start tag
+ node = (Tag) nodes.get( 0 );
+ assertEquals( "a", node.getName() );
+ assertEquals( null, node.getValue() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( "<a b=\"cd\" />", node.toString() );
+
+ // Verify attributes
+ assertEquals( 1, node.getAttributes().size() );
+ Attribute attribute = node.getAttribute( "b" );
+ assertEquals( "b", attribute.getName() );
+ assertEquals( "cd", attribute.getValue() );
+ assertEquals( 3, attribute.getStart() );
+ assertEquals( 9, attribute.getEnd() );
+ }
+
+ public void testCdata() throws Exception
+ {
+ String s = " <![CDATA[ foo ]]> ";
+
+ // Parse the contents
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Results in 3 nodes
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 3, nodes.size() );
+ Node node;
+
+ // Verify text tag (0)
+ node = nodes.get( 0 );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( " ", node.getValue() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( " ", node.toString() );
+
+ // Verify CDATA tag (1)
+ node = nodes.get( 1 );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( " foo ", node.getValue() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.CDATA, node.getType() );
+ assertEquals( "<![CDATA[ foo ]]>", node.toString() );
+
+ // Verify text tag (2)
+ node = nodes.get( 2 );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( " ", node.getValue() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( " ", node.toString() );
+ }
+
+ public void testEmptyElementTag() throws Exception
+ {
+ String s = "<foo />";
+
+ // Parse the contents
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Results in one node
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 1, nodes.size() );
+ Tag node;
+
+ // Verify HTML combined tag
+ node = (Tag) nodes.get( 0 );
+ assertEquals( "foo", node.getName() );
+ assertEquals( null, node.getValue() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( "<foo/>", node.toString() );
+ }
+
+ public void testParseHtmlComment() throws Exception
+ {
+ String s = "<!-- This is a comment -->";
+
+ // Parse the contents
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Results in one node
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 1, nodes.size() );
+ Text node;
+
+ // Verify comment
+ node = (Text) nodes.get( 0 );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( " This is a comment ", node.getValue() );
+ assertEquals( 0, node.getChildren().size() );
+ }
+
+ public void testParseDirective() throws Exception
+ {
+ String s = "<%@ page import=\"org.apache.log4j.*\" %>";
+
+ // Parse the contents of the file
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Results in one node
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 1, nodes.size() );
+ Tag node;
+ Node attribute;
+
+ // Verify directive
+ node = (Tag) nodes.get( 0 );
+ assertEquals( "page", node.getName() );
+ assertEquals( 1, node.getAttributes().size() );
+ attribute = node.getAttributes().get( 0 );
+ assertEquals( "import", attribute.getName() );
+ assertEquals( "org.apache.log4j.*", attribute.getValue() );
+ assertEquals( "<%@ page import=\"org.apache.log4j.*\" %>", node.toString());
+ }
+
+ public void testParseDirectiveNoLeadingSpace() throws Exception
+ {
+ String s = "<%@page import=\"org.apache.log4j.*\"%>";
+
+ // Parse the contents of the file
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Results in one node
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 1, nodes.size() );
+ Tag node;
+ Node attribute;
+
+ // Verify directive
+ node = (Tag) nodes.get( 0 );
+ assertEquals( "page", node.getName() );
+ assertEquals( 1, node.getAttributes().size() );
+ attribute = node.getAttributes().get( 0 );
+ assertEquals( "import", attribute.getName() );
+ assertEquals( "org.apache.log4j.*", attribute.getValue() );
+ assertEquals( "<%@ page import=\"org.apache.log4j.*\" %>", node.toString());
+ }
+
+ public void testParse() throws Exception
+ {
+ File src = new File( "src/webdocs/LoginForm.jsp" );
+ String s = JspMigrator.readSource( src );
+
+ // Parse the contents of the file
+ JspParser parser = new JspParser();
+ JspDocument doc = parser.parse( s );
+
+ // Should result in 18 nodes parsed (10 tags/directives + 8
+ // text/whitespace nodes
+ Node node;
+ Node attribute;
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 18, nodes.size() );
+ int i = 0;
+
+ // Test line 1 aka nodes 0+1
+ node = nodes.get( i );
+ assertEquals( 1, node.getLine() );
+ assertEquals( 1, node.getColumn() );
+ assertEquals( 0, node.getStart() );
+ assertEquals( 39, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.JSP_DIRECTIVE, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "page", node.getName() );
+ assertEquals( 1, ((Tag) node).getAttributes().size() );
+ attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "import", attribute.getName() );
+ assertEquals( "org.apache.log4j.*", attribute.getValue() );
+ i++;
+ node = nodes.get( i );
+ assertEquals( 1, node.getLine() );
+ assertEquals( 40, node.getColumn() );
+ assertEquals( 39, node.getStart() );
+ assertEquals( 40, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "(TEXT)", node.getName() );
+ i++;
+
+ // Test line 2 aka nodes 2+3
+ node = nodes.get( i );
+ assertEquals( 2, node.getLine() );
+ assertEquals( 1, node.getColumn() );
+ assertEquals( 40, node.getStart() );
+ assertEquals( 80, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.JSP_DIRECTIVE, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "page", node.getName() );
+ assertEquals( 1, ((Tag) node).getAttributes().size() );
+ attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "import", attribute.getName() );
+ assertEquals( "com.ecyrd.jspwiki.*", attribute.getValue() );
+ i++;
+ node = nodes.get( i );
+ assertEquals( 2, node.getLine() );
+ assertEquals( 41, node.getColumn() );
+ assertEquals( 80, node.getStart() );
+ assertEquals( 81, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "(TEXT)", node.getName() );
+ i++;
+
+ // Test line 3 aka nodes 4+5
+ node = nodes.get( i );
+ assertEquals( 3, node.getLine() );
+ assertEquals( 1, node.getColumn() );
+ assertEquals( 81, node.getStart() );
+ assertEquals( 128, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.JSP_DIRECTIVE, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "page", node.getName() );
+ assertEquals( 1, ((Tag) node).getAttributes().size() );
+ attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "import", attribute.getName() );
+ assertEquals( "com.ecyrd.jspwiki.action.*", attribute.getValue() );
+ i++;
+ node = nodes.get( i );
+ assertEquals( 3, node.getLine() );
+ assertEquals( 48, node.getColumn() );
+ assertEquals( 128, node.getStart() );
+ assertEquals( 129, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "(TEXT)", node.getName() );
+ i++;
+
+ // Test line 4 aka nodes 6+7
+ node = nodes.get( i );
+ assertEquals( 4, node.getLine() );
+ assertEquals( 1, node.getColumn() );
+ assertEquals( 129, node.getStart() );
+ assertEquals( 163, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.JSP_DIRECTIVE, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "page", node.getName() );
+ assertEquals( 1, ((Tag) node).getAttributes().size() );
+ attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "errorPage", attribute.getName() );
+ assertEquals( "/Error.jsp", attribute.getValue() );
+ i++;
+ node = nodes.get( i );
+ assertEquals( 4, node.getLine() );
+ assertEquals( 35, node.getColumn() );
+ assertEquals( 163, node.getStart() );
+ assertEquals( 164, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "(TEXT)", node.getName() );
+ i++;
+
+ // Test line 5 aka nodes 8+9
+ node = nodes.get( i );
+ assertEquals( 5, node.getLine() );
+ assertEquals( 1, node.getColumn() );
+ assertEquals( 164, node.getStart() );
+ assertEquals( 218, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.JSP_DIRECTIVE, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "taglib", node.getName() );
+ assertEquals( 2, ((Tag) node).getAttributes().size() );
+ attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "uri", attribute.getName() );
+ assertEquals( "/WEB-INF/jspwiki.tld", attribute.getValue() );
+ attribute = ((Tag) node).getAttributes().get( 1 );
+ assertEquals( "prefix", attribute.getName() );
+ assertEquals( "wiki", attribute.getValue() );
+ i++;
+ node = nodes.get( i );
+ assertEquals( 5, node.getLine() );
+ assertEquals( 55, node.getColumn() );
+ assertEquals( 218, node.getStart() );
+ assertEquals( 219, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "(TEXT)", node.getName() );
+ i++;
+
+ // Test line 6 aka nodes 10+11
+ node = nodes.get( i );
+ assertEquals( 6, node.getLine() );
+ assertEquals( 1, node.getColumn() );
+ assertEquals( 219, node.getStart() );
+ assertEquals( 276, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.JSP_DIRECTIVE, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "taglib", node.getName() );
+ assertEquals( 2, ((Tag) node).getAttributes().size() );
+ attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "uri", attribute.getName() );
+ assertEquals( "/WEB-INF/stripes.tld", attribute.getValue() );
+ attribute = ((Tag) node).getAttributes().get( 1 );
+ assertEquals( "prefix", attribute.getName() );
+ assertEquals( "stripes", attribute.getValue() );
+ i++;
+ node = nodes.get( i );
+ assertEquals( 6, node.getLine() );
+ assertEquals( 58, node.getColumn() );
+ assertEquals( 276, node.getStart() );
+ assertEquals( 277, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "(TEXT)", node.getName() );
+ i++;
+
+ // Test line 7 aka nodes 12+13
+ node = nodes.get( i );
+ assertEquals( 7, node.getLine() );
+ assertEquals( 1, node.getColumn() );
+ assertEquals( 277, node.getStart() );
+ assertEquals( 354, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "stripes:useActionBean", node.getName() );
+
+ // AbstractNode 12 should have 1 attribute:
+ // beanclass="com.ecyrd.jspwiki.action.LoginActionBean"
+ assertEquals( 1, ((Tag) node).getAttributes().size() );
+ attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "beanclass", attribute.getName() );
+ assertEquals( NodeType.ATTRIBUTE, attribute.getType() );
+ assertEquals( "com.ecyrd.jspwiki.action.LoginActionBean", attribute.getValue() );
+ assertEquals( 'c', ((Tag) node).getAttributes().get( 0 ).getValue().charAt( 0 ) );
+ i++;
+
+ // Test line 7, node 13 (line break)
+ node = nodes.get( i );
+ assertEquals( 7, node.getLine() );
+ assertEquals( 78, node.getColumn() );
+ assertEquals( 354, node.getStart() );
+ assertEquals( 355, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "(TEXT)", node.getName() );
+ i++;
+
+ // Test lines 8-19 aka nodes 14+15
+ node = nodes.get( i );
+ assertEquals( 8, node.getLine() );
+ assertEquals( 1, node.getColumn() );
+ assertEquals( 355, node.getStart() );
+ assertEquals( 767, node.getEnd() );
+ assertEquals( NodeType.JSP_DECLARATION, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "(TEXT)", node.getName() );
+ i++;
+ node = nodes.get( i );
+ assertEquals( 19, node.getLine() );
+ assertEquals( 3, node.getColumn() );
+ assertEquals( 767, node.getStart() );
+ assertEquals( 768, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "(TEXT)", node.getName() );
+ i++;
+
+ // Test line 20-33 aka node 16
+ node = nodes.get( i );
+ assertEquals( 20, node.getLine() );
+ assertEquals( 1, node.getColumn() );
+ assertEquals( 768, node.getStart() );
+ assertEquals( 1513, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.SCRIPTLET, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "(TEXT)", node.getName() );
+ i++;
+
+ // Test second tag on line 33 aka node 17
+ node = nodes.get( i );
+ assertEquals( 33, node.getLine() );
+ assertEquals( 3, node.getColumn() );
+ assertEquals( 1513, node.getStart() );
+ assertEquals( 1553, node.getEnd() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 17, node.getSiblings().size() );
+ assertEquals( "wiki:Include", node.getName() );
+
+ // AbstractNode 17 should have 1 attribute: page="<%=contentPage%>"
+ assertEquals( 1, ((Tag) node).getAttributes().size() );
+ attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "page", attribute.getName() );
+ assertEquals( NodeType.ATTRIBUTE, attribute.getType() );
+ assertEquals( "<%=contentPage%>", attribute.getValue() );
+ assertEquals( 1, attribute.getChildren().size() );
+ assertEquals( NodeType.JSP_EXPRESSION, attribute.getChildren().get( 0 ).getType() );
+ assertEquals( "contentPage", attribute.getChildren().get( 0 ).getValue() );
+ i++;
+ }
+
+ public void testParseNestedTags()
+ {
+ String s = " <foo attribute1=\"1\"> <bar attribute2=\"2\" attribute3=\"3\"/> </foo> ";
+ JspDocument doc = new JspParser().parse( s );
+
+ // Total number of nodes (depth-first search) is 7
+ List<Node> nodes = doc.getNodes();
+ Node node;
+ Node attribute;
+ assertEquals( 7, nodes.size() );
+
+ // First, check the root node. Should have 4 children (2 text nodes + 2
+ // html nodes)
+ node = doc.getRoot();
+ assertEquals( 4, node.getChildren().size() );
+
+ // AbstractNode 0 is whitespace
+ node = nodes.get( 0 );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( " ", node.getValue() );
+ assertEquals( doc.getRoot(), node.getParent() );
+ assertEquals( 0, node.getStart() );
+ assertEquals( 2, node.getEnd() );
+
+ // AbstractNode 1 is <foo> with 1 attribute
+ node = nodes.get( 1 );
+ assertEquals( NodeType.START_TAG, node.getType() );
+ assertEquals( "<foo attribute1=\"1\">", node.toString() );
+ assertEquals( "foo", node.getName() );
+ assertEquals( " <bar attribute2=\"2\" attribute3=\"3\" /> ", node.getValue() );
+ assertEquals( 2, node.getStart() );
+ assertEquals( 22, node.getEnd() );
+
+ // AbstractNode 1: attributes test
+ assertEquals( 1, ((Tag) node).getAttributes().size() );
+ attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "attribute1", attribute.getName() );
+ assertEquals( "1", attribute.getValue() );
+ assertEquals( 7, attribute.getStart() );
+ assertEquals( 21, attribute.getEnd() );
+
+ // AbstractNode 1 also has 3 child elements: <bar> plus two whitespace
+ // nodes
+ assertEquals( 3, node.getChildren().size() );
+
+ // Check AbstractNode 1, child 0 -- should be whitespace
+ node = nodes.get( 1 ).getChildren().get( 0 );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( " ", node.getValue() );
+ assertEquals( nodes.get( 1 ), node.getParent() );
+ assertEquals( 22, node.getStart() );
+ assertEquals( 24, node.getEnd() );
+
+ // Check AbstractNode 1, child 1 -- should be <bar>
+ node = nodes.get( 1 ).getChildren().get( 1 );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( "<bar attribute2=\"2\" attribute3=\"3\" />", node.toString() );
+ assertEquals( "bar", node.getName() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( 24, node.getStart() );
+ assertEquals( 60, node.getEnd() );
+ assertEquals( 2, ((Tag) node).getAttributes().size() );
+ assertEquals( "attribute2", ((Tag) node).getAttributes().get( 0 ).getName() );
+ assertEquals( "2", ((Tag) node).getAttributes().get( 0 ).getValue() );
+ assertEquals( "attribute3", ((Tag) node).getAttributes().get( 1 ).getName() );
+ assertEquals( "3", ((Tag) node).getAttributes().get( 1 ).getValue() );
+
+ // Check AbstractNode 1, child 2 -- should be whitespace
+ node = nodes.get( 1 ).getChildren().get( 2 );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( " ", node.getValue() );
+ assertEquals( nodes.get( 1 ), node.getParent() );
+ assertEquals( 60, node.getStart() );
+ assertEquals( 62, node.getEnd() );
+
+ // AbstractNode 5 (</foo) has no attributes
+ node = nodes.get( 5 );
+ assertEquals( NodeType.END_TAG, node.getType() );
+ assertEquals( null, node.getValue() );
+ assertEquals( "foo", node.getName() );
+ assertEquals( 0, ((Tag) node).getAttributes().size() );
+ assertEquals( 0, node.getChildren().size() );
+ assertEquals( 62, node.getStart() );
+ assertEquals( 68, node.getEnd() );
+
+ // AbstractNode 6 is whitespace
+ node = nodes.get( 6 );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( " ", node.getValue() );
+ assertEquals( doc.getRoot(), node.getParent() );
+ assertEquals( 68, node.getStart() );
+ assertEquals( 70, node.getEnd() );
+
+ // The children of AbstractNode 1 == Nodes 2, 3 and 4 from
+ // doc.getNodes()
+ node = nodes.get( 1 );
+ assertEquals( nodes.get( 2 ), node.getChildren().get( 0 ) );
+ assertEquals( nodes.get( 3 ), node.getChildren().get( 1 ) );
+ assertEquals( nodes.get( 4 ), node.getChildren().get( 2 ) );
+
+ }
+
+ public void testParseNestedExpression()
+ {
+ String s = " <wiki:Include page=\"<%=contentPage%>\" var=\'Foo\' /> ";
+ JspDocument doc = new JspParser().parse( s );
+
+ List<Node> nodes = doc.getNodes();
+ Node node;
+ assertEquals( 3, nodes.size() );
+
+ // AbstractNode 1: text node
+ node = nodes.get( 0 );
+ assertEquals( 1, node.getLine() );
+ assertEquals( 1, node.getColumn() );
+ assertEquals( 0, node.getStart() );
+ assertEquals( 2, node.getEnd() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( " ", node.getValue() );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 2, node.getSiblings().size() );
+ assertEquals( 0, node.getChildren().size() );
+
+ // AbstractNode 2: HTML tag with attribute containing JSP expression
+ node = nodes.get( 1 );
+ assertEquals( 1, node.getLine() );
+ assertEquals( 3, node.getColumn() );
+ assertEquals( 2, node.getStart() );
+ assertEquals( 52, node.getEnd() );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( "<wiki:Include page=\"<%=contentPage%>\" var=\'Foo\' />", node.toString() );
+ assertEquals( "wiki:Include", node.getName() );
+ assertEquals( null, node.getValue() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 2, node.getSiblings().size() );
+ assertEquals( 0, node.getChildren().size() );
+
+ // AbstractNode 2: test attributes
+ assertEquals( 2, ((Tag) node).getAttributes().size() );
+ Node attribute;
+ attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( NodeType.ATTRIBUTE, attribute.getType() );
+ assertEquals( "page", attribute.getName() );
+ assertEquals( "<%=contentPage%>", attribute.getValue() );
+ assertEquals( 1, attribute.getChildren().size() );
+ assertEquals( NodeType.JSP_EXPRESSION, attribute.getChildren().get( 0 ).getType() );
+ assertEquals( "contentPage", attribute.getChildren().get( 0 ).getValue() );
+
+ attribute = ((Tag) node).getAttributes().get( 1 );
+ assertEquals( NodeType.ATTRIBUTE, attribute.getType() );
+ assertEquals( "var", attribute.getName() );
+ assertEquals( "Foo", attribute.getValue() );
+ assertEquals( 1, attribute.getChildren().size() );
+ assertEquals( NodeType.TEXT, attribute.getChildren().get( 0 ).getType() );
+ assertEquals( "Foo", attribute.getChildren().get( 0 ).getValue() );
+
+ // AbstractNode 3: text
+ node = nodes.get( 2 );
+ assertEquals( 1, node.getLine() );
+ assertEquals( 53, node.getColumn() );
+ assertEquals( 52, node.getStart() );
+ assertEquals( 54, node.getEnd() );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( " ", node.getValue() );
+ assertEquals( "(TEXT)", node.getName() );
+ assertEquals( NodeType.ROOT, node.getParent().getType() );
+ assertEquals( 2, node.getSiblings().size() );
+ assertEquals( 0, node.getChildren().size() );
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite( JspParserTest.class );
+ }
+}
Added: incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/StripesJspTransformerTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/StripesJspTransformerTest.java?rev=723198&view=auto
==============================================================================
--- incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/StripesJspTransformerTest.java (added)
+++ incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/StripesJspTransformerTest.java Wed Dec 3 19:10:36 2008
@@ -0,0 +1,323 @@
+package com.ecyrd.jspwiki.ui.migrator;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class StripesJspTransformerTest extends TestCase
+{
+ public static Test suite()
+ {
+ return new TestSuite( StripesJspTransformerTest.class );
+ }
+
+ protected Map<String, Object> m_sharedState = new HashMap<String, Object>();
+
+ protected JspTransformer m_transformer = new StripesJspTransformer();
+
+ protected JspDocument m_doc = new JspDocument();
+
+ public StripesJspTransformerTest( String s )
+ {
+ super( s );
+ }
+
+ public void testAddStripesTaglib() throws Exception
+ {
+ String s = "<form/>";
+ JspDocument doc = new JspParser().parse( s );
+ assertEquals( 1, doc.getNodes().size() );
+ m_transformer.transform( m_sharedState, doc );
+ Node node;
+ Attribute attribute;
+
+ // Verify Stripes taglib + linebreak were added
+ assertEquals( 3, doc.getNodes().size() );
+
+ // Verify Stripes taglib
+ node = doc.getNodes().get( 0 );
+ assertEquals( NodeType.JSP_DIRECTIVE, node.getType() );
+ assertEquals( "taglib", node.getName() );
+ attribute = ((Tag) node).getAttribute( "prefix" );
+ assertEquals( "stripes", attribute.getValue() );
+ attribute = ((Tag) node).getAttribute( "uri" );
+ assertEquals( "/WEB-INF/stripes.tld", attribute.getValue() );
+
+ // Verify linebreak
+ node = doc.getNodes().get( 1 );
+ assertEquals( NodeType.TEXT, node.getType() );
+
+ // Verify old tag is still there too
+ node = doc.getNodes().get( 2 );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( "stripes:form", node.getName() );
+ assertEquals( 0, ((Tag) node).getAttributes().size() );
+ }
+
+ public void testFormEmptyElementTag() throws Exception
+ {
+ String s = "<form accept-charset=\"UTF-8\" method=\"POST\" />";
+ JspDocument doc = new JspParser().parse( s );
+ m_transformer.transform( m_sharedState, doc );
+
+ assertEquals( 3, doc.getNodes().size() ); // Added Stripes taglib + linebreak
+ Node node = doc.getNodes().get( 2 ); // First 2 are injected Stripes taglib+ llinebreak
+ assertEquals( "stripes:form", node.getName() );
+
+ assertEquals( 2, ((Tag) node).getAttributes().size() );
+ Node attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "acceptcharset", attribute.getName() );
+ }
+
+ public void testFormWithParams() throws Exception
+ {
+ String s = "<form action=\"Login.jsp?tab=profile\"/>";
+ JspDocument doc = new JspParser().parse( s );
+ m_transformer.transform( m_sharedState, doc );
+
+ assertEquals( 5, doc.getNodes().size() );
+ Node node = doc.getNodes().get( 2 ); // First 2 are injected Stripes taglib+ llinebreak
+ assertEquals( "stripes:form", node.getName() );
+ assertEquals( 1, ((Tag) node).getAttributes().size() );
+ Node attribute = ((Tag) node).getAttributes().get( 0 );
+ assertEquals( "Login.jsp", attribute.getValue() );
+ }
+
+ public void testLabel() throws Exception
+ {
+ String s = "<label for=\"assertedName\"><fmt:message key=\"prefs.assertedname\"/></label>";
+ JspDocument doc = new JspParser().parse( s );
+ m_transformer.transform( m_sharedState, doc );
+
+ // Message tag is removed; 2 more added
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 3, nodes.size() );
+
+ // First node is the Stripes taglib
+ Node node = nodes.get( 0 );
+ assertEquals( NodeType.JSP_DIRECTIVE, node.getType() );
+
+ // Second node is the injected linebreak
+ node = nodes.get( 1 );
+ assertEquals( NodeType.TEXT, node.getType() );
+
+ // Third node is the re-structured stripes:label
+ Tag tag = (Tag)nodes.get( 2 );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, tag.getType() );
+ assertEquals( "stripes:label", tag.getName() );
+ assertEquals( 2, tag.getAttributes().size() );
+ assertEquals( "for", tag.getAttribute( "for" ).getName() );
+ assertEquals( "assertedName", tag.getAttribute( "for" ).getValue() );
+ assertEquals( "name", tag.getAttribute( "name" ).getName() );
+ assertEquals( "prefs.assertedname", tag.getAttribute( "name" ).getValue() );
+
+ assertEquals( "<stripes:label for=\"assertedName\" name=\"prefs.assertedname\" />", tag.toString() );
+ }
+
+ public void testLabelConflictingName() throws Exception
+ {
+ String s = "<label for=\"assertedName\" name=\"foo\"><fmt:message key=\"prefs.assertedname\"/></label>";
+ JspDocument doc = new JspParser().parse( s );
+ m_transformer.transform( m_sharedState, doc );
+
+ // Added 2 nodes...
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 5, nodes.size() );
+
+ // First node is the Stripes taglib
+ Node node = nodes.get( 0 );
+ assertEquals( NodeType.JSP_DIRECTIVE, node.getType() );
+
+ // Second node is the injected linebreak
+ node = nodes.get( 1 );
+ assertEquals( NodeType.TEXT, node.getType() );
+
+ // Third node is the re-structured stripes:label
+ Tag tag = (Tag)nodes.get( 2 );
+ assertEquals( NodeType.START_TAG, tag.getType() );
+ assertEquals( "stripes:label", tag.getName() );
+ assertEquals( 2, tag.getAttributes().size() );
+ assertEquals( "for", tag.getAttribute( "for" ).getName() );
+ assertEquals( "assertedName", tag.getAttribute( "for" ).getValue() );
+ assertEquals( "name", tag.getAttribute( "name" ).getName() );
+ assertEquals( "foo", tag.getAttribute( "name" ).getValue() );
+
+ // Fourth node is the fmt:message tag, which did NOT get moved
+ tag = (Tag)nodes.get( 3 );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, tag.getType() );
+ assertEquals( "fmt:message", tag.getName() );
+ assertEquals( 1, tag.getAttributes().size() );
+ assertEquals( "key", tag.getAttribute( "key" ).getName() );
+ assertEquals( "prefs.assertedname", tag.getAttribute( "key" ).getValue() );
+
+ // Fifth node is the end tag
+ tag = (Tag)nodes.get( 4 );
+ assertEquals( NodeType.END_TAG, tag.getType() );
+ assertEquals( "stripes:label", tag.getName() );
+ assertEquals( 0, tag.getAttributes().size() );
+ }
+
+ public void testLabelNoFmtMessage() throws Exception
+ {
+ String s = "<label for=\"assertedName\">This is a test.</label>";
+ JspDocument doc = new JspParser().parse( s );
+ m_transformer.transform( m_sharedState, doc );
+
+ // Added 2 nodes...
+ List<Node> nodes = doc.getNodes();
+ assertEquals( 5, nodes.size() );
+
+ // First node is the Stripes taglib
+ Node node = nodes.get( 0 );
+ assertEquals( NodeType.JSP_DIRECTIVE, node.getType() );
+
+ // Second node is the injected linebreak
+ node = nodes.get( 1 );
+ assertEquals( NodeType.TEXT, node.getType() );
+
+ // Third node is the stripes:label start
+ Tag tag = (Tag)nodes.get( 2 );
+ assertEquals( NodeType.START_TAG, tag.getType() );
+ assertEquals( "stripes:label", tag.getName() );
+ assertEquals( 1, tag.getAttributes().size() );
+ assertEquals( "for", tag.getAttribute( "for" ).getName() );
+ assertEquals( "assertedName", tag.getAttribute( "for" ).getValue() );
+
+ // Fourth node is the label text
+ node = nodes.get( 3 );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( "This is a test.", node.getValue() );
+
+ // Fifth node is the stripes:label end
+ tag = (Tag)nodes.get( 4 );
+ assertEquals( NodeType.END_TAG, tag.getType() );
+ assertEquals( "stripes:label", tag.getName() );
+ }
+
+ public void testNoAddStripesTaglib() throws Exception
+ {
+ String s = "<%@ taglib uri=\"/WEB-INF/stripes.tld\" prefix=\"stripes\" %>\n<foo/>";
+ JspDocument doc = new JspParser().parse( s );
+ assertEquals( 3, doc.getNodes().size() );
+ m_transformer.transform( m_sharedState, doc );
+
+ // Verify Stripes taglib was NOT added
+ assertEquals( 3, doc.getNodes().size() );
+ }
+
+ public void testPasswordTag() throws Exception
+ {
+ String s = "<input type=\"password\" size=\"24\" value=\"\" name=\"j_username\" id=\"j_username\" />";
+ JspDocument doc = new JspParser().parse( s );
+ Node node;
+
+ // Before transformation, 1 node, with 5 attributes
+ node = doc.getNodes().get( 0 );
+ assertEquals( 1, doc.getNodes().size() );
+ assertEquals( 5, ((Tag) node).getAttributes().size() );
+ m_transformer.transform( m_sharedState, doc );
+
+ // After transformation, the "type" attribute is deleted
+ assertEquals( 3, doc.getNodes().size() ); // Added Stripes taglib + linebreak
+ node = doc.getNodes().get( 2 ); // First 2 are injected Stripes taglib+llinebreak
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( "stripes:password", node.getName() );
+ assertEquals( 4, ((Tag) node).getAttributes().size() );
+ assertEquals( 0, node.getChildren().size() );
+ }
+
+ public void testPasswordTagComplex() throws Exception
+ {
+ String s = "<input type=\"password\" size=\"24\" value=\"<wiki:Variable var='uid' default='' />\" name=\"j_username\" id=\"j_username\" />";
+ JspDocument doc = new JspParser().parse( s );
+ assertEquals( 1, doc.getNodes().size() );
+ m_transformer.transform( m_sharedState, doc );
+
+ // After transformation, the "type" and "value" attributes are deleted;
+ // value becomes child node
+ assertEquals( 5, doc.getNodes().size() ); // Added Stripes taglib +linebreak
+ Node node = doc.getNodes().get( 2 ); // First 2 are injected Stripes taglib+ llinebreak
+ assertEquals( NodeType.START_TAG, node.getType() );
+ assertEquals( "stripes:password", node.getName() );
+ assertEquals( 3, ((Tag) node).getAttributes().size() );
+
+ // The value attribute should show up as a child node
+ assertEquals( 1, node.getChildren().size() );
+ node = node.getChildren().get( 0 );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( "wiki:Variable", node.getName() );
+ }
+
+ public void testTextArea() throws Exception
+ {
+ String s = "<textarea id=\"members\" name=\"members\" rows=\"10\" cols=\"30\" value=\"Foo\" />";
+ JspDocument doc = new JspParser().parse( s );
+ assertEquals( 1, doc.getNodes().size() );
+ m_transformer.transform( m_sharedState, doc );
+
+ // After transformation, the tag name is renamed
+ assertEquals( 3, doc.getNodes().size() ); // Added Stripes taglib + linebreak
+ Node node = doc.getNodes().get( 2 ); // First 2 are injected Stripes taglib+ llinebreak
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( "stripes:textarea", node.getName() );
+ assertEquals( 5, ((Tag) node).getAttributes().size() );
+
+ // The value attribute should have stayed as an attribute
+ Attribute attribute = ((Tag) node).getAttribute( "value" );
+ assertNotNull( attribute );
+ assertEquals( 1, attribute.getChildren().size() );
+ node = attribute.getChildren().get( 0 );
+ assertEquals( NodeType.TEXT, node.getType() );
+ assertEquals( "Foo", node.getValue() );
+ }
+
+ public void testTextAreaComplex() throws Exception
+ {
+ String s = "<textarea id=\"members\" name=\"members\" rows=\"10\" cols=\"30\" value=\"<%=foo%>\" />";
+ JspDocument doc = new JspParser().parse( s );
+ assertEquals( 1, doc.getNodes().size() );
+ m_transformer.transform( m_sharedState, doc );
+
+ // After transformation, the tag name is renamed & tag is split
+ assertEquals( 5, doc.getNodes().size() ); // Added Stripes taglib + linebreak
+ Node node = doc.getNodes().get( 2 ); // First 2 are injected Stripes taglib+ llinebreak
+ assertEquals( NodeType.START_TAG, node.getType() );
+ assertEquals( "stripes:textarea", node.getName() );
+ assertEquals( 4, ((Tag) node).getAttributes().size() ); // Value attribute vanishes...
+
+ // Verify newly created end tag
+ node = doc.getNodes().get( 4 );
+ assertEquals( NodeType.END_TAG, node.getType() );
+ assertEquals( "stripes:textarea", node.getName() );
+
+ // The value attribute should have moved to child nodes
+ node = doc.getNodes().get( 2 );
+ Attribute attribute = ((Tag) node).getAttribute( "value" );
+ assertNull( attribute );
+
+ assertEquals( 1, node.getChildren().size() );
+ node = node.getChildren().get( 0 );
+ assertEquals( NodeType.JSP_EXPRESSION, node.getType() );
+ assertEquals( "foo", node.getValue() );
+ assertEquals( "<%=foo%>", node.toString() );
+ }
+
+ public void testTextAreaNoNameAttribute() throws Exception
+ {
+ String s = "<textarea id=\"members\" rows=\"10\" cols=\"30\" value=\"Foo\" />";
+ JspDocument doc = new JspParser().parse( s );
+ assertEquals( 1, doc.getNodes().size() );
+ m_transformer.transform( m_sharedState, doc );
+
+ // After transformation, the tag name is stays the same (no name attribute...)
+ assertEquals( 1, doc.getNodes().size() ); // NO Stripes taglib or linebreak
+ Node node = doc.getNodes().get( 0 );
+ assertEquals( NodeType.EMPTY_ELEMENT_TAG, node.getType() );
+ assertEquals( "textarea", node.getName() );
+ assertEquals( 4, ((Tag) node).getAttributes().size() );
+ }
+}
Added: incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/TagTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/TagTest.java?rev=723198&view=auto
==============================================================================
--- incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/TagTest.java (added)
+++ incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/migrator/TagTest.java Wed Dec 3 19:10:36 2008
@@ -0,0 +1,85 @@
+package com.ecyrd.jspwiki.ui.migrator;
+
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class TagTest extends TestCase
+{
+ public void testAddChildEmptyElement()
+ {
+ JspDocument doc = new JspDocument();
+
+ // Set up tag <foo/>
+ Tag parentTag = new Tag( doc, NodeType.EMPTY_ELEMENT_TAG );
+ parentTag.setName( "foo" );
+ doc.getRoot().addChild( parentTag );
+ assertEquals( "<foo/>", parentTag.toString() );
+ assertEquals( 1, doc.getRoot().getChildren().size() );
+
+ // Add child tag <bar/>
+ Tag childTag = new Tag( doc, NodeType.EMPTY_ELEMENT_TAG );
+ childTag.setName( "bar" );
+ parentTag.addChild( childTag );
+
+ // Should result in <foo><bar/></foo>
+ assertEquals( "<foo><bar/></foo>", doc.toString() );
+ assertEquals( 2, doc.getRoot().getChildren().size() );
+ }
+
+ public void testAddChild()
+ {
+ JspDocument doc = new JspDocument();
+
+ // Set up tag <foo>
+ Tag parentTag = new Tag( doc, NodeType.START_TAG);
+ parentTag.setName( "foo" );
+ doc.getRoot().addChild( parentTag );
+ assertEquals( "<foo>", parentTag.toString() );
+ assertEquals( 1, doc.getRoot().getChildren().size() );
+
+ // Add child tag <bar/>
+ Tag childTag = new Tag( doc, NodeType.EMPTY_ELEMENT_TAG );
+ childTag.setName( "bar" );
+ parentTag.addChild( childTag );
+
+ // Should result in <foo><bar/> (with bar a child of foo)
+ assertEquals( "<foo><bar/>", doc.toString() );
+ assertEquals( 1, doc.getRoot().getChildren().size() );
+ }
+
+ public void testAddChildAtIndex()
+ {
+ JspDocument doc = new JspDocument();
+
+ // Set up tag <foo>
+ Tag parentTag = new Tag( doc, NodeType.START_TAG);
+ parentTag.setName( "foo" );
+ doc.getRoot().addChild( parentTag );
+ assertEquals( "<foo>", parentTag.toString() );
+ assertEquals( 1, doc.getRoot().getChildren().size() );
+
+ // Add child tag <bar/>
+ Tag childTag = new Tag( doc, NodeType.EMPTY_ELEMENT_TAG );
+ childTag.setName( "bar" );
+ parentTag.addChild( childTag );
+ assertEquals( 1, doc.getRoot().getChildren().size() );
+
+ // Add a second child <golf/> before <bar>
+ childTag = new Tag( doc, NodeType.EMPTY_ELEMENT_TAG );
+ childTag.setName( "golf" );
+ parentTag.addChild( childTag, 0 );
+
+ // Should result in <foo><golf/><bar/> (with golf and bar children of foo)
+ assertEquals( "<foo><golf/><bar/>", doc.toString() );
+ assertEquals( 1, doc.getRoot().getChildren().size() );
+ assertEquals( 2, doc.getRoot().getChildren().get( 0 ).getChildren().size() );
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite( TagTest.class );
+ }
+
+}
Modified: incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/stripes/AllTests.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/stripes/AllTests.java?rev=723198&r1=723197&r2=723198&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/stripes/AllTests.java (original)
+++ incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/stripes/AllTests.java Wed Dec 3 19:10:36 2008
@@ -8,12 +8,8 @@
{
public static Test suite()
{
- TestSuite suite = new TestSuite("JSP migration tests");
- suite.addTest( JspParserTest.suite() );
- suite.addTest( JspDocumentTest.suite() );
- suite.addTest( JSPWikiJspTransformerTest.suite() );
- suite.addTest( StripesJspTransformerTest.suite() );
- suite.addTest( TagTest.suite() );
+ TestSuite suite = new TestSuite("Stripes UI tests");
+ suite.addTest( HandlerInfoTest.suite() );
return suite;
}
Copied: incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/stripes/HandlerInfoTest.java (from r723022, incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/action/HandlerInfoTest.java)
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/stripes/HandlerInfoTest.java?p2=incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/stripes/HandlerInfoTest.java&p1=incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/action/HandlerInfoTest.java&r1=723022&r2=723198&rev=723198&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/action/HandlerInfoTest.java (original)
+++ incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ui/stripes/HandlerInfoTest.java Wed Dec 3 19:10:36 2008
@@ -1,4 +1,4 @@
-package com.ecyrd.jspwiki.action;
+package com.ecyrd.jspwiki.ui.stripes;
import java.lang.reflect.Method;
import java.security.Permission;
@@ -11,8 +11,10 @@
import net.sourceforge.stripes.mock.MockRoundtrip;
import com.ecyrd.jspwiki.TestEngine;
+import com.ecyrd.jspwiki.action.GroupActionBean;
import com.ecyrd.jspwiki.auth.permissions.GroupPermission;
import com.ecyrd.jspwiki.auth.permissions.WikiPermission;
+import com.ecyrd.jspwiki.ui.stripes.HandlerInfo;
public class HandlerInfoTest extends TestCase
{
Modified: incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/util/AllTests.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/util/AllTests.java?rev=723198&r1=723197&r2=723198&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/util/AllTests.java (original)
+++ incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/util/AllTests.java Wed Dec 3 19:10:36 2008
@@ -2,7 +2,7 @@
package com.ecyrd.jspwiki.util;
-import com.ecyrd.jspwiki.ui.stripes.JspParserTest;
+import com.ecyrd.jspwiki.ui.migrator.JspParserTest;
import junit.framework.*;