/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang.dfa.report; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.junit.Test; import net.sourceforge.pmd.RuleViolation; /** * @author Philip Graf */ public final class ViolationNodeTest { /** * Verifies that two violations nodes with equal * {@code filename, beginLine, endLine, beginColumn, endColumn} and * {@code variableName} are equal. */ @Test public void testEqualsNodeWithTwoEqualViolations() { final ViolationNode node1 = createViolationNode("Foo.java", 1, 1, 5, 15, ""); final ViolationNode node2 = createViolationNode("Foo.java", 1, 1, 5, 15, ""); assertTrue("Two equal violations should result in equal nodes", node1.equalsNode(node2)); } /** * Verifies that two violations nodes with different {@code filename} are * not equal. */ @Test public void testEqualsNodeWithTwoDifferentViolationsDifferentFilename() { final ViolationNode node1 = createViolationNode("Foo.java", 1, 1, 5, 15, ""); final ViolationNode node2 = createViolationNode("Bar.java", 1, 1, 5, 15, ""); assertFalse("Two violations with different filename should result in not equal nodes", node1.equalsNode(node2)); } /** * Verifies that two violations nodes with different {@code beginLine} are * not equal. */ @Test public void testEqualsNodeWithTwoDifferentViolationsDifferentBeginLine() { final ViolationNode node1 = createViolationNode("Foo.java", 1, 2, 5, 15, ""); final ViolationNode node2 = createViolationNode("Foo.java", 2, 2, 5, 15, ""); assertFalse("Two violations with different beginLine should result in not equal nodes", node1.equalsNode(node2)); } /** * Verifies that two violations nodes with different {@code endLine} are not * equal. */ @Test public void testEqualsNodeWithTwoDifferentViolationsDifferentEndLine() { final ViolationNode node1 = createViolationNode("Foo.java", 1, 1, 5, 15, ""); final ViolationNode node2 = createViolationNode("Foo.java", 1, 2, 5, 15, ""); assertFalse("Two violations with different endLine should result in not equal nodes", node1.equalsNode(node2)); } /** * Verifies that two violations nodes with different {@code beginColumn} are * not equal. */ @Test public void testEqualsNodeWithTwoDifferentViolationsDifferentBeginColumn() { final ViolationNode node1 = createViolationNode("Foo.java", 1, 1, 5, 15, ""); final ViolationNode node2 = createViolationNode("Foo.java", 1, 1, 7, 15, ""); assertFalse("Two violations with different beginColumn should result in not equal nodes", node1.equalsNode(node2)); } /** * Verifies that two violations nodes with different {@code endColumn} are * not equal. */ @Test public void testEqualsNodeWithTwoDifferentViolationsDifferentEndColumn() { final ViolationNode node1 = createViolationNode("Foo.java", 1, 1, 5, 15, ""); final ViolationNode node2 = createViolationNode("Foo.java", 1, 1, 5, 17, ""); assertFalse("Two violations with different end column should result in not equal nodes", node1.equalsNode(node2)); } /** * Verifies that two violations with different {@code variableName} are not * equal. */ @Test public void testEqualsNodeWithTwoDifferentViolationsDifferentVariableName() { final ViolationNode node1 = createViolationNode("Foo.java", 1, 1, 5, 15, "a"); final ViolationNode node2 = createViolationNode("Foo.java", 1, 1, 5, 15, "b"); assertFalse("Two violations with different variableName should result in not equal nodes", node1.equalsNode(node2)); } private ViolationNode createViolationNode(final String filename, final int beginLine, final int endLine, final int beginColumn, final int endColumn, final String variableName) { final RuleViolation violation = mock(RuleViolation.class); when(violation.getFilename()).thenReturn(filename); when(violation.getBeginLine()).thenReturn(beginLine); when(violation.getEndLine()).thenReturn(endLine); when(violation.getBeginColumn()).thenReturn(beginColumn); when(violation.getEndColumn()).thenReturn(endColumn); when(violation.getVariableName()).thenReturn(variableName); return new ViolationNode(violation); } }