KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > jxpath > ri > model > jdom > JDOMModelTest


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.commons.jxpath.ri.model.jdom;
17
18 import java.util.List JavaDoc;
19
20 import junit.framework.Test;
21 import junit.framework.TestSuite;
22
23 import org.apache.commons.jxpath.AbstractFactory;
24 import org.apache.commons.jxpath.ri.model.XMLModelTestCase;
25 import org.apache.commons.jxpath.xml.DocumentContainer;
26 import org.jdom.Attribute;
27 import org.jdom.CDATA;
28 import org.jdom.Document;
29 import org.jdom.Element;
30 import org.jdom.Text;
31
32 /**
33  * Tests JXPath with JDOM
34  *
35  * @author Dmitri Plotnikov
36  * @version $Revision: 1.12 $ $Date: 2004/02/29 14:17:43 $
37  */

38
39 public class JDOMModelTest extends XMLModelTestCase {
40     /**
41      * Construct a new instance of this test case.
42      *
43      * @param name Name of the test case
44      */

45     public JDOMModelTest(String JavaDoc name) {
46         super(name);
47     }
48
49     /**
50      * Return the tests included in this test suite.
51      */

52     public static Test suite() {
53         return (new TestSuite(JDOMModelTest.class));
54     }
55
56     protected String JavaDoc getModel() {
57         return DocumentContainer.MODEL_JDOM;
58     }
59     
60     public void testGetNode() {
61         assertXPathNodeType(context, "/", Document.class);
62         assertXPathNodeType(context, "/vendor/location", Element.class);
63         assertXPathNodeType(context, "//location/@name", Attribute.class);
64     }
65     
66     public void testID() {
67         // id() is not supported by JDOM
68
}
69
70     protected AbstractFactory getAbstractFactory() {
71         return new TestJDOMFactory();
72     }
73
74     protected String JavaDoc getXMLSignature(
75         Object JavaDoc node,
76         boolean elements,
77         boolean attributes,
78         boolean text,
79         boolean pi)
80     {
81         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
82         appendXMLSignature(buffer, node, elements, attributes, text, pi);
83         return buffer.toString();
84     }
85
86     private void appendXMLSignature(
87         StringBuffer JavaDoc buffer,
88         Object JavaDoc object,
89         boolean elements,
90         boolean attributes,
91         boolean text,
92         boolean pi)
93     {
94         if (object instanceof Document) {
95             buffer.append("<D>");
96             appendXMLSignature(
97                 buffer,
98                 ((Document) object).getContent(),
99                 elements,
100                 attributes,
101                 text,
102                 pi);
103             buffer.append("</D");
104         }
105         else if (object instanceof Element) {
106             String JavaDoc tag = elements ? ((Element) object).getName() : "E";
107             buffer.append("<");
108             buffer.append(tag);
109             buffer.append(">");
110             appendXMLSignature(
111                 buffer,
112                 ((Element) object).getContent(),
113                 elements,
114                 attributes,
115                 text,
116                 pi);
117             buffer.append("</");
118             buffer.append(tag);
119             buffer.append(">");
120         }
121         else if (object instanceof Text || object instanceof CDATA) {
122             if (text) {
123                 String JavaDoc string = ((Text) object).getText();
124                 string = string.replace('\n', '=');
125                 buffer.append(string);
126             }
127         }
128     }
129
130     private void appendXMLSignature(
131         StringBuffer JavaDoc buffer,
132         List JavaDoc children,
133         boolean elements,
134         boolean attributes,
135         boolean text,
136         boolean pi)
137     {
138         for (int i = 0; i < children.size(); i++) {
139             appendXMLSignature(
140                 buffer,
141                 children.get(i),
142                 elements,
143                 attributes,
144                 text,
145                 pi);
146         }
147     }
148 }
Popular Tags