1 package test.net.sourceforge.pmd.cpd;
2
3 import junit.framework.TestCase;
4 import net.sourceforge.pmd.PMD;
5 import net.sourceforge.pmd.cpd.JavaTokenizer;
6 import net.sourceforge.pmd.cpd.Mark;
7 import net.sourceforge.pmd.cpd.Match;
8 import net.sourceforge.pmd.cpd.MatchAlgorithm;
9 import net.sourceforge.pmd.cpd.SourceCode;
10 import net.sourceforge.pmd.cpd.Tokens;
11
12 import java.io.StringReader;
13 import java.util.HashMap;
14 import java.util.Iterator;
15 import java.util.Map;
16
17 public class MatchAlgorithmTest extends TestCase {
18
19 public static final String LINE_1 = "public class Foo { ";
20 public static final String LINE_2 = " public void bar() {";
21 public static final String LINE_3 = " System.out.println(\"hello\");";
22 public static final String LINE_4 = " System.out.println(\"hello\");";
23 public static final String LINE_5 = " }";
24 public static final String LINE_6 = "}";
25
26 public static String getSampleCode() {
27 return
28 LINE_1 + PMD.EOL +
29 LINE_2 + PMD.EOL +
30 LINE_3 + PMD.EOL +
31 LINE_4 + PMD.EOL +
32 LINE_5 + PMD.EOL +
33 LINE_6;
34 }
35
36 public void testSimple() throws Throwable {
37 String code = getSampleCode();
38 JavaTokenizer tokenizer = new JavaTokenizer();
39 SourceCode sourceCode = new SourceCode("Foo.java");
40 Tokens tokens = new Tokens();
41 tokenizer.tokenize(sourceCode, tokens, new StringReader(code));
42 assertEquals(29, tokens.size());
43 Map codeMap = new HashMap();
44 codeMap.put("Foo.java", sourceCode);
45
46 MatchAlgorithm matchAlgorithm = new MatchAlgorithm(codeMap, tokens);
47 matchAlgorithm.findMatches(5);
48
49 Iterator matches = matchAlgorithm.matches();
50 Match match = (Match)matches.next();
51 assertFalse(matches.hasNext());
52
53 Iterator marks = match.iterator();
54 Mark mark1 = (Mark)marks.next();
55 Mark mark2 = (Mark)marks.next();
56 assertTrue(!marks.hasNext());
57
58 assertEquals(2, mark2.getBeginLine());
59 assertEquals(3, mark1.getBeginLine());
60 assertTrue("Foo.java" == mark1.getTokenSrcID() && "Foo.java" == mark2.getTokenSrcID());
61 assertEquals(LINE_3, match.getSourceCodeSlice());
62 }
63 }
This page was automatically generated by Maven