KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > net > sourceforge > pmd > cpd > XMLRendererTest


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.cpd.Match;
8 import net.sourceforge.pmd.cpd.Renderer;
9 import net.sourceforge.pmd.cpd.TokenEntry;
10 import net.sourceforge.pmd.cpd.XMLRenderer;
11 import org.w3c.dom.Document JavaDoc;
12 import org.w3c.dom.Node JavaDoc;
13 import org.w3c.dom.NodeList JavaDoc;
14
15 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
16 import java.io.ByteArrayInputStream JavaDoc;
17 import java.util.ArrayList JavaDoc;
18 import java.util.List JavaDoc;
19
20 /**
21  * @author Philippe T'Seyen
22  */

23 public class XMLRendererTest extends TestCase {
24     public void test_no_dupes() {
25         Renderer renderer = new XMLRenderer();
26         List JavaDoc list = new ArrayList JavaDoc();
27         String JavaDoc report = renderer.render(list.iterator());
28         try {
29             Document JavaDoc doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream JavaDoc(report.getBytes()));
30             NodeList JavaDoc nodes = doc.getChildNodes();
31             Node JavaDoc n = nodes.item(0);
32             assertEquals("pmd-cpd", n.getNodeName());
33             assertEquals(0, doc.getElementsByTagName("duplication").getLength());
34         } catch (Exception JavaDoc e) {
35             e.printStackTrace();
36             fail(e.getMessage());
37         }
38     }
39
40     public void test_one_dupe() {
41         Renderer renderer = new XMLRenderer();
42         List JavaDoc list = new ArrayList JavaDoc();
43         Match match = new Match(75, new TokenEntry("public", "/var/Foo.java", 48), new TokenEntry("stuff", "/var/Foo.java", 73));
44         match.setLineCount(6);
45         match.setSourceCodeSlice("code fragment");
46         list.add(match);
47         String JavaDoc report = renderer.render(list.iterator());
48         try {
49             Document JavaDoc doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream JavaDoc(report.getBytes()));
50             NodeList JavaDoc dupes = doc.getElementsByTagName("duplication");
51             assertEquals(1, dupes.getLength());
52             Node JavaDoc file = dupes.item(0).getFirstChild();
53             while (file != null && file.getNodeType() != Node.ELEMENT_NODE) {
54                 file = file.getNextSibling();
55             }
56             assertEquals("48", file.getAttributes().getNamedItem("line").getNodeValue());
57             assertEquals("/var/Foo.java", file.getAttributes().getNamedItem("path").getNodeValue());
58
59             file = file.getNextSibling();
60             while (file != null && file.getNodeType() != Node.ELEMENT_NODE) {
61                 file = file.getNextSibling();
62             }
63             assertEquals("73", file.getAttributes().getNamedItem("line").getNodeValue());
64
65             assertEquals(1, doc.getElementsByTagName("codefragment").getLength());
66             Node JavaDoc actualCode = doc.getElementsByTagName("codefragment").item(0).getFirstChild().getNextSibling();
67             assertEquals("\ncode fragment\n", actualCode.getNodeValue());
68         } catch (Exception JavaDoc e) {
69             e.printStackTrace();
70             fail(e.getMessage());
71         }
72     }
73
74     public void testRender_MultipleMatch() {
75         Renderer renderer = new XMLRenderer();
76         List JavaDoc list = new ArrayList JavaDoc();
77         Match match1 = new Match(75, new TokenEntry("public", "/var/Foo.java", 48), new TokenEntry("void", "/var/Foo.java", 73));
78         match1.setLineCount(6);
79         match1.setSourceCodeSlice("code fragment");
80         Match match2 = new Match(76, new TokenEntry("void", "/var/Foo2.java", 49), new TokenEntry("stuff", "/var/Foo2.java", 74));
81         match2.setLineCount(7);
82         match2.setSourceCodeSlice("code fragment 2");
83         list.add(match1);
84         list.add(match2);
85         String JavaDoc report = renderer.render(list.iterator());
86         try {
87             Document JavaDoc doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream JavaDoc(report.getBytes()));
88             assertEquals(2, doc.getElementsByTagName("duplication").getLength());
89             assertEquals(4, doc.getElementsByTagName("file").getLength());
90         } catch (Exception JavaDoc e) {
91             e.printStackTrace();
92             fail(e.getMessage());
93         }
94     }
95 }
96
97
Popular Tags