You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2008/04/05 17:28:33 UTC
svn commit: r645122 - in
/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat:
TestFlatNodeHandler.java TestFlatNodes.java
Author: oheger
Date: Sat Apr 5 08:28:32 2008
New Revision: 645122
URL: http://svn.apache.org/viewvc?rev=645122&view=rev
Log:
Tests for FlatNodeHandler
Added:
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodeHandler.java (with props)
Modified:
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodes.java
Added: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodeHandler.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodeHandler.java?rev=645122&view=auto
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodeHandler.java (added)
+++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodeHandler.java Sat Apr 5 08:28:32 2008
@@ -0,0 +1,330 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.configuration2.flat;
+
+import java.util.List;
+
+import org.apache.commons.configuration2.ConfigurationRuntimeException;
+import org.apache.commons.configuration2.event.ConfigurationEvent;
+import org.apache.commons.configuration2.event.ConfigurationListener;
+
+import junit.framework.TestCase;
+
+/**
+ * Test class for FlatNodeHandler.
+ *
+ * @author <a href="http://commons.apache.org/configuration/team-list.html">Commons
+ * Configuration team</a>
+ * @version $Id$
+ */
+public class TestFlatNodeHandler extends TestCase
+{
+ /** An array with the names of the test child nodes. */
+ private static final String[] CHILD_NAMES = {
+ "child1", "anotherChild", "differentChild", "child1", "againAChild"
+ };
+
+ /** The node handler to be tested. */
+ private FlatNodeHandler handler;
+
+ /** The mock configuration associated with the node handler. */
+ private TestFlatNodes.FlatConfigurationMockImpl config;
+
+ /** Stores the internal update flag of the node handler. */
+ private Boolean internalUpdate;
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ config = new TestFlatNodes.FlatConfigurationMockImpl();
+ config.clearConfigurationListeners();
+ config.addConfigurationListener(new ConfigurationListener()
+ {
+ /**
+ * Tests the internal update status of the node handler.
+ */
+ public void configurationChanged(ConfigurationEvent event)
+ {
+ internalUpdate = handler.isInternalUpdate();
+ }
+ });
+ handler = new FlatNodeHandler(config);
+ }
+
+ /**
+ * Clears the test environment. This implementation also checks whether an
+ * unexpected change event was received.
+ */
+ @Override
+ protected void tearDown() throws Exception
+ {
+ assertNull("Unexpected change event", internalUpdate);
+ super.tearDown();
+ }
+
+ /**
+ * Creates a flat root node with some test child nodes.
+ *
+ * @return the root node
+ */
+ private FlatNode setUpTestNode()
+ {
+ FlatRootNode root = new FlatRootNode();
+ for (String c : CHILD_NAMES)
+ {
+ root.addChild(c);
+ }
+ return root;
+ }
+
+ /**
+ * Tests the internal update flag of the node handler.
+ *
+ * @param expected the expected value
+ */
+ private void checkUpdate(boolean expected)
+ {
+ assertEquals("Wrong value of update flag", expected, internalUpdate
+ .booleanValue());
+ internalUpdate = null;
+ }
+
+ /**
+ * Tests whether the correct configuration is returned by the handler.
+ */
+ public void testGetConfiguration()
+ {
+ assertSame("Configuration not set", config, handler.getConfiguration());
+ }
+
+ /**
+ * Tests querying the child nodes of a node.
+ */
+ public void testGetChildren()
+ {
+ List<FlatNode> children = handler.getChildren(setUpTestNode());
+ assertEquals("Wrong number of children", CHILD_NAMES.length, children
+ .size());
+ for (int i = 0; i < CHILD_NAMES.length; i++)
+ {
+ assertEquals("Wrong child at " + i, CHILD_NAMES[i], children.get(i)
+ .getName());
+ }
+ }
+
+ /**
+ * Tests querying children by name.
+ */
+ public void testGetChildrenName()
+ {
+ List<FlatNode> children = handler.getChildren(setUpTestNode(),
+ CHILD_NAMES[0]);
+ assertEquals("Wrong number of children", 2, children.size());
+ for (FlatNode n : children)
+ {
+ assertEquals("Wrong child", CHILD_NAMES[0], n.getName());
+ }
+ }
+
+ /**
+ * Tests querying the number of children.
+ */
+ public void testGetChildrenCount()
+ {
+ FlatNode root = setUpTestNode();
+
+ for (String name : CHILD_NAMES)
+ {
+ int count = 0;
+ for (String n : CHILD_NAMES)
+ {
+ if (name.equals(n))
+ {
+ count++;
+ }
+ }
+ assertEquals("Wrong number for child " + name, count, handler
+ .getChildrenCount(root, name));
+ }
+ }
+
+ /**
+ * Tests querying the total number of children.
+ */
+ public void testGetChildrenCountTotal()
+ {
+ assertEquals("Wrong total number of children", CHILD_NAMES.length,
+ handler.getChildrenCount(setUpTestNode(), null));
+ }
+
+ /**
+ * Tests querying children by their index.
+ */
+ public void testGetChild()
+ {
+ FlatNode node = setUpTestNode();
+ for (int i = 0; i < CHILD_NAMES.length; i++)
+ {
+ FlatNode child = handler.getChild(node, i);
+ assertEquals("Wrong child at " + i, CHILD_NAMES[i], child.getName());
+ }
+ }
+
+ /**
+ * Tests adding a new child node.
+ */
+ public void testAddChild()
+ {
+ FlatNode node = setUpTestNode();
+ final String childName = TestFlatNodes.NAME;
+ FlatNode child = handler.addChild(node, childName);
+ assertEquals("Wrong name of child", childName, child.getName());
+ config.expectAdd = true;
+ child.setValue(config, TestFlatNodes.VALUE);
+ assertEquals("Value not added", TestFlatNodes.VALUE, config.property);
+ checkUpdate(false);
+ }
+
+ /**
+ * Tests removing a child node.
+ */
+ public void testRemoveChild()
+ {
+ FlatNode node = setUpTestNode();
+ FlatNode child = node.addChild(TestFlatNodes.NAME);
+ handler.removeChild(node, child);
+ List<FlatNode> children = node.getChildren();
+ assertEquals("No child removed", CHILD_NAMES.length, children.size());
+ assertFalse("Child still found", children.contains(child));
+ assertTrue("Configuration not removed", config.clearProperty);
+ checkUpdate(true);
+ }
+
+ /**
+ * Tests setting the value of a node.
+ */
+ public void testSetValue()
+ {
+ FlatNode node = setUpTestNode();
+ FlatNode child = node.addChild(TestFlatNodes.NAME);
+ config.expectAdd = true;
+ handler.setValue(child, TestFlatNodes.VALUE);
+ assertEquals("Property not added to config", TestFlatNodes.VALUE,
+ config.property);
+ checkUpdate(true);
+ }
+
+ /**
+ * Tests querying the value of a node.
+ */
+ public void testGetValue()
+ {
+ FlatNode node = setUpTestNode();
+ FlatNode child = node.addChild(TestFlatNodes.NAME);
+ config.property = TestFlatNodes.VALUE;
+ assertEquals("Wrong value of node", TestFlatNodes.VALUE, handler
+ .getValue(child));
+ }
+
+ /**
+ * Tests querying the name of nodes.
+ */
+ public void testNodeName()
+ {
+ FlatNode node = setUpTestNode();
+ assertNull("Wrong name of root node", handler.nodeName(node));
+ for (int i = 0; i < CHILD_NAMES.length; i++)
+ {
+ assertEquals("Wrong name for child " + i, CHILD_NAMES[i], handler
+ .nodeName(node.getChild(i)));
+ }
+ }
+
+ /**
+ * Tests querying the parent of a node.
+ */
+ public void testGetParent()
+ {
+ FlatNode node = setUpTestNode();
+ assertNull("Wrong parent of root node", handler.getParent(node));
+ assertEquals("Wrong parent", node, handler.getParent(node.getChild(0)));
+ }
+
+ /**
+ * Tests adding a value to an attribute. Because attributes are not
+ * supported, this should cause an exception.
+ */
+ public void testAddAttributeValue()
+ {
+ try
+ {
+ handler.addAttributeValue(setUpTestNode(), "attr", "test");
+ fail("Could add an attribute!");
+ }
+ catch (ConfigurationRuntimeException crex)
+ {
+ // ok
+ }
+ }
+
+ /**
+ * Tests querying the value of an attribute. Because flat nodes do not
+ * support attributes, result should always be null.
+ */
+ public void testGetAttributeValue()
+ {
+ assertNull("Wrong attribute value", handler.getAttributeValue(
+ setUpTestNode(), "test"));
+ }
+
+ /**
+ * Tests querying the existing attributes. Here always an empty list should
+ * be returned.
+ */
+ public void testGetAttributes()
+ {
+ assertTrue("Found attributes", handler.getAttributes(setUpTestNode())
+ .isEmpty());
+ }
+
+ /**
+ * Tests removing an attribute. This should be a no-op. We only test whether
+ * no exception is thrown.
+ */
+ public void testRemoveAttribute()
+ {
+ handler.removeAttribute(setUpTestNode(), "test");
+ }
+
+ /**
+ * Tests setting the value of an attribute. Because attributes are not
+ * supported, this should cause an exception.
+ */
+ public void testSetAttributeValue()
+ {
+ try
+ {
+ handler.setAttributeValue(setUpTestNode(), "attr", "test");
+ fail("Could add an attribute!");
+ }
+ catch (ConfigurationRuntimeException crex)
+ {
+ // ok
+ }
+ }
+}
Propchange: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodeHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodeHandler.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodeHandler.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodes.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodes.java?rev=645122&r1=645121&r2=645122&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodes.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestFlatNodes.java Sat Apr 5 08:28:32 2008
@@ -35,10 +35,10 @@
public class TestFlatNodes extends TestCase
{
/** Constant for the name of the test node. */
- private static final String NAME = "testFlatNode";
+ static final String NAME = "testFlatNode";
/** Constant for a test value. */
- private static final Object VALUE = 42;
+ static final Object VALUE = 42;
/** The parent node. */
private FlatRootNode parent;
@@ -472,7 +472,7 @@
* for testing whether properties are correctly accessed. Most methods are
* simply dummy implementations.
*/
- private static class FlatConfigurationMockImpl extends
+ static class FlatConfigurationMockImpl extends
AbstractFlatConfiguration
{
/** Stores the value of the test property. */
@@ -497,7 +497,7 @@
}
@Override
- public void clearProperty(String key)
+ public void clearPropertyDirect(String key)
{
clearPropertyValue(key, FlatNode.INDEX_UNDEFINED);
}