01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17:
18: package org.apache.commons.configuration;
19:
20: import javax.xml.transform.Transformer;
21: import javax.xml.transform.TransformerFactory;
22: import javax.xml.transform.dom.DOMResult;
23: import javax.xml.transform.sax.SAXSource;
24:
25: import org.apache.commons.jxpath.JXPathContext;
26: import org.w3c.dom.Document;
27: import org.w3c.dom.Node;
28: import org.xml.sax.InputSource;
29:
30: import junit.framework.TestCase;
31:
32: /**
33: * Test class for HierarchicalConfigurationXMLReader.
34: *
35: * @version $Id: TestHierarchicalConfigurationXMLReader.java 439648 2006-09-02 20:42:10Z oheger $
36: */
37: public class TestHierarchicalConfigurationXMLReader extends TestCase {
38: private static final String TEST_FILE = "conf/testHierarchicalXMLConfiguration.xml";
39:
40: private HierarchicalConfigurationXMLReader parser;
41:
42: protected void setUp() throws Exception {
43: XMLConfiguration config = new XMLConfiguration();
44: config.setFileName(TEST_FILE);
45: config.load();
46: parser = new HierarchicalConfigurationXMLReader(config);
47: }
48:
49: public void testParse() throws Exception {
50: SAXSource source = new SAXSource(parser, new InputSource());
51: DOMResult result = new DOMResult();
52: Transformer trans = TransformerFactory.newInstance()
53: .newTransformer();
54: try {
55: //When executed on a JDK 1.3 this line throws a NoSuchMethodError
56: //somewhere deep in Xalan. We simply ignore this.
57: trans.transform(source, result);
58: } catch (NoSuchMethodError ex) {
59: return;
60: }
61: Node root = ((Document) result.getNode()).getDocumentElement();
62: JXPathContext ctx = JXPathContext.newContext(root);
63:
64: assertEquals("Wrong name of root element", "config", root
65: .getNodeName());
66: assertEquals("Wrong number of children of root", 1, ctx
67: .selectNodes("/*").size());
68: assertEquals("Wrong number of tables", 2, ctx.selectNodes(
69: "/tables/table").size());
70: assertEquals("Wrong name of first table", "users", ctx
71: .getValue("/tables/table[1]/name"));
72: assertEquals("Wrong number of fields in first table", 5, ctx
73: .selectNodes("/tables/table[1]/fields/field").size());
74: assertEquals("Wrong attribute value", "system", ctx
75: .getValue("/tables/table[1]/@tableType"));
76: }
77: }
|