/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.cpd; import static org.junit.Assert.assertEquals; import java.io.File; import java.util.ArrayList; import org.junit.Test; import net.sourceforge.pmd.PMD; import net.sourceforge.pmd.cpd.SourceCode.FileCodeLoader; public class SourceCodeTest { private static final String BASE_RESOURCE_PATH = "src/test/resources/net/sourceforge/pmd/cpd/files/"; private static final String SAMPLE_CODE = "Line 1\n" + "Line 2\n" + "Line 3\n" + "Line 4\n"; @Test public void testSimple() throws Exception { Tokenizer tokenizer = new AbstractTokenizer() { { this.stringToken = new ArrayList<>(); this.ignorableCharacter = new ArrayList<>(); this.ignorableStmt = new ArrayList<>(); } }; SourceCode sourceCode = new SourceCode(new SourceCode.StringCodeLoader(SAMPLE_CODE, "Foo.java")); assertEquals("Foo.java", sourceCode.getFileName()); tokenizer.tokenize(sourceCode, new Tokens()); assertEquals("Line 1", sourceCode.getSlice(1, 1)); assertEquals("Line 2", sourceCode.getSlice(2, 2)); assertEquals("Line 1" + PMD.EOL + "Line 2", sourceCode.getSlice(1, 2)); } @Test public void testEncodingDetectionFromBOM() throws Exception { FileCodeLoader loader = new SourceCode.FileCodeLoader(new File(BASE_RESOURCE_PATH + "file_with_utf8_bom.java"), "ISO-8859-1"); // The encoding detection is done when the reader is created loader.getReader(); assertEquals("UTF-8", loader.getEncoding()); } @Test public void testEncodingIsNotChangedWhenThereIsNoBOM() throws Exception { FileCodeLoader loader = new SourceCode.FileCodeLoader( new File(BASE_RESOURCE_PATH + "file_with_ISO-8859-1_encoding.java"), "ISO-8859-1"); // The encoding detection is done when the reader is created loader.getReader(); assertEquals("ISO-8859-1", loader.getEncoding()); } }