From: <bo...@us...> - 2010-08-31 14:18:02
|
Revision: 444 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=444&view=rev Author: bodewig Date: 2010-08-31 14:17:56 +0000 (Tue, 31 Aug 2010) Log Message: ----------- add forgotten child_nodelist_sequence comparison 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-31 10:15:01 UTC (rev 443) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java.xml 2010-08-31 14:17:56 UTC (rev 444) @@ -326,12 +326,16 @@ ]]></literal> testContext.navigateToChild(testMatch.index); try { + Integer testIndex = Integer.valueOf(testMatch.index); + <compareExpr type="CHILD_NODELIST_SEQUENCE" + controlExpr="Integer.valueOf(i)" + testExpr="testIndex" + /> <compareMethodExpr method="compareNodes" controlExpr="controlList.get(i)" testExpr="testMatch.node"/> <literal><![CDATA[ - unmatchedTestIndexes - .remove(Integer.valueOf(testMatch.index)); + unmatchedTestIndexes.remove(testIndex); lastMatch = testMatch; } finally { testContext.navigateToParent(); Modified: trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.xml =================================================================== --- trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.xml 2010-08-31 10:15:01 UTC (rev 443) +++ trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.xml 2010-08-31 14:17:56 UTC (rev 444) @@ -365,6 +365,10 @@ testContext.NavigateToChild(testMatch.Index); try { ]]></literal> + <compareExpr type="CHILD_NODELIST_SEQUENCE" + controlExpr="i" + testExpr="testMatch.Index" + /> <compareMethodExpr method="CompareNodes" controlExpr="controlList[i]" testExpr="testMatch.Node"/> 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-31 10:15:01 UTC (rev 443) +++ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/DOMDifferenceEngineTest.java 2010-08-31 14:17:56 UTC (rev 444) @@ -727,4 +727,41 @@ assertEquals(0, ex.invoked); } + @Test public void childNodeListSequence() { + Element e1 = doc.createElement("foo"); + Element e3 = doc.createElement("bar"); + Element e4 = doc.createElement("baz"); + e1.appendChild(e3); + e1.appendChild(e4); + + Element e2 = doc.createElement("foo"); + Element e5 = doc.createElement("bar"); + Element e6 = doc.createElement("baz"); + e2.appendChild(e6); + e2.appendChild(e5); + + DOMDifferenceEngine d = new DOMDifferenceEngine(); + DiffExpecter ex = new DiffExpecter(ComparisonType.CHILD_NODELIST_SEQUENCE, + "/bar[1]", "/bar[1]"); + d.addDifferenceListener(ex); + DifferenceEvaluator ev = new DifferenceEvaluator() { + public ComparisonResult evaluate(Comparison comparison, + ComparisonResult outcome) { + if (outcome != ComparisonResult.EQUAL + && comparison.getType() == ComparisonType.CHILD_NODELIST_SEQUENCE) { + return ComparisonResult.CRITICAL; + } + return DifferenceEvaluators.DefaultStopWhenDifferent + .evaluate(comparison, outcome); + } + }; + d.setDifferenceEvaluator(ev); + d.setElementSelector(ElementSelectors.byName); + + assertEquals(ComparisonResult.CRITICAL, + d.compareNodes(e1, new XPathContext(), + e2, new XPathContext())); + 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-31 10:15:01 UTC (rev 443) +++ trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs 2010-08-31 14:17:56 UTC (rev 444) @@ -717,5 +717,41 @@ e2, new XPathContext())); Assert.AreEqual(0, ex.invoked); } + + [Test] + public void ChildNodeListSequence() { + XmlElement e1 = doc.CreateElement("foo"); + XmlElement e3 = doc.CreateElement("bar"); + XmlElement e4 = doc.CreateElement("baz"); + e1.AppendChild(e3); + e1.AppendChild(e4); + + XmlElement e2 = doc.CreateElement("foo"); + XmlElement e5 = doc.CreateElement("bar"); + XmlElement e6 = doc.CreateElement("baz"); + e2.AppendChild(e6); + e2.AppendChild(e5); + + DOMDifferenceEngine d = new DOMDifferenceEngine(); + DiffExpecter ex = new DiffExpecter(ComparisonType.CHILD_NODELIST_SEQUENCE, + "/bar[1]", "/bar[1]"); + d.DifferenceListener += ex.ComparisonPerformed; + DifferenceEvaluator ev = delegate(Comparison comparison, + ComparisonResult outcome) { + if (outcome != ComparisonResult.EQUAL + && comparison.Type == ComparisonType.CHILD_NODELIST_SEQUENCE) { + return ComparisonResult.CRITICAL; + } + return DifferenceEvaluators.DefaultStopWhenDifferent(comparison, + outcome); + }; + d.DifferenceEvaluator = ev; + d.ElementSelector = ElementSelectors.ByName; + + Assert.AreEqual(ComparisonResult.CRITICAL, + d.CompareNodes(e1, new XPathContext(), + e2, new XPathContext())); + Assert.AreEqual(1, ex.invoked); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |