1
2
3
4 package net.sourceforge.pmd.cpd;
5
6 import static org.junit.Assert.assertEquals;
7
8 import java.io.File;
9 import java.util.ArrayList;
10
11 import net.sourceforge.pmd.PMD;
12 import net.sourceforge.pmd.cpd.SourceCode.FileCodeLoader;
13
14 import org.junit.Test;
15
16 public class SourceCodeTest {
17 private static final String BASE_RESOURCE_PATH =
18 "src/test/resources/net/sourceforge/pmd/cpd/files/";
19
20 private static final String SAMPLE_CODE =
21 "Line 1\n" +
22 "Line 2\n" +
23 "Line 3\n" +
24 "Line 4\n";
25
26 @Test
27 public void testSimple() throws Throwable {
28 Tokenizer tokenizer = new AbstractTokenizer() {
29 {
30 this.stringToken = new ArrayList<String>();
31 this.ignorableCharacter = new ArrayList<String>();
32 this.ignorableStmt = new ArrayList<String>();
33 }
34 };
35 SourceCode sourceCode = new SourceCode(new SourceCode.StringCodeLoader(SAMPLE_CODE, "Foo.java"));
36 assertEquals("Foo.java", sourceCode.getFileName());
37 tokenizer.tokenize(sourceCode, new Tokens());
38
39 assertEquals("Line 1", sourceCode.getSlice(1, 1));
40 assertEquals("Line 2", sourceCode.getSlice(2, 2));
41 assertEquals("Line 1" + PMD.EOL + "Line 2", sourceCode.getSlice(1, 2));
42 }
43
44 @Test
45 public void testEncodingDetectionFromBOM() throws Exception {
46 FileCodeLoader loader =
47 new SourceCode.FileCodeLoader(new File(BASE_RESOURCE_PATH + "file_with_utf8_bom.java"), "ISO-8859-1");
48
49
50 loader.getReader();
51 assertEquals("UTF-8", loader.getEncoding());
52 }
53
54 @Test
55 public void testEncodingIsNotChangedWhenThereIsNoBOM() throws Exception {
56 FileCodeLoader loader =
57 new SourceCode.FileCodeLoader(new File(BASE_RESOURCE_PATH + "file_with_ISO-8859-1_encoding.java"), "ISO-8859-1");
58
59
60 loader.getReader();
61 assertEquals("ISO-8859-1", loader.getEncoding());
62 }
63 }