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 2005/08/19 18:30:17 UTC

svn commit: r233508 - /jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java

Author: oheger
Date: Fri Aug 19 09:30:10 2005
New Revision: 233508

URL: http://svn.apache.org/viewcvs?rev=233508&view=rev
Log:
Increased unit test coverage

Modified:
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java

Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java?rev=233508&r1=233507&r2=233508&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java Fri Aug 19 09:30:10 2005
@@ -23,6 +23,8 @@
 import java.util.List;
 import java.util.Set;
 
+import org.apache.commons.configuration.HierarchicalConfiguration.Node;
+
 import junit.framework.TestCase;
 
 /**
@@ -75,6 +77,22 @@
 
         config.getRoot().addChild(nodeTables);
     }
+    
+    public void testSetRoot()
+    {
+        try
+        {
+            config.setRoot(null);
+            fail("Could set null root node!");
+        }
+        catch(IllegalArgumentException iex)
+        {
+            //ok
+        }
+        
+        config.setRoot(new HierarchicalConfiguration.Node("test"));
+        assertTrue(config.isEmpty());
+    }
 
     public void testIsEmpty()
     {
@@ -134,6 +152,10 @@
         assertEquals(5, config.getMaxIndex("test.items.item"));
         assertTrue(config.getBoolean("test"));
         assertEquals("01/01/05", config.getProperty("test.items"));
+        
+        config.setProperty("test.items.item", new Integer(42));
+        assertEquals(0, config.getMaxIndex("test.items.item"));
+        assertEquals(42, config.getInt("test.items.item"));
     }
     
     public void testClearProperty()
@@ -274,6 +296,16 @@
         key.appendAttribute("tableType");
         config.addProperty(key.toString(), "system");
         assertEquals("system", config.getProperty(key.toString()));
+        
+        try
+        {
+            config.addProperty(".", "InvalidKey");
+            fail("Could add invalid key!");
+        }
+        catch(IllegalArgumentException iex)
+        {
+            //ok
+        }
     }
     
     public void testGetMaxIndex()
@@ -355,6 +387,61 @@
         assertEquals("birthDate", config.getString("tables.table(0).fields.field(5).name"));
         assertEquals("lastLogin", config.getString("tables.table(0).fields.field(6).name"));
         assertEquals("language", config.getString("tables.table(0).fields.field(7).name"));
+        
+        try
+        {
+            config.addNodes(".", nodes);
+            fail("Could use empty key!");
+        }
+        catch(IllegalArgumentException iex)
+        {
+            //ok
+        }
+    }
+    
+    /**
+     * Tests removing children from a configuration node.
+     */
+    public void testNodeRemove()
+    {
+        HierarchicalConfiguration.Node node = new HierarchicalConfiguration.Node(
+                "parent", "test");
+        node.removeChildren(); // should have no effect
+        assertFalse(node.remove("child"));
+
+        for (int i = 0; i < 10; i++)
+        {
+            node.addChild(createNode("child" + i, "test" + i));
+        }
+        assertFalse(node.remove("child"));
+        assertTrue(node.remove("child2"));
+        assertTrue(node.getChildren("child2").isEmpty());
+
+        HierarchicalConfiguration.Node child = createNode("child0", "testChild");
+        assertFalse(node.remove(child));
+        node.addChild(child);
+        assertTrue(node.remove(child));
+        assertEquals(1, node.getChildren("child0").size());
+        assertEquals("test0", ((HierarchicalConfiguration.Node) node
+                .getChildren("child0").get(0)).getValue());
+
+        assertTrue(node.remove("child0"));
+        assertFalse(node.remove(child));
+
+        node.removeChildren();
+        assertTrue(node.getChildren().isEmpty());
+        assertFalse(node.remove(child));
+    }
+
+    /**
+     * Tests the visitor mechanism.
+     */
+    public void testNodeVisitor()
+    {
+        CountVisitor v = new CountVisitor();
+        config.getRoot().visit(v, null);
+        assertEquals(28, v.beforeCount);
+        assertEquals(v.beforeCount, v.afterCount);
     }
     
     /**
@@ -410,5 +497,28 @@
         HierarchicalConfiguration.Node node = new HierarchicalConfiguration.Node(name);
         node.setValue(value);
         return node;
+    }
+    
+    /**
+     * A test visitor implementation for checking whether all visitor methods
+     * are correctly called.
+     */
+    static class CountVisitor extends HierarchicalConfiguration.NodeVisitor
+    {
+        public int beforeCount;
+
+        public int afterCount;
+
+        public void visitAfterChildren(Node node, ConfigurationKey key)
+        {
+            super.visitAfterChildren(node, key);
+            afterCount++;
+        }
+
+        public void visitBeforeChildren(Node node, ConfigurationKey key)
+        {
+            super.visitBeforeChildren(node, key);
+            beforeCount++;
+        }
     }
 }



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