Author: oheger Date: Wed Mar 12 13:53:56 2008 New Revision: 636506 URL: http://svn.apache.org/viewvc?rev=636506&view=rev Log: Tests for helper classes for XPathExpressionEngine
Added: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/AbstractXPathTest.java - copied, changed from r635359, commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/AbstractXPathTest.java commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationAttributePointer.java (with props) commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationIteratorAttributes.java - copied, changed from r635359, commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationIteratorAttributes.java commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationNodeIteratorChildren.java - copied, changed from r635359, commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationNodeIteratorChildren.java commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationNodePointer.java - copied, changed from r635359, commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationNodePointer.java Copied: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/AbstractXPathTest.java (from r635359, commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/AbstractXPathTest.java) URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/AbstractXPathTest.java?p2=commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/AbstractXPathTest.java&p1=commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/AbstractXPathTest.java&r1=635359&r2=636506&rev=636506&view=diff ============================================================================== --- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/AbstractXPathTest.java (original) +++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/AbstractXPathTest.java Wed Mar 12 13:53:56 2008 @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.configuration2.tree.xpath; +package org.apache.commons.configuration2.expr.xpath; import java.util.ArrayList; import java.util.List; @@ -22,6 +22,7 @@ import org.apache.commons.configuration2.tree.ConfigurationNode; import org.apache.commons.configuration2.tree.DefaultConfigurationNode; import org.apache.commons.jxpath.ri.model.NodeIterator; +import org.apache.commons.jxpath.ri.model.NodePointer; import junit.framework.TestCase; @@ -53,6 +54,7 @@ /** Stores the root node of the hierarchy. */ protected ConfigurationNode root; + @Override protected void setUp() throws Exception { super.setUp(); @@ -62,6 +64,7 @@ /** * Clears the test environment. */ + @Override protected void tearDown() throws Exception { root = null; @@ -108,19 +111,18 @@ } /** - * Returns a list with all configuration nodes contained in the specified - * iteration. It is assumed that the iteration contains only elements of - * this type. + * Returns a list with all node pointers contained in the specified + * iteration. * * @param iterator the iterator - * @return a list with configuration nodes obtained from the iterator + * @return a list with the node pointers obtained from the iterator */ - protected List iterationElements(NodeIterator iterator) + protected List<NodePointer> iterationElements(NodeIterator iterator) { - List result = new ArrayList(); + List<NodePointer> result = new ArrayList<NodePointer>(); for (int pos = 1; iterator.setPosition(pos); pos++) { - result.add(iterator.getNodePointer().getNode()); + result.add(iterator.getNodePointer()); } return result; } Added: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationAttributePointer.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationAttributePointer.java?rev=636506&view=auto ============================================================================== --- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationAttributePointer.java (added) +++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationAttributePointer.java Wed Mar 12 13:53:56 2008 @@ -0,0 +1,182 @@ +/* + * 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.expr.xpath; + +import java.util.List; +import java.util.Locale; + +import org.apache.commons.configuration2.expr.ConfigurationNodeHandler; +import org.apache.commons.configuration2.tree.ConfigurationNode; +import org.apache.commons.configuration2.tree.DefaultConfigurationNode; +import org.apache.commons.jxpath.ri.Compiler; +import org.apache.commons.jxpath.ri.QName; +import org.apache.commons.jxpath.ri.compiler.NodeTest; +import org.apache.commons.jxpath.ri.compiler.NodeTypeTest; + +import junit.framework.TestCase; + +/** + * Test class for ConfigurationAttributePointer. + * + * @author Oliver Heger + * @version $Id$ + */ +public class TestConfigurationAttributePointer extends TestCase +{ + /** Constant for the name of the test attribute. */ + private static final String ATTR_NAME = "myAttr"; + + /** Constant for the value of the test attribute. */ + private static final String ATTR_VALUE = "myValue"; + + /** Stores the parent node pointer. */ + private ConfigurationNodePointer<ConfigurationNode> parent; + + /** The attribute pointer to be tested. */ + private ConfigurationAttributePointer<ConfigurationNode> pointer; + + @Override + protected void setUp() throws Exception + { + super.setUp(); + ConfigurationNode nd = new DefaultConfigurationNode("parent"); + ConfigurationNode attr = new DefaultConfigurationNode(ATTR_NAME, + ATTR_VALUE); + nd.addAttribute(attr); + parent = new ConfigurationNodePointer<ConfigurationNode>(nd, + new ConfigurationNodeHandler(), Locale.ENGLISH); + pointer = new ConfigurationAttributePointer<ConfigurationNode>(parent, + ATTR_NAME); + } + + /** + * Tests whether the correct pointer is returned. + */ + public void testGetParentPointer() + { + assertSame("Wrong parent pointer", parent, pointer.getParentPointer()); + } + + /** + * Tests querying the base value. + */ + public void testGetBaseValue() + { + assertEquals("Wrong base value", ATTR_VALUE, pointer.getBaseValue()); + } + + /** + * Tests querying the immediate node. + */ + public void testGetImmediateNode() + { + assertEquals("Wrong immediate node", parent.getConfigurationNode(), + pointer.getImmediateNode()); + } + + /** + * Tests the length. + */ + public void testGetLength() + { + assertEquals("Wrong length", 1, pointer.getLength()); + } + + /** + * Tests querying the node name. + */ + public void testGetName() + { + QName name = pointer.getName(); + assertEquals("Wrong name", ATTR_NAME, name.getName()); + assertNull("Prefix not null", name.getPrefix()); + } + + /** + * Tests the collection flag. + */ + public void testIsCollection() + { + assertFalse("Wrong collection flag", pointer.isCollection()); + } + + /** + * Tests the leaf flag. + */ + public void testIsLeaf() + { + assertTrue("Wrong leaf flag", pointer.isLeaf()); + } + + /** + * Tests the attribute flag. + */ + public void testIsAttribute() + { + assertTrue("Not an attribute", pointer.isAttribute()); + } + + /** + * Tests querying the attribute's value. + */ + public void testGetValue() + { + assertEquals("Wrong value", ATTR_VALUE, pointer.getValue()); + } + + /** + * Tests setting a new value. + */ + public void testSetValue() + { + pointer.setValue("newValue"); + List<ConfigurationNode> attrs = parent.getConfigurationNode() + .getAttributes(); + assertEquals("Wrong number of attributes", 1, attrs.size()); + assertEquals("Wrong attribute value", "newValue", attrs.get(0) + .getValue()); + } + + /** + * Tests querying an iterator for attributes. Result should be null. + */ + public void testAttributeIterator() + { + assertNull("Returned an attribute iterator", pointer + .attributeIterator(new QName(null, "test"))); + } + + /** + * Tests querying an iterator for children. Result should be null. + */ + public void testChildIterator() + { + assertNull("Returned an iterator for children", pointer.childIterator( + null, false, null)); + } + + /** + * Tests the testNode() method. + */ + public void testTestNode() + { + NodeTest test = new NodeTypeTest(Compiler.NODE_TYPE_TEXT); + assertTrue("No a text node", pointer.testNode(test)); + test = new NodeTypeTest(Compiler.NODE_TYPE_COMMENT); + assertFalse("A comment node", pointer.testNode(test)); + } +} Propchange: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationAttributePointer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationAttributePointer.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationAttributePointer.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Copied: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationIteratorAttributes.java (from r635359, commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationIteratorAttributes.java) URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationIteratorAttributes.java?p2=commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationIteratorAttributes.java&p1=commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationIteratorAttributes.java&r1=635359&r2=636506&rev=636506&view=diff ============================================================================== --- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationIteratorAttributes.java (original) +++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationIteratorAttributes.java Wed Mar 12 13:53:56 2008 @@ -14,21 +14,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.configuration2.tree.xpath; +package org.apache.commons.configuration2.expr.xpath; import java.util.List; import java.util.Locale; +import org.apache.commons.configuration2.expr.ConfigurationNodeHandler; import org.apache.commons.configuration2.tree.ConfigurationNode; import org.apache.commons.configuration2.tree.DefaultConfigurationNode; -import org.apache.commons.configuration2.tree.xpath.ConfigurationNodeIteratorAttribute; -import org.apache.commons.configuration2.tree.xpath.ConfigurationNodePointer; import org.apache.commons.jxpath.ri.QName; import org.apache.commons.jxpath.ri.model.NodePointer; /** * Test class for ConfigurationIteratorAttributes. - * + * * @author Oliver Heger * @version $Id$ */ @@ -36,18 +35,20 @@ { /** Constant for the name of another test attribute.*/ private static final String TEST_ATTR = "test"; - + /** Stores the node pointer of the test node.*/ - NodePointer pointer; - + private ConfigurationNodePointer<ConfigurationNode> pointer; + + @Override protected void setUp() throws Exception { super.setUp(); - + // Adds further attributes to the test node ConfigurationNode testNode = root.getChild(1); testNode.addAttribute(new DefaultConfigurationNode(TEST_ATTR, "yes")); - pointer = new ConfigurationNodePointer(testNode, Locale.getDefault()); + pointer = new ConfigurationNodePointer<ConfigurationNode>(testNode, + new ConfigurationNodeHandler(), Locale.getDefault()); } /** @@ -55,39 +56,48 @@ */ public void testIterateAllAttributes() { - ConfigurationNodeIteratorAttribute it = new ConfigurationNodeIteratorAttribute(pointer, new QName(null, "*")); + ConfigurationNodeIteratorAttribute<ConfigurationNode> it = new ConfigurationNodeIteratorAttribute<ConfigurationNode>( + pointer, new QName(null, "*")); assertEquals("Wrong number of attributes", 2, iteratorSize(it)); - List attrs = iterationElements(it); - assertEquals("Wrong first attribute", ATTR_NAME, ((ConfigurationNode) attrs.get(0)).getName()); - assertEquals("Wrong first attribute", TEST_ATTR, ((ConfigurationNode) attrs.get(1)).getName()); + List<NodePointer> attrs = iterationElements(it); + assertEquals("Wrong number of attributes", 2, attrs.size()); + assertEquals("Wrong 1st attribute", ATTR_NAME, attrs.get(0).getName() + .getName()); + assertEquals("Wrong 2nd attribute", TEST_ATTR, attrs.get(1).getName() + .getName()); + assertEquals("Wrong value of 2nd attribute", "yes", attrs.get(1).getValue()); } - + /** * Tests to iterate over attributes with a specific name. */ public void testIterateSpecificAttribute() { - ConfigurationNodeIteratorAttribute it = new ConfigurationNodeIteratorAttribute(pointer, new QName(null, TEST_ATTR)); + ConfigurationNodeIteratorAttribute<ConfigurationNode> it = new ConfigurationNodeIteratorAttribute<ConfigurationNode>( + pointer, new QName(null, TEST_ATTR)); assertEquals("Wrong number of attributes", 1, iteratorSize(it)); - assertEquals("Wrong attribute", TEST_ATTR, ((ConfigurationNode) iterationElements(it).get(0)).getName()); + assertEquals("Wrong attribute", TEST_ATTR, iterationElements(it).get(0) + .getName().getName()); } - + /** * Tests to iterate over non existing attributes. */ public void testIterateUnknownAttribute() { - ConfigurationNodeIteratorAttribute it = new ConfigurationNodeIteratorAttribute(pointer, new QName(null, "unknown")); + ConfigurationNodeIteratorAttribute<ConfigurationNode> it = new ConfigurationNodeIteratorAttribute<ConfigurationNode>( + pointer, new QName(null, "unknown")); assertEquals("Found attributes", 0, iteratorSize(it)); } - + /** * Tests iteration when a namespace is specified. This is not supported, so * the iteration should be empty. */ public void testIterateNamespace() { - ConfigurationNodeIteratorAttribute it = new ConfigurationNodeIteratorAttribute(pointer, new QName("test", "*")); + ConfigurationNodeIteratorAttribute<ConfigurationNode> it = new ConfigurationNodeIteratorAttribute<ConfigurationNode>( + pointer, new QName("test", "*")); assertEquals("Found attributes", 0, iteratorSize(it)); } } Copied: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationNodeIteratorChildren.java (from r635359, commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationNodeIteratorChildren.java) URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationNodeIteratorChildren.java?p2=commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationNodeIteratorChildren.java&p1=commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationNodeIteratorChildren.java&r1=635359&r2=636506&rev=636506&view=diff ============================================================================== --- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationNodeIteratorChildren.java (original) +++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationNodeIteratorChildren.java Wed Mar 12 13:53:56 2008 @@ -14,16 +14,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.configuration2.tree.xpath; +package org.apache.commons.configuration2.expr.xpath; -import java.util.Iterator; import java.util.List; import java.util.Locale; +import org.apache.commons.configuration2.expr.ConfigurationNodeHandler; import org.apache.commons.configuration2.tree.ConfigurationNode; import org.apache.commons.configuration2.tree.DefaultConfigurationNode; -import org.apache.commons.configuration2.tree.xpath.ConfigurationNodeIteratorChildren; -import org.apache.commons.configuration2.tree.xpath.ConfigurationNodePointer; import org.apache.commons.jxpath.ri.Compiler; import org.apache.commons.jxpath.ri.QName; import org.apache.commons.jxpath.ri.compiler.NodeNameTest; @@ -42,12 +40,14 @@ public class TestConfigurationNodeIteratorChildren extends AbstractXPathTest { /** Stores the node pointer to the root node. */ - NodePointer rootPointer; + private ConfigurationNodePointer<ConfigurationNode> rootPointer; + @Override protected void setUp() throws Exception { super.setUp(); - rootPointer = new ConfigurationNodePointer(root, Locale.getDefault()); + rootPointer = new ConfigurationNodePointer<ConfigurationNode>(root, + new ConfigurationNodeHandler(), Locale.getDefault()); } /** @@ -55,11 +55,10 @@ */ public void testIterateAllChildren() { - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, null, false, null); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, null, false, null); assertEquals("Wrong number of elements", CHILD_COUNT, iteratorSize(it)); - checkValues(it, new int[] - { 1, 2, 3, 4, 5 }); + checkValues(it, new int[] { 1, 2, 3, 4, 5 }); } /** @@ -67,11 +66,10 @@ */ public void testIterateReverse() { - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, null, true, null); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, null, true, null); assertEquals("Wrong number of elements", CHILD_COUNT, iteratorSize(it)); - checkValues(it, new int[] - { 5, 4, 3, 2, 1 }); + checkValues(it, new int[] { 5, 4, 3, 2, 1 }); } /** @@ -80,8 +78,8 @@ public void testIterateWithWildcardTest() { NodeNameTest test = new NodeNameTest(new QName(null, "*")); - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, test, false, null); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, test, false, null); assertEquals("Wrong number of elements", CHILD_COUNT, iteratorSize(it)); } @@ -92,8 +90,8 @@ public void testIterateWithPrefixTest() { NodeNameTest test = new NodeNameTest(new QName("prefix", "*")); - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, test, false, null); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, test, false, null); assertNull("Undefined node pointer not returned", it.getNodePointer()); assertEquals("Prefix was not evaluated", 0, iteratorSize(it)); } @@ -104,14 +102,12 @@ public void testIterateWithNameTest() { NodeNameTest test = new NodeNameTest(new QName(null, CHILD_NAME2)); - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, test, false, null); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, test, false, null); assertTrue("No children found", iteratorSize(it) > 0); - for (Iterator elemIt = iterationElements(it).iterator(); elemIt - .hasNext();) + for (NodePointer np : iterationElements(it)) { - assertEquals("Wrong child element", CHILD_NAME2, - ((ConfigurationNode) elemIt.next()).getName()); + assertEquals("Wrong child element", CHILD_NAME2, np.getName().getName()); } } @@ -122,8 +118,8 @@ public void testIterateWithUnknownTest() { NodeTest test = new ProcessingInstructionTest("test"); - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, test, false, null); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, test, false, null); assertEquals("Unknown test was not evaluated", 0, iteratorSize(it)); } @@ -133,8 +129,8 @@ public void testIterateWithNodeType() { NodeTypeTest test = new NodeTypeTest(Compiler.NODE_TYPE_NODE); - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, test, false, null); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, test, false, null); assertEquals("Node type not evaluated", CHILD_COUNT, iteratorSize(it)); } @@ -145,8 +141,8 @@ public void testIterateWithUnknownType() { NodeTypeTest test = new NodeTypeTest(Compiler.NODE_TYPE_COMMENT); - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, test, false, null); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, test, false, null); assertEquals("Unknown node type not evaluated", 0, iteratorSize(it)); } @@ -155,18 +151,19 @@ */ public void testIterateStartsWith() { - NodePointer childPointer = new ConfigurationNodePointer(rootPointer, - root.getChild(2)); - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, null, false, childPointer); + ConfigurationNodePointer<ConfigurationNode> childPointer = + new ConfigurationNodePointer<ConfigurationNode>(rootPointer, + root.getChild(2), new ConfigurationNodeHandler()); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, null, false, childPointer); assertEquals("Wrong start position", 0, it.getPosition()); - List nodes = iterationElements(it); + List<NodePointer> nodes = iterationElements(it); assertEquals("Wrong size of iteration", CHILD_COUNT - 3, nodes.size()); int index = 4; - for (Iterator it2 = nodes.iterator(); it2.hasNext(); index++) + for (NodePointer np : nodes) { - ConfigurationNode node = (ConfigurationNode) it2.next(); - assertEquals("Wrong node value", String.valueOf(index), node + ConfigurationNode node = (ConfigurationNode) np.getImmediateNode(); + assertEquals("Wrong node value", String.valueOf(index++), node .getValue()); } } @@ -176,10 +173,11 @@ */ public void testIterateStartsWithReverse() { - NodePointer childPointer = new ConfigurationNodePointer(rootPointer, - root.getChild(3)); - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, null, true, childPointer); + ConfigurationNodePointer<ConfigurationNode> childPointer = + new ConfigurationNodePointer<ConfigurationNode>(rootPointer, + root.getChild(3), new ConfigurationNodeHandler()); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, null, true, childPointer); int value = 3; for (int index = 1; it.setPosition(index); index++, value--) { @@ -197,10 +195,11 @@ */ public void testIterateStartsWithInvalid() { - NodePointer childPointer = new ConfigurationNodePointer(rootPointer, - new DefaultConfigurationNode("newNode")); - ConfigurationNodeIteratorChildren it = new ConfigurationNodeIteratorChildren( - rootPointer, null, false, childPointer); + ConfigurationNodePointer<ConfigurationNode> childPointer = + new ConfigurationNodePointer<ConfigurationNode>(rootPointer, + new DefaultConfigurationNode("newNode"), new ConfigurationNodeHandler()); + ConfigurationNodeIteratorChildren<ConfigurationNode> it = + new ConfigurationNodeIteratorChildren<ConfigurationNode>(rootPointer, null, false, childPointer); assertEquals("Wrong size of iteration", CHILD_COUNT, iteratorSize(it)); it.setPosition(1); ConfigurationNode node = (ConfigurationNode) it.getNodePointer() @@ -219,10 +218,10 @@ */ private void checkValues(NodeIterator iterator, int[] expectedIndices) { - List nodes = iterationElements(iterator); + List<NodePointer> nodes = iterationElements(iterator); for (int i = 0; i < expectedIndices.length; i++) { - ConfigurationNode child = (ConfigurationNode) nodes.get(i); + ConfigurationNode child = (ConfigurationNode) nodes.get(i).getImmediateNode(); assertTrue("Wrong index value for child " + i, child.getValue() .toString().endsWith(String.valueOf(expectedIndices[i]))); } Copied: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationNodePointer.java (from r635359, commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationNodePointer.java) URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationNodePointer.java?p2=commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationNodePointer.java&p1=commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationNodePointer.java&r1=635359&r2=636506&rev=636506&view=diff ============================================================================== --- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/tree/xpath/TestConfigurationNodePointer.java (original) +++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/expr/xpath/TestConfigurationNodePointer.java Wed Mar 12 13:53:56 2008 @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.configuration2.tree.xpath; +package org.apache.commons.configuration2.expr.xpath; import java.util.Locale; +import org.apache.commons.configuration2.expr.ConfigurationNodeHandler; import org.apache.commons.configuration2.tree.ConfigurationNode; import org.apache.commons.configuration2.tree.DefaultConfigurationNode; -import org.apache.commons.configuration2.tree.xpath.ConfigurationNodePointer; import org.apache.commons.jxpath.ri.QName; import org.apache.commons.jxpath.ri.model.NodeIterator; import org.apache.commons.jxpath.ri.model.NodePointer; @@ -34,12 +34,18 @@ public class TestConfigurationNodePointer extends AbstractXPathTest { /** Stores the node pointer to be tested. */ - NodePointer pointer; + private ConfigurationNodePointer<ConfigurationNode> pointer; + /** Stores the node handler to be used for the node pointers.*/ + private ConfigurationNodeHandler handler; + + @Override protected void setUp() throws Exception { super.setUp(); - pointer = new ConfigurationNodePointer(root, Locale.getDefault()); + handler = new ConfigurationNodeHandler(); + pointer = new ConfigurationNodePointer<ConfigurationNode>(root, + handler, Locale.getDefault()); } /** @@ -47,8 +53,10 @@ */ public void testCompareChildNodePointersChildren() { - NodePointer p1 = new ConfigurationNodePointer(pointer, root.getChild(1)); - NodePointer p2 = new ConfigurationNodePointer(pointer, root.getChild(3)); + NodePointer p1 = new ConfigurationNodePointer<ConfigurationNode>( + pointer, root.getChild(1), handler); + NodePointer p2 = new ConfigurationNodePointer<ConfigurationNode>( + pointer, root.getChild(3), handler); assertEquals("Incorrect order", -1, pointer.compareChildNodePointers( p1, p2)); assertEquals("Incorrect symmetric order", 1, pointer @@ -56,34 +64,38 @@ } /** - * Tests comparing child node pointers for attribute nodes. + * Tests comparing child node pointers for attribute nodes. Attributes are + * not taken into account, so result should be 0. */ public void testCompareChildNodePointersAttributes() { root.addAttribute(new DefaultConfigurationNode("attr1", "test1")); root.addAttribute(new DefaultConfigurationNode("attr2", "test2")); - NodePointer p1 = new ConfigurationNodePointer(pointer, root - .getAttribute(0)); - NodePointer p2 = new ConfigurationNodePointer(pointer, root - .getAttribute(1)); - assertEquals("Incorrect order", -1, pointer.compareChildNodePointers( + NodePointer p1 = new ConfigurationNodePointer<ConfigurationNode>(pointer, + root.getAttribute(0), handler); + NodePointer p2 = new ConfigurationNodePointer<ConfigurationNode>(pointer, + root.getAttribute(1), handler); + assertEquals("Incorrect order", 0, pointer.compareChildNodePointers( p1, p2)); - assertEquals("Incorrect symmetric order", 1, pointer + assertEquals("Incorrect symmetric order", 0, pointer .compareChildNodePointers(p2, p1)); } /** - * tests comparing child node pointers for both child and attribute nodes. + * Tests comparing child node pointers for both child and attribute nodes. + * Attributes are not taken into account, so the child node should be + * sorted first. */ public void testCompareChildNodePointersChildAndAttribute() { root.addAttribute(new DefaultConfigurationNode("attr1", "test1")); - NodePointer p1 = new ConfigurationNodePointer(pointer, root.getChild(2)); - NodePointer p2 = new ConfigurationNodePointer(pointer, root - .getAttribute(0)); - assertEquals("Incorrect order for attributes", 1, pointer + NodePointer p1 = new ConfigurationNodePointer<ConfigurationNode>(pointer, + root.getChild(2), handler); + NodePointer p2 = new ConfigurationNodePointer<ConfigurationNode>(pointer, + root.getAttribute(0), handler); + assertEquals("Incorrect order for attributes", -1, pointer .compareChildNodePointers(p1, p2)); - assertEquals("Incorrect symmetric order for attributes", -1, pointer + assertEquals("Incorrect symmetric order for attributes", 1, pointer .compareChildNodePointers(p2, p1)); } @@ -94,8 +106,10 @@ public void testCompareChildNodePointersInvalidChildren() { ConfigurationNode node = root.getChild(1); - NodePointer p1 = new ConfigurationNodePointer(pointer, node.getChild(1)); - NodePointer p2 = new ConfigurationNodePointer(pointer, node.getChild(3)); + NodePointer p1 = new ConfigurationNodePointer<ConfigurationNode>(pointer, + node.getChild(1), handler); + NodePointer p2 = new ConfigurationNodePointer<ConfigurationNode>(pointer, + node.getChild(3), handler); assertEquals("Non child nodes could be sorted", 0, pointer .compareChildNodePointers(p1, p2)); assertEquals("Non child nodes could be sorted symmetrically", 0, @@ -103,33 +117,48 @@ } /** - * Tests the attribute flag. + * Tests the attribute flag. Node pointers of this type never represent + * attributes. So the result should always be false. */ public void testIsAttribute() { ConfigurationNode node = new DefaultConfigurationNode("test", "testval"); - NodePointer p = new ConfigurationNodePointer(pointer, node); + NodePointer p = new ConfigurationNodePointer<ConfigurationNode>(pointer, node, handler); assertFalse("Node is an attribute", p.isAttribute()); node.setAttribute(true); - assertTrue("Node is no attribute", p.isAttribute()); + assertFalse("Node is now an attribute", p.isAttribute()); } /** - * Tests if leaves in the tree are correctly detected. + * Tests isLeaf() for a node with attributes. */ - public void testIsLeave() + public void testIsLeafAttributes() { - assertFalse("Root node is leaf", pointer.isLeaf()); + ConfigurationNode node = new DefaultConfigurationNode("test"); + node.addAttribute(new DefaultConfigurationNode("attr", "test")); + NodePointer p = new ConfigurationNodePointer<ConfigurationNode>(pointer, node, handler); + assertFalse("Node is a leaf", p.isLeaf()); + } - NodePointer p = pointer; - while (!p.isLeaf()) - { - ConfigurationNode node = (ConfigurationNode) p.getNode(); - assertTrue("Node has no children", node.getChildrenCount() > 0); - p = new ConfigurationNodePointer(p, node.getChild(0)); - } - assertTrue("Node has children", ((ConfigurationNode) p.getNode()) - .getChildrenCount() == 0); + /** + * Tests isLeaf() for a node with children. + */ + public void testIsLeafChildren() + { + ConfigurationNode node = new DefaultConfigurationNode("test"); + node.addChild(new DefaultConfigurationNode("child", "test")); + NodePointer p = new ConfigurationNodePointer<ConfigurationNode>(pointer, node, handler); + assertFalse("Node is a leaf", p.isLeaf()); + } + + /** + * Tests isLeaf() for a real leaf. + */ + public void testIsLeafTrue() + { + ConfigurationNode node = new DefaultConfigurationNode("test"); + NodePointer p = new ConfigurationNodePointer<ConfigurationNode>(pointer, node, handler); + assertTrue("Node is no leaf", p.isLeaf()); } /** @@ -167,9 +196,8 @@ { NodePointer pattr = it.getNodePointer(); assertTrue("Node pointer is no attribute", pattr.isAttribute()); - assertEquals("Wrong attribute", node.getAttribute(index - 1), pattr - .getNode()); - checkIterators(pattr); + assertEquals("Wrong attribute", node.getAttribute(index - 1).getValue(), + pattr.getValue()); } } }