View Javadoc
1 /* 2 * Created on 15/03/2003 3 * 4 * To change this generated comment go to 5 * Window>Preferences>Java>Code Generation>Code Template 6 */ 7 package test.net.sourceforge.pmd.jaxen; 8 9 import net.sourceforge.pmd.AbstractRule; 10 import net.sourceforge.pmd.Report; 11 import net.sourceforge.pmd.ast.ASTCompilationUnit; 12 import net.sourceforge.pmd.ast.ASTImportDeclaration; 13 import net.sourceforge.pmd.ast.ASTMethodDeclaration; 14 import net.sourceforge.pmd.ast.ASTPrimaryExpression; 15 import net.sourceforge.pmd.ast.ASTPrimaryPrefix; 16 import net.sourceforge.pmd.ast.ASTStatement; 17 import net.sourceforge.pmd.ast.ASTTypeDeclaration; 18 import net.sourceforge.pmd.ast.Node; 19 import net.sourceforge.pmd.jaxen.DocumentNavigator; 20 import org.jaxen.BaseXPath; 21 import org.jaxen.JaxenException; 22 import org.jaxen.UnsupportedAxisException; 23 import test.net.sourceforge.pmd.rules.EmptyCatchBlockRuleTest; 24 import test.net.sourceforge.pmd.rules.RuleTst; 25 26 import java.util.Iterator; 27 import java.util.List; 28 29 /*** 30 * @author daniels 31 * 32 * To change this generated comment go to 33 * Window>Preferences>Java>Code Generation>Code Template 34 */ 35 public class DocumentNavigatorTest extends RuleTst { 36 37 38 private TestRule rule; 39 40 private class TestRule extends AbstractRule { 41 42 private Node compilationUnit; 43 private Node importDeclaration; 44 private Node typeDeclaration; 45 private Node statement; 46 private Node primaryPrefix; 47 private Node primaryExpression; 48 private Node methodDeclaration; 49 /*** 50 * @see net.sourceforge.pmd.ast.JavaParserVisitor#visit(ASTCompilationUnit, Object) 51 */ 52 public Object visit(ASTCompilationUnit node, Object data) { 53 this.compilationUnit = node; 54 return super.visit(node, data); 55 } 56 public Object visit(ASTImportDeclaration node, Object data) { 57 this.importDeclaration = node; 58 return super.visit(node, data); 59 } 60 public Object visit(ASTTypeDeclaration node, Object data) { 61 this.typeDeclaration = node; 62 return super.visit(node, data); 63 } 64 public Object visit(ASTStatement node, Object data) { 65 this.statement = node; 66 return super.visit(node, data); 67 } 68 public Object visit(ASTPrimaryPrefix node, Object data) { 69 this.primaryPrefix = node; 70 return super.visit(node, data); 71 } 72 public Object visit(ASTMethodDeclaration node, Object data) { 73 this.methodDeclaration = node; 74 return super.visit(node, data); 75 } 76 public Object visit(ASTPrimaryExpression node, Object data) { 77 this.primaryExpression = node; 78 return super.visit(node, data); 79 } 80 } 81 82 public void setUp() throws Exception { 83 try{ 84 rule = new TestRule(); 85 runTestFromString(EmptyCatchBlockRuleTest.TEST1, rule, new Report()); 86 } catch (Throwable xx) { 87 fail(); 88 } 89 } 90 91 public void testChildAxisIterator() { 92 DocumentNavigator nav = new DocumentNavigator(); 93 Iterator iter =nav.getChildAxisIterator(rule.compilationUnit); 94 assertSame(rule.compilationUnit.jjtGetChild(0), iter.next()); 95 assertSame(rule.compilationUnit.jjtGetChild(1), iter.next()); 96 assertFalse(iter.hasNext()); 97 } 98 99 public void testParentAxisIterator() { 100 DocumentNavigator nav = new DocumentNavigator(); 101 Iterator iter =nav.getParentAxisIterator(rule.importDeclaration); 102 assertSame(rule.importDeclaration.jjtGetParent(), iter.next()); 103 assertFalse(iter.hasNext()); 104 } 105 106 public void testParentAxisIterator2() { 107 DocumentNavigator nav = new DocumentNavigator(); 108 Iterator iter =nav.getParentAxisIterator(rule.compilationUnit); 109 assertFalse(iter.hasNext()); 110 } 111 112 public void testDescendantAxisIterator() throws UnsupportedAxisException { 113 DocumentNavigator nav = new DocumentNavigator(); 114 Iterator iter = nav.getDescendantAxisIterator(rule.statement); 115 Node statementExpression = rule.statement.jjtGetChild(0); 116 assertSame(statementExpression, iter.next()); 117 Node primaryExpression = statementExpression.jjtGetChild(0); 118 assertSame(primaryExpression, iter.next()); 119 Node primaryPrefix = primaryExpression.jjtGetChild(0); 120 assertSame(primaryPrefix, iter.next()); 121 Node primarySuffix = primaryExpression.jjtGetChild(1); 122 assertSame(primarySuffix, iter.next()); 123 Node name = primaryPrefix.jjtGetChild(0); 124 assertSame(name, iter.next()); 125 Node arguments = primarySuffix.jjtGetChild(0); 126 assertSame(arguments, iter.next()); 127 assertFalse(iter.hasNext()); 128 } 129 130 public void testDescendantAxisIterator2() throws UnsupportedAxisException { 131 DocumentNavigator nav = new DocumentNavigator(); 132 Iterator iter = nav.getDescendantAxisIterator(rule.primaryPrefix); 133 Node name = rule.primaryPrefix.jjtGetChild(0); 134 assertSame(name, iter.next()); 135 assertFalse(iter.hasNext()); 136 } 137 138 public void testFollowingSiblingAxisIterator() { 139 DocumentNavigator nav = new DocumentNavigator(); 140 Iterator iter = nav.getFollowingSiblingAxisIterator(rule.primaryExpression.jjtGetChild(0)); 141 assertSame(rule.primaryExpression.jjtGetChild(1), iter.next()); 142 assertFalse(iter.hasNext()); 143 } 144 145 public void testFollowingSiblingAxisIterator2() { 146 DocumentNavigator nav = new DocumentNavigator(); 147 Iterator iter = nav.getFollowingSiblingAxisIterator(rule.primaryExpression.jjtGetChild(1)); 148 assertFalse(iter.hasNext()); 149 } 150 151 public void testPrecedingSiblingAxisIterator() { 152 DocumentNavigator nav = new DocumentNavigator(); 153 Iterator iter = nav.getPrecedingSiblingAxisIterator(rule.primaryExpression.jjtGetChild(1)); 154 assertSame(rule.primaryExpression.jjtGetChild(0), iter.next()); 155 assertFalse(iter.hasNext()); 156 } 157 158 public void testPrecedingSiblingAxisIterator2() { 159 DocumentNavigator nav = new DocumentNavigator(); 160 Iterator iter = nav.getPrecedingSiblingAxisIterator(rule.primaryExpression.jjtGetChild(0)); 161 assertFalse(iter.hasNext()); 162 } 163 164 /* 165 public void testAttributeAxisIterator() { 166 //TODO: This is fragile - attribute order is not guaranteed 167 DocumentNavigator nav = new DocumentNavigator(); 168 Attribute attr; 169 Iterator iter = nav.getAttributeAxisIterator(rule.primaryPrefix); 170 attr = (Attribute) iter.next(); 171 assertEquals("BeginLine", attr.getName()); 172 assertEquals("12", attr.getValue()); 173 attr = (Attribute) iter.next(); 174 assertEquals("BeginColumn", attr.getName()); 175 assertEquals("17", attr.getValue()); 176 attr = (Attribute) iter.next(); 177 assertEquals("EndLine", attr.getName()); 178 assertEquals("12", attr.getValue()); 179 attr = (Attribute) iter.next(); 180 assertEquals("EndColumn", attr.getName()); 181 assertEquals("33", attr.getValue()); 182 attr = (Attribute) iter.next(); 183 assertEquals("ThisModifier", attr.getName()); 184 assertEquals("false", attr.getValue()); 185 attr = (Attribute) iter.next(); 186 assertEquals("SuperModifier", attr.getName()); 187 assertEquals("false", attr.getValue()); 188 assertFalse(iter.hasNext()); 189 } 190 */ 191 192 /* 193 public void testTest() throws Throwable { 194 runTestFromFile("UnusedModifier1.java", rule); 195 DocumentNavigator nav = new DocumentNavigator(); 196 XPath xpath1 = new BaseXPath(".[@Public = 'true']", nav); 197 assertTrue(xpath1.booleanValueOf(rule.methodDeclaration)); 198 assertSame(rule.methodDeclaration, xpath1.selectSingleNode(rule.methodDeclaration)); 199 XPath xpath2 = new BaseXPath("//ASTMethodDeclaration[@Public='true']", nav); 200 System.out.println(xpath2); 201 assertTrue(xpath2.booleanValueOf(rule.compilationUnit)); 202 assertSame(rule.methodDeclaration, xpath2.selectSingleNode(rule.compilationUnit)); 203 } 204 */ 205 206 /* 207 public void testAttributeAxisIterator2() throws Throwable { 208 //TODO: This is fragile - attribute order is not guaranteed 209 runTestFromFile("UnusedModifier1.java", rule); 210 DocumentNavigator nav = new DocumentNavigator(); 211 Attribute attr; 212 assertNotNull(rule.methodDeclaration); 213 Iterator iter = nav.getAttributeAxisIterator(rule.methodDeclaration); 214 attr = (Attribute) iter.next(); 215 assertEquals("BeginLine", attr.getName()); 216 assertEquals("2", attr.getValue()); 217 attr = (Attribute) iter.next(); 218 assertEquals("BeginColumn", attr.getName()); 219 assertEquals("2", attr.getValue()); 220 attr = (Attribute) iter.next(); 221 assertEquals("EndLine", attr.getName()); 222 assertEquals("2", attr.getValue()); 223 attr = (Attribute) iter.next(); 224 assertEquals("EndColumn", attr.getName()); 225 assertEquals("19", attr.getValue()); 226 attr = (Attribute) iter.next(); 227 assertEquals("Interface", attr.getName()); 228 assertEquals("false", attr.getValue()); 229 attr = (Attribute) iter.next(); 230 assertEquals("Private", attr.getName()); 231 assertEquals("false", attr.getValue()); 232 attr = (Attribute) iter.next(); 233 assertEquals("Transient", attr.getName()); 234 assertEquals("false", attr.getValue()); 235 attr = (Attribute) iter.next(); 236 assertEquals("Static", attr.getName()); 237 assertEquals("false", attr.getValue()); 238 attr = (Attribute) iter.next(); 239 assertEquals("Public", attr.getName()); 240 assertEquals("true", attr.getValue()); 241 attr = (Attribute) iter.next(); 242 assertEquals("Protected", attr.getName()); 243 assertEquals("false", attr.getValue()); 244 attr = (Attribute) iter.next(); 245 assertEquals("Final", attr.getName()); 246 assertEquals("false", attr.getValue()); 247 attr = (Attribute) iter.next(); 248 assertEquals("Synchronized", attr.getName()); 249 assertEquals("false", attr.getValue()); 250 attr = (Attribute) iter.next(); 251 assertEquals("Volatile", attr.getName()); 252 assertEquals("false", attr.getValue()); 253 attr = (Attribute) iter.next(); 254 assertEquals("Native", attr.getName()); 255 assertEquals("false", attr.getValue()); 256 attr = (Attribute) iter.next(); 257 assertEquals("Abstract", attr.getName()); 258 assertEquals("false", attr.getValue()); 259 attr = (Attribute) iter.next(); 260 assertEquals("Strict", attr.getName()); 261 assertEquals("false", attr.getValue()); 262 attr = (Attribute) iter.next(); 263 assertEquals("Super", attr.getName()); 264 assertEquals("false", attr.getValue()); 265 assertFalse(iter.hasNext()); 266 } 267 */ 268 269 public void testXPath() throws JaxenException { 270 BaseXPath xPath = new BaseXPath(".//*", new DocumentNavigator()); 271 List matches = xPath.selectNodes(rule.statement); 272 assertEquals(6, matches.size()); 273 } 274 275 public void testXPath2() throws JaxenException { 276 BaseXPath xPath = new BaseXPath(".//*", new DocumentNavigator()); 277 List matches = xPath.selectNodes(rule.importDeclaration); 278 assertEquals(1, matches.size()); 279 } 280 281 public void testXPath3() throws JaxenException { 282 BaseXPath xPath = new BaseXPath(".//*", new DocumentNavigator()); 283 List matches = xPath.selectNodes(rule.typeDeclaration); 284 assertEquals(76, matches.size()); 285 } 286 287 public void testXPath4() throws JaxenException { 288 BaseXPath xPath = new BaseXPath(".//*", new DocumentNavigator()); 289 List matches = xPath.selectNodes(rule.compilationUnit); 290 assertEquals(79, matches.size()); 291 } 292 }

This page was automatically generated by Maven