/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang.java.dfa; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.LinkedList; import org.junit.Test; import net.sourceforge.pmd.lang.dfa.DataFlowNode; import net.sourceforge.pmd.lang.dfa.NodeType; import net.sourceforge.pmd.lang.dfa.StartOrEndDataFlowNode; public class DataFlowNodeTest { @Test public void testAddPathToChild() { DataFlowNode parent = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 10, false); DataFlowNode child = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 12, false); parent.addPathToChild(child); assertEquals(parent.getChildren().size(), 1); assertTrue(child.getParents().contains(parent)); assertTrue(parent.getChildren().contains(child)); } @Test public void testRemovePathToChild() { DataFlowNode parent = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 10, false); DataFlowNode child = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 12, false); parent.addPathToChild(child); assertTrue(parent.removePathToChild(child)); assertFalse(child.getParents().contains(parent)); assertFalse(parent.getChildren().contains(child)); } @Test public void testRemovePathWithNonChild() { DataFlowNode parent = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 10, false); DataFlowNode child = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 12, false); assertFalse(parent.removePathToChild(child)); } @Test public void testReverseParentPathsTo() { DataFlowNode parent1 = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 10, false); DataFlowNode parent2 = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 12, false); DataFlowNode child1 = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 13, false); DataFlowNode child2 = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 13, false); parent1.addPathToChild(child1); parent2.addPathToChild(child1); assertTrue(parent1.getChildren().contains(child1)); child1.reverseParentPathsTo(child2); assertTrue(parent1.getChildren().contains(child2)); assertFalse(parent1.getChildren().contains(child1)); assertTrue(parent2.getChildren().contains(child2)); assertFalse(parent2.getChildren().contains(child1)); assertEquals(0, child1.getParents().size()); assertEquals(2, child2.getParents().size()); } @Test public void testSetType() { DataFlowNode node = new StartOrEndDataFlowNode(new LinkedList<DataFlowNode>(), 10, false); node.setType(NodeType.BREAK_STATEMENT); assertTrue(node.isType(NodeType.BREAK_STATEMENT)); assertFalse(node.isType(NodeType.CASE_LAST_STATEMENT)); } public static junit.framework.Test suite() { return new junit.framework.JUnit4TestAdapter(DataFlowNodeTest.class); } }