1    /**
2     * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3     */
4   package test.net.sourceforge.pmd.rules.codesize;
5    
6   import static org.junit.Assert.assertEquals;
7   import static org.junit.Assert.assertTrue;
8   import net.sourceforge.pmd.Report;
9   import net.sourceforge.pmd.Rule;
10  import net.sourceforge.pmd.RuleViolation;
11  
12  import org.junit.Before;
13  import org.junit.Test;
14  
15  import test.net.sourceforge.pmd.testframework.RuleTst;
16  import test.net.sourceforge.pmd.testframework.TestDescriptor;
17  
18  import java.util.Iterator;
19  
20   public class CyclomaticComplexityTest extends RuleTst {
21       private Rule rule;
22       private TestDescriptor[] tests;
23   
24       @Before public void setUp() {
25           rule = findRule("codesize", "CyclomaticComplexity");
26           tests = extractTestsFromXml(rule);
27       }
28   
29       @Test
30       public void testOneMethod() throws Throwable {
31           rule.addProperty("reportLevel", "1");
32           Report report = new Report();
33           runTestFromString(tests[0].getCode(), rule, report);
34           Iterator i = report.iterator();
35           RuleViolation rv = (RuleViolation) i.next();
36           assertTrue(rv.getDescription().indexOf("Highest = 1") != -1);
37       }
38   
39       @Test
40       public void testNastyComplicatedMethod() throws Throwable {
41           rule.addProperty("reportLevel", "10");
42           Report report = new Report();
43           runTestFromString(tests[1].getCode(), rule, report);
44           Iterator i = report.iterator();
45           RuleViolation rv = (RuleViolation) i.next();
46           assertTrue(rv.getDescription().indexOf("Highest = 11") != -1);
47       }
48   
49       @Test
50       public void testConstructor() throws Throwable {
51           rule.addProperty("reportLevel", "1");
52           Report report = new Report();
53           runTestFromString(tests[2].getCode(), rule, report);
54           Iterator i = report.iterator();
55           RuleViolation rv = (RuleViolation) i.next();
56           assertTrue(rv.getDescription().indexOf("Highest = 1") != -1);
57       }
58   
59       @Test
60       public void testLessComplicatedThanReportLevel() throws Throwable {
61           rule.addProperty("reportLevel", "10");
62           Report report = new Report();
63           runTestFromString(tests[0].getCode(), rule, report);
64           assertEquals(0, report.size());
65       }
66  
67       public static junit.framework.Test suite() {
68           return new junit.framework.JUnit4TestAdapter(CyclomaticComplexityTest.class);
69       }
70   }