KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > net > sourceforge > pmd > jsp > ast > JspDocStyleTest


1 package test.net.sourceforge.pmd.jsp.ast;
2
3 import net.sourceforge.pmd.jsp.ast.ASTAttribute;
4 import net.sourceforge.pmd.jsp.ast.ASTAttributeValue;
5 import net.sourceforge.pmd.jsp.ast.ASTCData;
6 import net.sourceforge.pmd.jsp.ast.ASTCommentTag;
7 import net.sourceforge.pmd.jsp.ast.ASTDoctypeDeclaration;
8 import net.sourceforge.pmd.jsp.ast.ASTDoctypeExternalId;
9 import net.sourceforge.pmd.jsp.ast.ASTElement;
10
11 import java.util.ArrayList JavaDoc;
12 import java.util.Collections JavaDoc;
13 import java.util.Comparator JavaDoc;
14 import java.util.List JavaDoc;
15 import java.util.Set JavaDoc;
16
17 /**
18  * Test parsing of a JSP in document style, by checking the generated AST.
19  *
20  * @author pieter_van_raemdonck - Application Engineers NV/SA - www.ae.be
21  *
22  */

23 public class JspDocStyleTest extends AbstractJspNodesTst {
24
25     /**
26      * Smoke test for JSP parser.
27      *
28      * @throws Throwable
29      */

30     public void testSimplestJsp() throws Throwable JavaDoc {
31         assertNumberOfNodes(ASTElement.class, TEST_SIMPLEST_HTML, 1);
32     }
33
34     /**
35      * Test the information on a Element and Attribute.
36      *
37      * @throws Throwable
38      */

39     public void testElementAttributeAndNamespace() throws Throwable JavaDoc {
40         Set JavaDoc nodes = getNodes(null, TEST_ELEMENT_AND_NAMESPACE);
41
42         Set JavaDoc elementNodes = getNodesOfType(ASTElement.class, nodes);
43         assertEquals("One element node expected!", 1, elementNodes.size());
44         ASTElement element = (ASTElement) elementNodes.iterator().next();
45         assertEquals("Correct name expected!", "h:html", element.getName());
46         assertEquals("Has namespace prefix!", true, element.isHasNamespacePrefix());
47         assertEquals("Element is empty!", true, element.isEmpty());
48         assertEquals("Correct namespace prefix of element expected!", "h", element
49                 .getNamespacePrefix());
50         assertEquals("Correct local name of element expected!", "html", element
51                 .getLocalName());
52
53         Set JavaDoc attributeNodes = getNodesOfType(ASTAttribute.class, nodes);
54         assertEquals("One attribute node expected!", 1, attributeNodes.size());
55         ASTAttribute attribute = (ASTAttribute) attributeNodes.iterator().next();
56         assertEquals("Correct name expected!", "MyNsPrefix:MyAttr", attribute
57                 .getName());
58         assertEquals("Has namespace prefix!", true, attribute.isHasNamespacePrefix());
59         assertEquals("Correct namespace prefix of element expected!", "MyNsPrefix",
60                 attribute.getNamespacePrefix());
61         assertEquals("Correct local name of element expected!", "MyAttr", attribute
62                 .getLocalName());
63
64     }
65     
66     /**
67      * Test exposing a bug of parsing error when having a hash as last character
68      * in an attribute value.
69      *
70      */

71     public void testAttributeValueContainingHash()
72     {
73         Set JavaDoc nodes = getNodes(null, TEST_ATTRIBUTE_VALUE_CONTAINING_HASH);
74         
75         Set JavaDoc attributes = getNodesOfType(ASTAttribute.class, nodes);
76         assertEquals("Three attributes expected!", 3, attributes.size());
77         
78         List JavaDoc attrsList = new ArrayList JavaDoc(attributes);
79         Collections.sort(attrsList, new Comparator JavaDoc() {
80             public int compare(Object JavaDoc arg0, Object JavaDoc arg1) {
81                 return ((ASTAttribute)arg0).getName().compareTo(
82                         ((ASTAttribute)arg1).getName() );
83             }
84         });
85         
86         ASTAttribute attr = (ASTAttribute) attrsList.get(0);
87         assertEquals("Correct attribute name expected!",
88                 "foo", attr.getName());
89         assertEquals("Correct attribute value expected!",
90                 "CREATE", ((ASTAttributeValue) attr.getFirstChildOfType(ASTAttributeValue.class)).getImage());
91         
92         attr = (ASTAttribute) attrsList.get(1);
93         assertEquals("Correct attribute name expected!",
94                 "href", attr.getName());
95         assertEquals("Correct attribute value expected!",
96                 "#", ((ASTAttributeValue) attr.getFirstChildOfType(ASTAttributeValue.class)).getImage());
97         
98         attr = (ASTAttribute) attrsList.get(2);
99         assertEquals("Correct attribute name expected!",
100                 "something", attr.getName());
101         assertEquals("Correct attribute value expected!",
102                 "#yes#", ((ASTAttributeValue) attr.getFirstChildOfType(ASTAttributeValue.class)).getImage());
103     }
104
105     /**
106      * Test correct parsing of CDATA.
107      */

108     public void testCData() {
109         Set JavaDoc cdataNodes = getNodes(ASTCData.class, TEST_CDATA);
110
111         assertEquals("One CDATA node expected!", 1, cdataNodes.size());
112         ASTCData cdata = (ASTCData) cdataNodes.iterator().next();
113         assertEquals("Content incorrectly parsed!", " some <cdata> ]] ]> ", cdata
114                 .getImage());
115     }
116
117     /**
118      * Test parsing of Doctype declaration.
119      */

120     public void testDoctype() {
121         Set JavaDoc nodes = getNodes(null, TEST_DOCTYPE);
122
123         Set JavaDoc docTypeDeclarations = getNodesOfType(ASTDoctypeDeclaration.class, nodes);
124         assertEquals("One doctype declaration expected!", 1, docTypeDeclarations
125                 .size());
126         ASTDoctypeDeclaration docTypeDecl = (ASTDoctypeDeclaration) docTypeDeclarations
127                 .iterator().next();
128         assertEquals("Correct doctype-name expected!", "html", docTypeDecl.getName());
129         
130         Set JavaDoc externalIds = getNodesOfType(ASTDoctypeExternalId.class, nodes);
131         assertEquals("One doctype external id expected!", 1, externalIds
132                 .size());
133         ASTDoctypeExternalId externalId = (ASTDoctypeExternalId) externalIds
134                 .iterator().next();
135         assertEquals("Correct external public id expected!", "-//W3C//DTD XHTML 1.1//EN",
136                 externalId.getPublicId());
137         assertEquals("Correct external uri expected!", "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd",
138                 externalId.getUri());
139         
140     }
141     
142     /**
143      * Test parsing of a XML comment.
144      *
145      */

146     public void testComment() {
147         Set JavaDoc comments = getNodes(ASTCommentTag.class, TEST_COMMENT);
148         assertEquals("One comment expected!", 1, comments.size());
149         ASTCommentTag comment = (ASTCommentTag) comments.iterator().next();
150         assertEquals("Correct comment content expected!", "comment", comment.getImage());
151     }
152
153     private static final String JavaDoc TEST_SIMPLEST_HTML = "<html/>";
154
155     private static final String JavaDoc TEST_ELEMENT_AND_NAMESPACE = "<h:html MyNsPrefix:MyAttr='MyValue'/>";
156
157     private static final String JavaDoc TEST_CDATA = "<html><![CDATA[ some <cdata> ]] ]> ]]></html>";
158
159     private static final String JavaDoc TEST_DOCTYPE = "<?xml version=\"1.0\" standalone='yes'?>\n"
160             + "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" "
161             + "\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n"
162             + "<greeting>Hello, world!</greeting>";
163     
164     private static final String JavaDoc TEST_COMMENT = "<html><!-- comment --></html>";
165     
166     private static final String JavaDoc TEST_ATTRIBUTE_VALUE_CONTAINING_HASH =
167         "<tag:if something=\"#yes#\" foo=\"CREATE\"> <a HREF=\"#\">foo</a> </tag:if>";
168 }
169
Popular Tags