PageRenderTime 49ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/projects/jrefactory-2.9.19/test/src/test/net/sourceforge/pmd/jaxen/DocumentNavigatorTest.java

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