From: <bo...@us...> - 2010-08-18 14:45:56
|
Revision: 428 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=428&view=rev Author: bodewig Date: 2010-08-18 14:45:50 +0000 (Wed, 18 Aug 2010) Log Message: ----------- use element selector during recursion Modified Paths: -------------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java.xml trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.xml trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/DOMDifferenceEngineTest.java trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs Modified: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java.xml =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java.xml 2010-08-18 14:27:27 UTC (rev 427) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java.xml 2010-08-18 14:45:50 UTC (rev 428) @@ -328,6 +328,10 @@ } private boolean nodesMatch(final Node n1, final Node n2) { + if (n1 instanceof Element && n2 instanceof Element) { + return getElementSelector() + .canBeCompared((Element) n1, (Element) n2); + } ComparisonResult r = compare(new Comparison(ComparisonType.NODE_TYPE, n1, null, n1.getNodeType(), Modified: trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.xml =================================================================== --- trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.xml 2010-08-18 14:27:27 UTC (rev 427) +++ trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.xml 2010-08-18 14:45:50 UTC (rev 428) @@ -328,6 +328,9 @@ } private bool NodesMatch(XmlNode n1, XmlNode n2) { + if (n1 is XmlElement && n2 is XmlElement) { + return ElementSelector(n1 as XmlElement, n2 as XmlElement); + } ComparisonResult r = Compare(new Comparison(ComparisonType.NODE_TYPE, n1, null, n1.NodeType, Modified: trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/DOMDifferenceEngineTest.java =================================================================== --- trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/DOMDifferenceEngineTest.java 2010-08-18 14:27:27 UTC (rev 427) +++ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/DOMDifferenceEngineTest.java 2010-08-18 14:45:50 UTC (rev 428) @@ -520,4 +520,27 @@ assertEquals(ComparisonResult.EQUAL, d.compareNodes(e1, e2)); assertEquals(ComparisonResult.EQUAL, d.compareNodes(e2, e1)); } + + @Test public void recursionUsesElementSelector() { + Element e1 = doc.createElement("foo"); + Element e2 = doc.createElement("foo"); + Element e3 = doc.createElement("bar"); + e1.appendChild(e3); + Element e4 = doc.createElement("baz"); + e2.appendChild(e4); + DOMDifferenceEngine d = new DOMDifferenceEngine(); + DiffExpecter ex = new DiffExpecter(ComparisonType.ELEMENT_TAG_NAME); + d.addDifferenceListener(ex); + d.setDifferenceEvaluator(DifferenceEvaluators.DefaultStopWhenDifferent); + assertEquals(ComparisonResult.CRITICAL, d.compareNodes(e1, e2)); + assertEquals(1, ex.invoked); + + d = new DOMDifferenceEngine(); + d.setElementSelector(ElementSelectors.byName); + ex = new DiffExpecter(ComparisonType.CHILD_LOOKUP); + d.addDifferenceListener(ex); + d.setDifferenceEvaluator(DifferenceEvaluators.DefaultStopWhenDifferent); + assertEquals(ComparisonResult.CRITICAL, d.compareNodes(e1, e2)); + assertEquals(1, ex.invoked); + } } Modified: trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs =================================================================== --- trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs 2010-08-18 14:27:27 UTC (rev 427) +++ trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs 2010-08-18 14:45:50 UTC (rev 428) @@ -502,7 +502,7 @@ } [Test] - public void textAndCDataMatchRecursively() { + public void TextAndCDataMatchRecursively() { XmlElement e1 = doc.CreateElement("foo"); XmlElement e2 = doc.CreateElement("foo"); XmlText fooText = doc.CreateTextNode("foo"); @@ -513,5 +513,31 @@ Assert.AreEqual(ComparisonResult.EQUAL, d.CompareNodes(e1, e2)); Assert.AreEqual(ComparisonResult.EQUAL, d.CompareNodes(e2, e1)); } + + [Test] + public void RecursionUsesElementSelector() { + XmlElement e1 = doc.CreateElement("foo"); + XmlElement e2 = doc.CreateElement("foo"); + XmlElement e3 = doc.CreateElement("bar"); + e1.AppendChild(e3); + XmlElement e4 = doc.CreateElement("baz"); + e2.AppendChild(e4); + DOMDifferenceEngine d = new DOMDifferenceEngine(); + DiffExpecter ex = new DiffExpecter(ComparisonType.ELEMENT_TAG_NAME); + d.DifferenceListener += ex.ComparisonPerformed; + d.DifferenceEvaluator = + DifferenceEvaluators.DefaultStopWhenDifferent; + Assert.AreEqual(ComparisonResult.CRITICAL, d.CompareNodes(e1, e2)); + Assert.AreEqual(1, ex.invoked); + + d = new DOMDifferenceEngine(); + d.ElementSelector = ElementSelectors.ByName; + ex = new DiffExpecter(ComparisonType.CHILD_LOOKUP); + d.DifferenceListener += ex.ComparisonPerformed; + d.DifferenceEvaluator = + DifferenceEvaluators.DefaultStopWhenDifferent; + Assert.AreEqual(ComparisonResult.CRITICAL, d.CompareNodes(e1, e2)); + Assert.AreEqual(1, ex.invoked); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |