From: <bo...@us...> - 2010-08-19 14:28:57
|
Revision: 430 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=430&view=rev Author: bodewig Date: 2010-08-19 14:28:50 +0000 (Thu, 19 Aug 2010) Log Message: ----------- schema location comparisons 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-19 14:04:16 UTC (rev 429) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java.xml 2010-08-19 14:28:50 UTC (rev 430) @@ -218,6 +218,16 @@ testExpr="Boolean.TRUE"/> <literal><![CDATA[ } +]]></literal> + <compareExpr type="SCHEMA_LOCATION" + controlExpr="controlAttributes.schemaLocation != null ? controlAttributes.schemaLocation.getValue() : null" + testExpr="testAttributes.schemaLocation != null ? testAttributes.schemaLocation.getValue() : null" + /> + <compareExpr type="NO_NAMESPACE_SCHEMA_LOCATION" + controlExpr="controlAttributes.noNamespaceSchemaLocation != null ? controlAttributes.noNamespaceSchemaLocation.getValue() : null" + testExpr="testAttributes.noNamespaceSchemaLocation != null ? testAttributes.noNamespaceSchemaLocation.getValue() : null" + /> + <literal><![CDATA[ return lastResult; } @@ -320,9 +330,9 @@ private final List<Attr> remainingAttributes; private Attributes(Attr schemaLocation, Attr noNamespaceSchemaLocation, List<Attr> remainingAttributes) { - this.schemaLocation = schemaLocation; + this.schemaLocation = schemaLocation; this.noNamespaceSchemaLocation = noNamespaceSchemaLocation; - this.remainingAttributes = remainingAttributes; + this.remainingAttributes = remainingAttributes; } } Modified: trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.xml =================================================================== --- trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.xml 2010-08-19 14:04:16 UTC (rev 429) +++ trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.xml 2010-08-19 14:28:50 UTC (rev 430) @@ -211,6 +211,14 @@ <literal><![CDATA[ } ]]></literal> + <compareExpr type="SCHEMA_LOCATION" + controlExpr="controlAttributes.SchemaLocation != null ? controlAttributes.SchemaLocation.Value : null" + testExpr="testAttributes.SchemaLocation != null ? testAttributes.SchemaLocation.Value : null" + /> + <compareExpr type="NO_NAMESPACE_SCHEMA_LOCATION" + controlExpr="controlAttributes.NoNamespaceSchemaLocation != null ? controlAttributes.NoNamespaceSchemaLocation.Value : null" + testExpr="testAttributes.NoNamespaceSchemaLocation != null ? testAttributes.NoNamespaceSchemaLocation.Value : null" + /> <literal><![CDATA[ return lastResult; } @@ -316,9 +324,9 @@ internal Attributes(XmlAttribute schemaLocation, XmlAttribute noNamespaceSchemaLocation, IList<XmlAttribute> remainingAttributes) { - this.SchemaLocation = schemaLocation; + this.SchemaLocation = schemaLocation; this.NoNamespaceSchemaLocation = noNamespaceSchemaLocation; - this.RemainingAttributes = remainingAttributes; + this.RemainingAttributes = remainingAttributes; } } 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-19 14:04:16 UTC (rev 429) +++ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/DOMDifferenceEngineTest.java 2010-08-19 14:28:50 UTC (rev 430) @@ -543,4 +543,53 @@ assertEquals(ComparisonResult.CRITICAL, d.compareNodes(e1, e2)); assertEquals(1, ex.invoked); } + + @Test public void schemaLocationDifferences() { + Element e1 = doc.createElement("foo"); + Element e2 = doc.createElement("foo"); + e1.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", + "schemaLocation", "somewhere"); + e2.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", + "schemaLocation", "somewhere else"); + + DOMDifferenceEngine d = new DOMDifferenceEngine(); + DiffExpecter ex = new DiffExpecter(ComparisonType.SCHEMA_LOCATION); + d.addDifferenceListener(ex); + d.setDifferenceEvaluator(new DifferenceEvaluator() { + public ComparisonResult evaluate(Comparison comparison, + ComparisonResult outcome) { + if (comparison.getType() == ComparisonType.SCHEMA_LOCATION) { + assertEquals(ComparisonResult.DIFFERENT, outcome); + return ComparisonResult.CRITICAL; + } + assertEquals(ComparisonResult.EQUAL, outcome); + return ComparisonResult.EQUAL; + } + }); + assertEquals(ComparisonResult.CRITICAL, d.compareNodes(e1, e2)); + assertEquals(1, ex.invoked); + + e1 = doc.createElement("foo"); + e2 = doc.createElement("foo"); + e1.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", + "noNamespaceSchemaLocation", "somewhere"); + e2.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", + "noNamespaceSchemaLocation", "somewhere else"); + d = new DOMDifferenceEngine(); + ex = new DiffExpecter(ComparisonType.NO_NAMESPACE_SCHEMA_LOCATION); + d.addDifferenceListener(ex); + d.setDifferenceEvaluator(new DifferenceEvaluator() { + public ComparisonResult evaluate(Comparison comparison, + ComparisonResult outcome) { + if (comparison.getType() == ComparisonType.NO_NAMESPACE_SCHEMA_LOCATION) { + assertEquals(ComparisonResult.DIFFERENT, outcome); + return ComparisonResult.CRITICAL; + } + assertEquals(ComparisonResult.EQUAL, outcome); + return ComparisonResult.EQUAL; + } + }); + 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-19 14:04:16 UTC (rev 429) +++ trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs 2010-08-19 14:28:50 UTC (rev 430) @@ -540,5 +540,55 @@ Assert.AreEqual(ComparisonResult.CRITICAL, d.CompareNodes(e1, e2)); Assert.AreEqual(1, ex.invoked); } + + [Test] + public void SchemaLocationDifferences() { + XmlElement e1 = doc.CreateElement("foo"); + XmlElement e2 = doc.CreateElement("foo"); + e1.SetAttribute("schemaLocation", + "http://www.w3.org/2001/XMLSchema-instance", + "somewhere"); + e2.SetAttribute("schemaLocation", + "http://www.w3.org/2001/XMLSchema-instance", + "somewhere else"); + + DOMDifferenceEngine d = new DOMDifferenceEngine(); + DiffExpecter ex = new DiffExpecter(ComparisonType.SCHEMA_LOCATION); + d.DifferenceListener += ex.ComparisonPerformed; + d.DifferenceEvaluator = delegate(Comparison comparison, + ComparisonResult outcome) { + if (comparison.Type == ComparisonType.SCHEMA_LOCATION) { + Assert.AreEqual(ComparisonResult.DIFFERENT, outcome); + return ComparisonResult.CRITICAL; + } + Assert.AreEqual(ComparisonResult.EQUAL, outcome); + return ComparisonResult.EQUAL; + }; + Assert.AreEqual(ComparisonResult.CRITICAL, d.CompareNodes(e1, e2)); + Assert.AreEqual(1, ex.invoked); + + e1 = doc.CreateElement("foo"); + e2 = doc.CreateElement("foo"); + e1.SetAttribute("noNamespaceSchemaLocation", + "http://www.w3.org/2001/XMLSchema-instance", + "somewhere"); + e2.SetAttribute("noNamespaceSchemaLocation", + "http://www.w3.org/2001/XMLSchema-instance", + "somewhere else"); + d = new DOMDifferenceEngine(); + ex = new DiffExpecter(ComparisonType.NO_NAMESPACE_SCHEMA_LOCATION); + d.DifferenceListener += ex.ComparisonPerformed; + d.DifferenceEvaluator = delegate(Comparison comparison, + ComparisonResult outcome) { + if (comparison.Type == ComparisonType.NO_NAMESPACE_SCHEMA_LOCATION) { + Assert.AreEqual(ComparisonResult.DIFFERENT, outcome); + return ComparisonResult.CRITICAL; + } + Assert.AreEqual(ComparisonResult.EQUAL, outcome); + return ComparisonResult.EQUAL; + }; + 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. |