/** * 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.util.ArrayList; import java.util.List; import org.junit.Test; import net.sourceforge.pmd.PMD; public class CSVRendererTest { @Test public void testLineCountPerFile() { Renderer renderer = new CSVRenderer(true); List<Match> list = new ArrayList<>(); String codeFragment = "code\nfragment"; Mark mark1 = createMark("public", "/var/Foo.java", 48, 10, codeFragment); Mark mark2 = createMark("stuff", "/var/Bar.java", 73, 20, codeFragment); Match match = new Match(75, mark1, mark2); list.add(match); String report = renderer.render(list.iterator()); String expectedReport = "tokens,occurrences" + PMD.EOL + "75,2,48,10,/var/Foo.java,73,20,/var/Bar.java" + PMD.EOL; assertEquals(expectedReport, report); } @Test public void testFilenameEscapes() { Renderer renderer = new CSVRenderer(); List<Match> list = new ArrayList<>(); String codeFragment = "code\nfragment"; Mark mark1 = createMark("public", "/var,with,commas/Foo.java", 48, 10, codeFragment); Mark mark2 = createMark("stuff", "/var,with,commas/Bar.java", 73, 20, codeFragment); Match match = new Match(75, mark1, mark2); list.add(match); String report = renderer.render(list.iterator()); String expectedReport = "lines,tokens,occurrences" + PMD.EOL + "10,75,2,48,\"/var,with,commas/Foo.java\",73,\"/var,with,commas/Bar.java\"" + PMD.EOL; assertEquals(expectedReport, report); } private Mark createMark(String image, String tokenSrcID, int beginLine, int lineCount, String code) { Mark result = new Mark(new TokenEntry(image, tokenSrcID, beginLine)); result.setLineCount(lineCount); result.setSourceCode(new SourceCode(new SourceCode.StringCodeLoader(code))); return result; } }