From: <bo...@us...> - 2010-08-31 09:18:36
|
Revision: 442 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=442&view=rev Author: bodewig Date: 2010-08-31 09:18:25 +0000 (Tue, 31 Aug 2010) Log Message: ----------- ELEMENT_TAG_NAME differences must not use prefix Modified Paths: -------------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java.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 08:36:50 UTC (rev 441) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java.xml 2010-08-31 09:18:25 UTC (rev 442) @@ -210,7 +210,9 @@ XPathContext testContext) { ]]></literal> <lastResultDef/> - <compare type="ELEMENT_TAG_NAME" property="getTagName()"/> + <compareExpr type="ELEMENT_TAG_NAME" + controlExpr="Nodes.getQName(control).getLocalPart()" + testExpr="Nodes.getQName(test).getLocalPart()"/> <literal><![CDATA[ Attributes controlAttributes = splitAttributes(control.getAttributes()); controlContext 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 08:36:50 UTC (rev 441) +++ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/DOMDifferenceEngineTest.java 2010-08-31 09:18:25 UTC (rev 442) @@ -701,4 +701,30 @@ e2, new XPathContext())); assertEquals(1, ex.invoked); } + + @Test public void compareElementsNS() { + DOMDifferenceEngine d = new DOMDifferenceEngine(); + DiffExpecter ex = new DiffExpecter(ComparisonType.ELEMENT_TAG_NAME); + d.addDifferenceListener(ex); + DifferenceEvaluator ev = new DifferenceEvaluator() { + public ComparisonResult evaluate(Comparison comparison, + ComparisonResult outcome) { + if (comparison.getType() == ComparisonType.NAMESPACE_PREFIX) { + return ComparisonResult.EQUAL; + } + return DifferenceEvaluators.DefaultStopWhenDifferent + .evaluate(comparison, outcome); + } + }; + d.setDifferenceEvaluator(ev); + Element e1 = doc.createElementNS("urn:xmlunit:test", "foo"); + e1.setPrefix("p1"); + Element e2 = doc.createElementNS("urn:xmlunit:test", "foo"); + e2.setPrefix("p2"); + assertEquals(ComparisonResult.EQUAL, + d.compareNodes(e1, new XPathContext(), + e2, new XPathContext())); + assertEquals(0, ex.invoked); + } + } Modified: trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs =================================================================== --- trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs 2010-08-31 08:36:50 UTC (rev 441) +++ trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs 2010-08-31 09:18:25 UTC (rev 442) @@ -694,5 +694,28 @@ e2, new XPathContext())); Assert.AreEqual(1, ex.invoked); } + + [Test] + public void CompareElementsNS() { + DOMDifferenceEngine d = new DOMDifferenceEngine(); + DiffExpecter ex = new DiffExpecter(ComparisonType.ELEMENT_TAG_NAME); + d.DifferenceListener += ex.ComparisonPerformed; + DifferenceEvaluator ev = delegate(Comparison comparison, + ComparisonResult outcome) { + if (comparison.Type == ComparisonType.NAMESPACE_PREFIX) { + return ComparisonResult.EQUAL; + } + return DifferenceEvaluators.DefaultStopWhenDifferent(comparison, + outcome); + }; + d.DifferenceEvaluator = ev; + + XmlElement e1 = doc.CreateElement("p1", "foo", "urn:xmlunit:test"); + XmlElement e2 = doc.CreateElement("p1", "foo", "urn:xmlunit:test"); + Assert.AreEqual(ComparisonResult.EQUAL, + d.CompareNodes(e1, new XPathContext(), + e2, new XPathContext())); + Assert.AreEqual(0, ex.invoked); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |