You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by oh...@apache.org on 2006/04/16 19:32:04 UTC

svn commit: r394521 - in /jakarta/commons/proper/configuration/trunk: ./ conf/ src/test/org/apache/commons/configuration/tree/

Author: oheger
Date: Sun Apr 16 10:32:02 2006
New Revision: 394521

URL: http://svn.apache.org/viewcvs?rev=394521&view=rev
Log:
Added tests for NodeCombiner classes

Added:
    jakarta/commons/proper/configuration/trunk/conf/testcombine1.xml   (with props)
    jakarta/commons/proper/configuration/trunk/conf/testcombine2.xml   (with props)
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/AbstractCombinerTest.java   (with props)
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestOverrideCombiner.java   (with props)
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestUnionCombiner.java   (with props)
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestViewNode.java   (with props)
Modified:
    jakarta/commons/proper/configuration/trunk/build.xml
    jakarta/commons/proper/configuration/trunk/project.xml

Modified: jakarta/commons/proper/configuration/trunk/build.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/build.xml?rev=394521&r1=394520&r2=394521&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/build.xml (original)
+++ jakarta/commons/proper/configuration/trunk/build.xml Sun Apr 16 10:32:02 2006
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-   Copyright 2004-2005 The Apache Software Foundation
+   Copyright 2004-2006 The Apache Software Foundation
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
@@ -147,6 +147,7 @@
           </exclude>
           <exclude name="**/XPathTest.java">
           </exclude>
+          <exclude name="**/AbstractCombinerTest.java"/>
         </fileset>
       </batchtest>
     </junit>

Added: jakarta/commons/proper/configuration/trunk/conf/testcombine1.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/conf/testcombine1.xml?rev=394521&view=auto
==============================================================================
--- jakarta/commons/proper/configuration/trunk/conf/testcombine1.xml (added)
+++ jakarta/commons/proper/configuration/trunk/conf/testcombine1.xml Sun Apr 16 10:32:02 2006
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<config>
+  <gui>
+    <bgcolor>green</bgcolor>
+    <selcolor>yellow</selcolor>
+    <level default="2">1</level>
+  </gui>
+  <net>
+    <proxy>
+      <url>http://www.url1.org</url>
+      <url>http://www.url2.org</url>
+      <url>http://www.url3.org</url>
+    </proxy>
+    <service>
+      <url>http://service1.org</url>
+    </service>
+    <server>
+    </server>
+  </net>
+  <base>
+    <services>
+      <security>
+        <login>
+          <user>Admin</user>
+          <passwd type="secret"/>
+        </login>
+      </security>
+    </services>
+  </base>
+  <database>
+    <tables>
+      <table id="1">
+        <name>documents</name>
+        <fields>
+          <field>
+            <name>docid</name>
+            <type>long</type>
+          </field>
+          <field>
+            <name>docname</name>
+            <type>varchar</type>
+          </field>
+          <field>
+            <name>authorID</name>
+            <type>int</type>
+          </field>
+        </fields>
+      </table>
+    </tables>
+  </database>
+</config>

Propchange: jakarta/commons/proper/configuration/trunk/conf/testcombine1.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/configuration/trunk/conf/testcombine1.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/commons/proper/configuration/trunk/conf/testcombine1.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: jakarta/commons/proper/configuration/trunk/conf/testcombine2.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/conf/testcombine2.xml?rev=394521&view=auto
==============================================================================
--- jakarta/commons/proper/configuration/trunk/conf/testcombine2.xml (added)
+++ jakarta/commons/proper/configuration/trunk/conf/testcombine2.xml Sun Apr 16 10:32:02 2006
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<config>
+  <base>
+    <services>
+      <security>
+        <login>
+          <user type="default">scotty</user>
+          <passwd>BeamMeUp</passwd>
+        </login>
+      </security>
+    </services>
+  </base>
+  <gui>
+    <bgcolor>black</bgcolor>
+    <fgcolor>blue</fgcolor>
+    <level min="1">4</level>
+  </gui>
+  <net>
+    <server>
+      <url>http://appsvr1.com</url>
+      <url>http://appsvr2.com</url>
+      <url>http://testsvr.com</url>
+      <url>http://backupsvr.com</url>
+    </server>
+    <service>
+      <url type="2">http://service2.org</url>
+      <url type="2">http://service3.org</url>
+    </service>
+  </net>
+  <database>
+    <tables>
+      <table id="2">
+        <name>tasks</name>
+        <fields>
+          <field>
+            <name>taskid</name>
+            <type>long</type>
+          </field>
+          <field>
+            <name>taskname</name>
+            <type>varchar</type>
+          </field>
+        </fields>
+      </table>
+    </tables>
+  </database>
+</config>

Propchange: jakarta/commons/proper/configuration/trunk/conf/testcombine2.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/configuration/trunk/conf/testcombine2.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/commons/proper/configuration/trunk/conf/testcombine2.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: jakarta/commons/proper/configuration/trunk/project.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/project.xml?rev=394521&r1=394520&r2=394521&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/project.xml (original)
+++ jakarta/commons/proper/configuration/trunk/project.xml Sun Apr 16 10:32:02 2006
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
 <!--
-   Copyright 2001-2005 The Apache Software Foundation
+   Copyright 2001-2006 The Apache Software Foundation
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
@@ -430,6 +430,7 @@
         <exclude>**/NonStringTestHolder.java</exclude>
         <exclude>**/TestAbstractConfiguration.java</exclude>
         <exclude>**/XPathTest.java</exclude>
+        <exclude>**/AbstractCombinerTest.java</exclude>
       </excludes>
       <resources>
         <resource>

Added: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/AbstractCombinerTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/AbstractCombinerTest.java?rev=394521&view=auto
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/AbstractCombinerTest.java (added)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/AbstractCombinerTest.java Sun Apr 16 10:32:02 2006
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.configuration.tree;
+
+import java.io.File;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.configuration.XMLConfiguration;
+
+import junit.framework.TestCase;
+
+/**
+ * A base class for testing combiner implementations. This base class provides
+ * some functionality for loading the test configurations, which are to be
+ * combined. Concrete sub classes only need to create the correct combiner
+ * object.
+ *
+ * @version $Id$
+ */
+public abstract class AbstractCombinerTest extends TestCase
+{
+    /** Constant for the first test configuration. */
+    static File CONF1 = new File("conf/testcombine1.xml");
+
+    /** Constant for the second test configuration. */
+    static File CONF2 = new File("conf/testcombine2.xml");
+
+    /** The combiner to be tested. */
+    protected NodeCombiner combiner;
+
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        combiner = createCombiner();
+    }
+
+    /**
+     * Creates the combiner to be tested. This method is called by
+     * <code>setUp()</code>. It must be implemented in concrete sub classes.
+     *
+     * @return the combiner to be tested
+     */
+    protected abstract NodeCombiner createCombiner();
+
+    /**
+     * Constructs a union configuration based on the source configurations.
+     *
+     * @return the union configuration
+     * @throws ConfigurationException if an error occurs
+     */
+    protected HierarchicalConfiguration createCombinedConfiguration()
+            throws ConfigurationException
+    {
+        XMLConfiguration conf1 = new XMLConfiguration(CONF1);
+        XMLConfiguration conf2 = new XMLConfiguration(CONF2);
+        ConfigurationNode cn = combiner.combine(conf1.getRootNode(), conf2
+                .getRootNode());
+
+        HierarchicalConfiguration result = new HierarchicalConfiguration();
+        result.setRootNode(cn);
+
+        return result;
+    }
+
+    /**
+     * Tests a newly created combiner.
+     */
+    public void testInit()
+    {
+        assertTrue("Combiner has list nodes", combiner.getListNodes().isEmpty());
+        assertFalse("Node is list node", combiner
+                .isListNode(new DefaultConfigurationNode("test")));
+    }
+
+}

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/AbstractCombinerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/AbstractCombinerTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/AbstractCombinerTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestOverrideCombiner.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestOverrideCombiner.java?rev=394521&view=auto
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestOverrideCombiner.java (added)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestOverrideCombiner.java Sun Apr 16 10:32:02 2006
@@ -0,0 +1,164 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.configuration.tree;
+
+import java.util.List;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+
+/**
+ * Test class for OverrideCombiner.
+ *
+ * @version $Id$
+ */
+public class TestOverrideCombiner extends AbstractCombinerTest
+{
+    /**
+     * Creates the combiner.
+     *
+     * @return the combiner
+     */
+    protected NodeCombiner createCombiner()
+    {
+        return new OverrideCombiner();
+    }
+
+    /**
+     * Tests combination of simple elements.
+     */
+    public void testSimpleValues() throws ConfigurationException
+    {
+        HierarchicalConfiguration config = createCombinedConfiguration();
+        assertEquals("Wrong number of bgcolors", 0, config
+                .getMaxIndex("gui.bgcolor"));
+        assertEquals("Wrong bgcolor", "green", config.getString("gui.bgcolor"));
+        assertEquals("Wrong selcolor", "yellow", config
+                .getString("gui.selcolor"));
+        assertEquals("Wrong fgcolor", "blue", config.getString("gui.fgcolor"));
+        assertEquals("Wrong level", 1, config.getInt("gui.level"));
+    }
+
+    /**
+     * Tests combination of attributes.
+     */
+    public void testAttributes() throws ConfigurationException
+    {
+        HierarchicalConfiguration config = createCombinedConfiguration();
+        assertEquals("Wrong value of min attribute", 1, config
+                .getInt("gui.level[@min]"));
+        assertEquals("Wrong value of default attribute", 2, config
+                .getInt("gui.level[@default]"));
+        assertEquals("Wrong number of id attributes", 0, config
+                .getMaxIndex("database.tables.table(0)[@id]"));
+        assertEquals("Wrong value of table id", 1, config
+                .getInt("database.tables.table(0)[@id]"));
+    }
+
+    /**
+     * Tests whether property values are correctly overridden.
+     */
+    public void testOverrideValues() throws ConfigurationException
+    {
+        HierarchicalConfiguration config = createCombinedConfiguration();
+        assertEquals("Wrong user", "Admin", config
+                .getString("base.services.security.login.user"));
+        assertEquals("Wrong user type", "default", config
+                .getString("base.services.security.login.user[@type]"));
+        assertEquals("Wrong password", "BeamMeUp", config
+                .getString("base.services.security.login.passwd"));
+        assertEquals("Wrong password type", "secret", config
+                .getString("base.services.security.login.passwd[@type]"));
+    }
+
+    /**
+     * Tests if a list from the first node structure overrides a list in the
+     * second structure.
+     */
+    public void testListFromFirstStructure() throws ConfigurationException
+    {
+        HierarchicalConfiguration config = createCombinedConfiguration();
+        assertEquals("Wrong number of services", 0, config
+                .getMaxIndex("net.service.url"));
+        assertEquals("Wrong service", "http://service1.org", config
+                .getString("net.service.url"));
+        assertFalse("Type attribute available", config
+                .containsKey("net.service.url[@type]"));
+    }
+
+    /**
+     * Tests if a list from the second structure is added if it is not defined
+     * in the first structure.
+     */
+    public void testListFromSecondStructure() throws ConfigurationException
+    {
+        HierarchicalConfiguration config = createCombinedConfiguration();
+        assertEquals("Wrong number of servers", 3, config
+                .getMaxIndex("net.server.url"));
+        assertEquals("Wrong server", "http://testsvr.com", config
+                .getString("net.server.url(2)"));
+    }
+
+    /**
+     * Tests the combination of the table structure. Because the table node is
+     * not declared as a list node the structures will be combined. But this
+     * won't make any difference because the values in the first table override
+     * the values in the second table. Only the node for the table element will
+     * be a ViewNode.
+     */
+    public void testCombinedTableNoList() throws ConfigurationException
+    {
+        ConfigurationNode tabNode = checkTable(createCombinedConfiguration());
+        assertTrue("Node is not a view node", tabNode instanceof ViewNode);
+    }
+
+    /**
+     * Tests the combination of the table structure when the table node is
+     * declared as a list node. In this case the first table structure
+     * completely overrides the second and will be directly added to the
+     * resulting structure.
+     */
+    public void testCombinedTableList() throws ConfigurationException
+    {
+        combiner.addListNode("table");
+        ConfigurationNode tabNode = checkTable(createCombinedConfiguration());
+        assertFalse("Node is a view node", tabNode instanceof ViewNode);
+    }
+
+    /**
+     * Helper method for checking the combined table structure.
+     *
+     * @param config the config
+     * @return the node for the table element
+     */
+    private ConfigurationNode checkTable(HierarchicalConfiguration config)
+    {
+        assertEquals("Wrong number of tables", 0, config
+                .getMaxIndex("database.tables.table"));
+        HierarchicalConfiguration c = config
+                .configurationAt("database.tables.table");
+        assertEquals("Wrong table name", "documents", c.getString("name"));
+        assertEquals("Wrong number of fields", 2, c
+                .getMaxIndex("fields.field.name"));
+        assertEquals("Wrong field", "docname", c
+                .getString("fields.field(1).name"));
+
+        List nds = config.getExpressionEngine().query(config.getRoot(),
+                "database.tables.table");
+        assertFalse("No node found", nds.isEmpty());
+        return (ConfigurationNode) nds.get(0);
+    }
+}

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestOverrideCombiner.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestOverrideCombiner.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestOverrideCombiner.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestUnionCombiner.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestUnionCombiner.java?rev=394521&view=auto
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestUnionCombiner.java (added)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestUnionCombiner.java Sun Apr 16 10:32:02 2006
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.configuration.tree;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+
+/**
+ * Test class for UnionCombiner.
+ *
+ * @version $Id$
+ */
+public class TestUnionCombiner extends AbstractCombinerTest
+{
+    /**
+     * Creates the combiner.
+     *
+     * @return the combiner
+     */
+    protected NodeCombiner createCombiner()
+    {
+        return new UnionCombiner();
+    }
+
+    /**
+     * Tests combination of simple values (no lists).
+     */
+    public void testSimpleValues() throws ConfigurationException
+    {
+        HierarchicalConfiguration config = createCombinedConfiguration();
+        assertEquals("Too few bgcolors", 1, config.getMaxIndex("gui.bgcolor"));
+        assertEquals("Wrong first color", "green", config
+                .getString("gui.bgcolor(0)"));
+        assertEquals("Wrong second color", "black", config
+                .getString("gui.bgcolor(1)"));
+        assertEquals("Wrong number of selcolors", 0, config
+                .getMaxIndex("gui.selcolor"));
+        assertEquals("Wrong selcolor", "yellow", config
+                .getString("gui.selcolor"));
+    }
+
+    /**
+     * Tests combinations of elements with attributes.
+     */
+    public void testSimpleValuesWithAttributes() throws ConfigurationException
+    {
+        HierarchicalConfiguration config = createCombinedConfiguration();
+        assertEquals("Too few level elements", 1, config
+                .getMaxIndex("gui.level"));
+        assertEquals("Wrong value of first element", 1, config
+                .getInt("gui.level(0)"));
+        assertEquals("Wrong value of second element", 4, config
+                .getInt("gui.level(1)"));
+        assertEquals("Wrong value of first attribute", 2, config
+                .getInt("gui.level(0)[@default]"));
+        assertFalse("Found wrong attribute", config
+                .containsKey("gui.level(0)[@min]"));
+        assertEquals("Wrong value of second attribute", 1, config
+                .getInt("gui.level(1)[@min]"));
+    }
+
+    /**
+     * Tests combination of attributes.
+     */
+    public void testAttributes() throws ConfigurationException
+    {
+        HierarchicalConfiguration config = createCombinedConfiguration();
+        assertEquals("Too few attributes", 1, config
+                .getMaxIndex("database.tables.table(0)[@id]"));
+        assertEquals("Wrong value of first attribute", 1, config
+                .getInt("database.tables.table(0)[@id](0)"));
+        assertEquals("Wrong value of second attribute", 2, config
+                .getInt("database.tables.table(0)[@id](1)"));
+    }
+
+    /**
+     * Tests combination of lists.
+     */
+    public void testLists() throws ConfigurationException
+    {
+        HierarchicalConfiguration config = createCombinedConfiguration();
+        assertEquals("Too few list elements", 2, config
+                .getMaxIndex("net.service.url"));
+        assertEquals("Wrong first service", "http://service1.org", config
+                .getString("net.service.url(0)"));
+        assertEquals("Wrong second service", "http://service2.org", config
+                .getString("net.service.url(1)"));
+        assertEquals("Wrong service attribute", 2, config
+                .getInt("net.service.url(2)[@type]"));
+        assertEquals("Wrong number of server elements", 3, config
+                .getMaxIndex("net.server.url"));
+    }
+
+    /**
+     * Tests combining a list of tables. Per default the table elements will be
+     * combined. But if they are defined as list elements, the resulting tree
+     * should contain two table nodes.
+     */
+    public void testTableList() throws ConfigurationException
+    {
+        combiner.addListNode("table");
+        HierarchicalConfiguration config = createCombinedConfiguration();
+        assertEquals("Wrong name of first table", "documents", config
+                .getString("database.tables.table(0).name"));
+        assertEquals("Wrong id of first table", 1, config
+                .getInt("database.tables.table(0)[@id]"));
+        assertEquals("Wrong name of second table", "tasks", config
+                .getString("database.tables.table(1).name"));
+        assertEquals("Wrong id of second table", 2, config
+                .getInt("database.tables.table(1)[@id]"));
+    }
+}

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestUnionCombiner.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestUnionCombiner.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestUnionCombiner.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestViewNode.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestViewNode.java?rev=394521&view=auto
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestViewNode.java (added)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestViewNode.java Sun Apr 16 10:32:02 2006
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.configuration.tree;
+
+import junit.framework.TestCase;
+
+/**
+ * Test class for ViewNode.
+ *
+ * @version $Id$
+ */
+public class TestViewNode extends TestCase
+{
+    /** Stores the view node to be tested. */
+    ViewNode viewNode;
+
+    /** Stores a regular node. */
+    ConfigurationNode node;
+
+    /** A child node of the regular node. */
+    ConfigurationNode child;
+
+    /** An attribute node of the regular node. */
+    ConfigurationNode attr;
+
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        node = new DefaultConfigurationNode();
+        child = new DefaultConfigurationNode("child");
+        attr = new DefaultConfigurationNode("attr");
+        node.addChild(child);
+        node.addAttribute(attr);
+        viewNode = new ViewNode();
+    }
+
+    /**
+     * Tests adding a child to the view node.
+     */
+    public void testAddChild()
+    {
+        viewNode.addChild(child);
+        assertEquals("Parent was changed", node, child.getParentNode());
+        assertEquals("Child was not added", 1, viewNode.getChildrenCount());
+    }
+
+    /**
+     * Tests adding a null child to the view node. This should throw an
+     * exception.
+     */
+    public void testAddNullChild()
+    {
+        try
+        {
+            viewNode.addChild(null);
+            fail("Could add null child!");
+        }
+        catch (IllegalArgumentException iex)
+        {
+            // ok
+        }
+    }
+
+    /**
+     * Tests adding an attribute to the view node.
+     */
+    public void testAddAttribute()
+    {
+        viewNode.addAttribute(attr);
+        assertEquals("Parent was changed", node, attr.getParentNode());
+        assertEquals("Attribute was not added", 1, viewNode.getAttributeCount());
+    }
+
+    /**
+     * Tests adding a null attribute to the view node. This should cause an
+     * exception.
+     */
+    public void testAddNullAttribute()
+    {
+        try
+        {
+            viewNode.addAttribute(null);
+            fail("Could add null attribute");
+        }
+        catch (IllegalArgumentException iex)
+        {
+            // ok
+        }
+    }
+
+    /**
+     * Tests appending all children to a view node.
+     */
+    public void testAppendChildren()
+    {
+        viewNode.addChild(new DefaultConfigurationNode("testNode"));
+        viewNode.appendChildren(node);
+        assertEquals("Wrong number of children", 2, viewNode.getChildrenCount());
+        assertEquals("Cannot find child", child, viewNode.getChild(1));
+        assertEquals("Parent was changed", node, ((ConfigurationNode) viewNode
+                .getChild(1)).getParentNode());
+    }
+
+    /**
+     * Tests appending children from a null source. This should be a noop.
+     */
+    public void testAppendNullChildren()
+    {
+        viewNode.appendChildren(null);
+        assertEquals("Wrong number of children", 0, viewNode.getChildrenCount());
+    }
+
+    /**
+     * tests appending all attributes to a view node.
+     */
+    public void testAppendAttributes()
+    {
+        viewNode.appendAttributes(node);
+        assertEquals("Wrong number of attributes", 1, viewNode
+                .getAttributeCount());
+        assertEquals("Cannot find attribute", attr, viewNode.getAttribute(0));
+        assertEquals("Parent was changed", node, ((ConfigurationNode) viewNode
+                .getAttribute(0)).getParentNode());
+    }
+
+    /**
+     * Tests appending attributes from a null source. This should be a noop.
+     */
+    public void testAppendNullAttributes()
+    {
+        viewNode.appendAttributes(null);
+        assertEquals("Wrong number of attributes", 0, viewNode
+                .getAttributeCount());
+    }
+}

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestViewNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestViewNode.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/tree/TestViewNode.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org