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