001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.commons.configuration.tree;
018:
019: import org.apache.commons.configuration.ConfigurationException;
020: import org.apache.commons.configuration.HierarchicalConfiguration;
021:
022: /**
023: * Test class for UnionCombiner.
024: *
025: * @version $Id: TestUnionCombiner.java 439648 2006-09-02 20:42:10Z oheger $
026: */
027: public class TestUnionCombiner extends AbstractCombinerTest {
028: /**
029: * Creates the combiner.
030: *
031: * @return the combiner
032: */
033: protected NodeCombiner createCombiner() {
034: return new UnionCombiner();
035: }
036:
037: /**
038: * Tests combination of simple values (no lists).
039: */
040: public void testSimpleValues() throws ConfigurationException {
041: HierarchicalConfiguration config = createCombinedConfiguration();
042: assertEquals("Too few bgcolors", 1, config
043: .getMaxIndex("gui.bgcolor"));
044: assertEquals("Wrong first color", "green", config
045: .getString("gui.bgcolor(0)"));
046: assertEquals("Wrong second color", "black", config
047: .getString("gui.bgcolor(1)"));
048: assertEquals("Wrong number of selcolors", 0, config
049: .getMaxIndex("gui.selcolor"));
050: assertEquals("Wrong selcolor", "yellow", config
051: .getString("gui.selcolor"));
052: }
053:
054: /**
055: * Tests combinations of elements with attributes.
056: */
057: public void testSimpleValuesWithAttributes()
058: throws ConfigurationException {
059: HierarchicalConfiguration config = createCombinedConfiguration();
060: assertEquals("Too few level elements", 1, config
061: .getMaxIndex("gui.level"));
062: assertEquals("Wrong value of first element", 1, config
063: .getInt("gui.level(0)"));
064: assertEquals("Wrong value of second element", 4, config
065: .getInt("gui.level(1)"));
066: assertEquals("Wrong value of first attribute", 2, config
067: .getInt("gui.level(0)[@default]"));
068: assertFalse("Found wrong attribute", config
069: .containsKey("gui.level(0)[@min]"));
070: assertEquals("Wrong value of second attribute", 1, config
071: .getInt("gui.level(1)[@min]"));
072: }
073:
074: /**
075: * Tests combination of attributes.
076: */
077: public void testAttributes() throws ConfigurationException {
078: HierarchicalConfiguration config = createCombinedConfiguration();
079: assertEquals("Too few attributes", 1, config
080: .getMaxIndex("database.tables.table(0)[@id]"));
081: assertEquals("Wrong value of first attribute", 1, config
082: .getInt("database.tables.table(0)[@id](0)"));
083: assertEquals("Wrong value of second attribute", 2, config
084: .getInt("database.tables.table(0)[@id](1)"));
085: }
086:
087: /**
088: * Tests combination of lists.
089: */
090: public void testLists() throws ConfigurationException {
091: HierarchicalConfiguration config = createCombinedConfiguration();
092: assertEquals("Too few list elements", 2, config
093: .getMaxIndex("net.service.url"));
094: assertEquals("Wrong first service", "http://service1.org",
095: config.getString("net.service.url(0)"));
096: assertEquals("Wrong second service", "http://service2.org",
097: config.getString("net.service.url(1)"));
098: assertEquals("Wrong service attribute", 2, config
099: .getInt("net.service.url(2)[@type]"));
100: assertEquals("Wrong number of server elements", 3, config
101: .getMaxIndex("net.server.url"));
102: }
103:
104: /**
105: * Tests combining a list of tables. Per default the table elements will be
106: * combined. But if they are defined as list elements, the resulting tree
107: * should contain two table nodes.
108: */
109: public void testTableList() throws ConfigurationException {
110: combiner.addListNode("table");
111: HierarchicalConfiguration config = createCombinedConfiguration();
112: assertEquals("Wrong name of first table", "documents", config
113: .getString("database.tables.table(0).name"));
114: assertEquals("Wrong id of first table", 1, config
115: .getInt("database.tables.table(0)[@id]"));
116: assertEquals("Wrong name of second table", "tasks", config
117: .getString("database.tables.table(1).name"));
118: assertEquals("Wrong id of second table", 2, config
119: .getInt("database.tables.table(1)[@id]"));
120: }
121: }
|