1 /***
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package test.net.sourceforge.pmd.rules;
5
6 import net.sourceforge.pmd.PMD;
7 import net.sourceforge.pmd.rules.AvoidDuplicateLiteralsRule;
8 import test.net.sourceforge.pmd.testframework.RuleTst;
9 import test.net.sourceforge.pmd.testframework.TestDescriptor;
10
11 import java.util.Set;
12 import test.net.sourceforge.pmd.testframework.SimpleAggregatorTst;
13
14 public class AvoidDuplicateLiteralsRuleTest extends SimpleAggregatorTst {
15
16 private AvoidDuplicateLiteralsRule rule;
17
18 public void setUp() {
19 rule = new AvoidDuplicateLiteralsRule();
20 rule.setMessage("avoid ''{0}'' and ''{1}''");
21 rule.addProperty("threshold", "2");
22 }
23
24 public void testAll() {
25 runTests(new TestDescriptor[] {
26 new TestDescriptor(TEST1, "duplicate literals in argument list", 1, rule),
27 new TestDescriptor(TEST2, "literal int argument, ok for now", 0, rule),
28 new TestDescriptor(TEST3, "duplicate literals in field decl", 1, rule),
29 });
30 }
31
32 public void testStringParserEmptyString() {
33 AvoidDuplicateLiteralsRule.ExceptionParser p = new AvoidDuplicateLiteralsRule.ExceptionParser(',');
34 Set res = p.parse("");
35 assertTrue(res.isEmpty());
36 }
37
38 public void testStringParserSimple() {
39 AvoidDuplicateLiteralsRule.ExceptionParser p = new AvoidDuplicateLiteralsRule.ExceptionParser(',');
40 Set res = p.parse("a,b,c");
41 assertEquals(3, res.size());
42 assertTrue(res.contains("a"));
43 assertTrue(res.contains("b"));
44 assertTrue(res.contains("c"));
45 }
46
47 public void testStringParserEscapedChar() {
48 AvoidDuplicateLiteralsRule.ExceptionParser p = new AvoidDuplicateLiteralsRule.ExceptionParser(',');
49 Set res = p.parse("a,b,//,");
50 assertEquals(3, res.size());
51 assertTrue(res.contains("a"));
52 assertTrue(res.contains("b"));
53 assertTrue(res.contains(","));
54 }
55
56 public void testStringParserEscapedEscapedChar() {
57 AvoidDuplicateLiteralsRule.ExceptionParser p = new AvoidDuplicateLiteralsRule.ExceptionParser(',');
58 Set res = p.parse("a,b,////");
59 assertEquals(3, res.size());
60 assertTrue(res.contains("a"));
61 assertTrue(res.contains("b"));
62 assertTrue(res.contains("//"));
63 }
64
65 public static final String TEST1 =
66 "public class Foo {" + PMD.EOL +
67 " private void bar() {" + PMD.EOL +
68 " buz(\"Howdy\");" + PMD.EOL +
69 " buz(\"Howdy\");" + PMD.EOL +
70 " buz(\"Howdy\");" + PMD.EOL +
71 " buz(\"Howdy\");" + PMD.EOL +
72 " }" + PMD.EOL +
73 "}";
74
75 public static final String TEST2 =
76 "public class Foo {" + PMD.EOL +
77 " private void bar() {" + PMD.EOL +
78 " buz(2);" + PMD.EOL +
79 " }" + PMD.EOL +
80 "}";
81
82 public static final String TEST3 =
83 "public class Foo {" + PMD.EOL +
84 " String[] FOO = {\"foo\", \"foo\", \"foo\", \"foo\", \"foo\", \"foo\", \"foo\", \"foo\", \"foo\"};" + PMD.EOL +
85 "}";
86
87 }
This page was automatically generated by Maven