View Javadoc

    1   /**
    2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
    3    */
    4   package net.sourceforge.pmd.lang.java.rule.codesize;
    5
    6   import static org.junit.Assert.assertEquals;
    7
    8   import java.util.Iterator;
    9
    10  import net.sourceforge.pmd.Report;
    11  import net.sourceforge.pmd.Rule;
    12  import net.sourceforge.pmd.RuleViolation;
    13  import net.sourceforge.pmd.testframework.RuleTst;
    14  import net.sourceforge.pmd.testframework.TestDescriptor;
    15
    16  import org.junit.Before;
    17  import org.junit.Test;
    18
    19
    20  public class NPathComplexityTest extends RuleTst {
    21      private Rule rule;
    22      private TestDescriptor[] tests;
    23
    24      @Before
    25      public void setUp() {
    26  	rule = findRule("java-codesize", "NPathComplexity");
    27  	tests = extractTestsFromXml(rule);
    28      }
    29
    30      @Test
    31      public void testViolationMessage() throws Throwable {
    32  	rule.setProperty(NPathComplexityRule.MINIMUM_DESCRIPTOR, 1.0);
    33  	Report report = new Report();
    34  	runTestFromString(tests[0].getCode(), rule, report);
    35  	Iterator<RuleViolation> i = report.iterator();
    36  	RuleViolation rv = (RuleViolation) i.next();
    37  	assertEquals("correct violation message", "The method bar() has an NPath complexity of 2", rv.getDescription());
    38      }
    39
    40      /**
    41       * Runs the 3rd test case with the proper threshold property.
    42       * @throws Exception any error
    43       */
    44      @Test
    45      public void testReturnValueComplexity() throws Exception {
    46      	rule.setProperty(NPathComplexityRule.MINIMUM_DESCRIPTOR, 25.0);
    47      	Report report = new Report();
    48      	runTestFromString(tests[2].getCode(), rule, report);
    49      	Iterator<RuleViolation> i = report.iterator();
    50      	String descriptions = "";
    51      	while (i.hasNext()) {
    52      		RuleViolation violation = i.next();
    53      		descriptions += violation.getDescription() + "\n";
    54      	}
    55      	assertEquals("expected violations", 2, report.size());
    56      	assertEquals("The method x() has an NPath complexity of 25\nThe method y() has an NPath complexity of 25\n",
    57      			descriptions);
    58      }
    59
    60      public static junit.framework.Test suite() {
    61  	return new junit.framework.JUnit4TestAdapter(NPathComplexityTest.class);
    62      }
    63  }