1   package test.net.sourceforge.pmd.ast;
2   
3   import junit.framework.TestCase;
4   import net.sourceforge.pmd.ast.ASTCompilationUnit;
5   import net.sourceforge.pmd.ast.ASTEqualityExpression;
6   import net.sourceforge.pmd.ast.ASTInstanceOfExpression;
7   import net.sourceforge.pmd.ast.ASTRelationalExpression;
8   import net.sourceforge.pmd.ast.DiscardableNodeCleaner;
9   
10  public class DiscardableNodeCleanerTest extends TestCase {
11  
12      public void testRemoveDiscardNodes() {
13          ASTCompilationUnit cu = new ASTCompilationUnit(1);
14          ASTEqualityExpression ee = new ASTEqualityExpression(2);
15          ee.jjtSetParent(cu);
16          cu.jjtAddChild(ee, 0);
17  
18          ASTInstanceOfExpression io1 = new ASTInstanceOfExpression(3);
19          io1.setDiscardable();
20          io1.jjtSetParent(ee);
21          ASTRelationalExpression re = new ASTRelationalExpression(4);
22          re.jjtSetParent(ee);
23          ee.jjtAddChild(io1, 0);
24          io1.jjtAddChild(re, 0);
25          assertEquals(cu.findChildrenOfType(ASTInstanceOfExpression.class).size(), 1);
26          DiscardableNodeCleaner c = new DiscardableNodeCleaner();
27          c.clean(cu);
28          assertEquals(cu.findChildrenOfType(ASTInstanceOfExpression.class).size(), 0);
29      }
30  }