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.Match;
9   import net.sourceforge.pmd.cpd.Renderer;
10  import net.sourceforge.pmd.cpd.TokenEntry;
11  import net.sourceforge.pmd.cpd.XMLRenderer;
12  
13  import java.util.ArrayList;
14  import java.util.List;
15  
16  /***
17   * @author  Philippe T'Seyen
18   */
19  public class XMLRendererTest extends TestCase
20  {
21    public void testRender_NoMatches()
22    {
23      Renderer renderer = new XMLRenderer();
24      List list = new ArrayList();
25      String report = renderer.render(list.iterator());
26      assertEquals("<?xml version=\"1.0\"?><pmd-cpd></pmd-cpd>", report);
27    }
28  
29    public void testRender_Match()
30    {
31      Renderer renderer = new XMLRenderer();
32      List list = new ArrayList();
33      Match match = new Match(75, new TokenEntry("public", "/var/Foo.java", 48), new TokenEntry("stuff", "/var/Foo.java", 73));
34      match.setLineCount(6);
35      match.setSourceCodeSlice("code fragment");
36      list.add(match);
37      String report = renderer.render(list.iterator());
38      assertEquals("<?xml version=\"1.0\"?><pmd-cpd><duplication lines=\"6\" tokens=\"75\"><file line=\"48\" path=\"/var/Foo.java\"/><file line=\"73\" path=\"/var/Foo.java\"/><codefragment><![CDATA[" + PMD.EOL + "code fragment" + PMD.EOL + "]]></codefragment></duplication></pmd-cpd>", report);
39    }
40  
41    public void testRender_MultipleMatch()
42    {
43      Renderer renderer = new XMLRenderer();
44      List list = new ArrayList();
45      Match match1 = new Match(75, new TokenEntry("public", "/var/Foo.java", 48), new TokenEntry("void", "/var/Foo.java", 73));
46      match1.setLineCount(6);
47      match1.setSourceCodeSlice("code fragment");
48      Match match2 = new Match(76, new TokenEntry("void", "/var/Foo2.java", 49), new TokenEntry("stuff", "/var/Foo2.java", 74));
49      match2.setLineCount(7);
50      match2.setSourceCodeSlice("code fragment 2");
51      list.add(match1);
52      list.add(match2);
53      String report = renderer.render(list.iterator());
54      assertEquals("<?xml version=\"1.0\"?><pmd-cpd><duplication lines=\"6\" tokens=\"75\"><file line=\"48\" path=\"/var/Foo.java\"/><file line=\"73\" path=\"/var/Foo.java\"/><codefragment><![CDATA[" + PMD.EOL + "code fragment" + PMD.EOL + "]]></codefragment></duplication><duplication lines=\"7\" tokens=\"76\"><file line=\"49\" path=\"/var/Foo2.java\"/><file line=\"74\" path=\"/var/Foo2.java\"/><codefragment><![CDATA[" + PMD.EOL + "code fragment 2" + PMD.EOL + "]]></codefragment></duplication></pmd-cpd>", report);
55    }
56  }
57