/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang.wsdl.rule; import static org.junit.Assert.assertEquals; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import org.junit.Test; import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.Parser; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.wsdl.WsdlLanguageModule; import net.sourceforge.pmd.lang.xml.XmlParserOptions; import net.sourceforge.pmd.lang.xml.ast.XmlNode; public class AbstractWsdlRuleTest { @Test public void testVisit() throws Exception { String source = "<?xml version=\"1.0\"?><foo abc=\"abc\"><bar/></foo>"; XmlParserOptions parserOptions = new XmlParserOptions(); Parser parser = LanguageRegistry.getLanguage(WsdlLanguageModule.NAME).getDefaultVersion() .getLanguageVersionHandler().getParser(parserOptions); XmlNode xmlNode = (XmlNode) parser.parse(null, new StringReader(source)); List<XmlNode> nodes = new ArrayList<>(); nodes.add(xmlNode); MyRule rule = new MyRule(); rule.apply(nodes, null); assertEquals(3, rule.visitedNodes.size()); assertEquals("document", rule.visitedNodes.get(0).toString()); assertEquals("foo", rule.visitedNodes.get(1).toString()); assertEquals("bar", rule.visitedNodes.get(2).toString()); } private static class MyRule extends AbstractWsdlRule { final List<XmlNode> visitedNodes = new ArrayList<>(); MyRule() { } @Override public void apply(List<? extends Node> nodes, RuleContext ctx) { visitedNodes.clear(); super.apply(nodes, ctx); } @Override protected void visit(XmlNode node, RuleContext ctx) { visitedNodes.add(node); super.visit(node, ctx); } } }