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 ; 12 import java.util.Collections ; 13 import java.util.Comparator ; 14 import java.util.List ; 15 import java.util.Set ; 16 17 23 public class JspDocStyleTest extends AbstractJspNodesTst { 24 25 30 public void testSimplestJsp() throws Throwable { 31 assertNumberOfNodes(ASTElement.class, TEST_SIMPLEST_HTML, 1); 32 } 33 34 39 public void testElementAttributeAndNamespace() throws Throwable { 40 Set nodes = getNodes(null, TEST_ELEMENT_AND_NAMESPACE); 41 42 Set 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 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 71 public void testAttributeValueContainingHash() 72 { 73 Set nodes = getNodes(null, TEST_ATTRIBUTE_VALUE_CONTAINING_HASH); 74 75 Set attributes = getNodesOfType(ASTAttribute.class, nodes); 76 assertEquals("Three attributes expected!", 3, attributes.size()); 77 78 List attrsList = new ArrayList (attributes); 79 Collections.sort(attrsList, new Comparator () { 80 public int compare(Object arg0, Object 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 108 public void testCData() { 109 Set 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 120 public void testDoctype() { 121 Set nodes = getNodes(null, TEST_DOCTYPE); 122 123 Set 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 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 146 public void testComment() { 147 Set 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 TEST_SIMPLEST_HTML = "<html/>"; 154 155 private static final String TEST_ELEMENT_AND_NAMESPACE = "<h:html MyNsPrefix:MyAttr='MyValue'/>"; 156 157 private static final String TEST_CDATA = "<html><![CDATA[ some <cdata> ]] ]> ]]></html>"; 158 159 private static final String 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 TEST_COMMENT = "<html><!-- comment --></html>"; 165 166 private static final String TEST_ATTRIBUTE_VALUE_CONTAINING_HASH = 167 "<tag:if something=\"#yes#\" foo=\"CREATE\"> <a HREF=\"#\">foo</a> </tag:if>"; 168 } 169 | Popular Tags |