From: <bo...@us...> - 2010-06-28 11:49:15
|
Revision: 407 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=407&view=rev Author: bodewig Date: 2010-06-28 11:49:08 +0000 (Mon, 28 Jun 2010) Log Message: ----------- extract an abstract difference engine implementation Modified Paths: -------------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.cs trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/DOMDifferenceEngineTest.java trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs Added Paths: ----------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/AbstractDifferenceEngine.java trunk/xmlunit/src/main/net-core/diff/AbstractDifferenceEngine.cs trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/AbstractDifferenceEngineTest.java trunk/xmlunit/src/tests/net-core/diff/AbstractDifferenceEngineTest.cs Copied: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/AbstractDifferenceEngine.java (from rev 406, trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java) =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/AbstractDifferenceEngine.java (rev 0) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/AbstractDifferenceEngine.java 2010-06-28 11:49:08 UTC (rev 407) @@ -0,0 +1,88 @@ +/* + This file is licensed 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 net.sf.xmlunit.diff; + +/** + * Useful base-implementation of some parts of the DifferenceEngine + * interface. + */ +public abstract class AbstractDifferenceEngine implements DifferenceEngine { + private final ComparisonListenerSupport listeners = + new ComparisonListenerSupport(); + private ElementSelector elementSelector = ElementSelectors.Default; + private DifferenceEvaluator diffEvaluator = DifferenceEvaluators.Default; + + public void addComparisonListener(ComparisonListener l) { + if (l == null) { + throw new IllegalArgumentException("listener must not be null"); + } + listeners.addComparisonListener(l); + } + + public void addMatchListener(ComparisonListener l) { + if (l == null) { + throw new IllegalArgumentException("listener must not be null"); + } + listeners.addMatchListener(l); + } + + public void addDifferenceListener(ComparisonListener l) { + if (l == null) { + throw new IllegalArgumentException("listener must not be null"); + } + listeners.addDifferenceListener(l); + } + + public void setElementSelector(ElementSelector s) { + if (s == null) { + throw new IllegalArgumentException("element selector must" + + " not be null"); + } + elementSelector = s; + } + + public ElementSelector getElementSelector() { + return elementSelector; + } + + public void setDifferenceEvaluator(DifferenceEvaluator e) { + if (e == null) { + throw new IllegalArgumentException("difference evaluator must" + + " not be null"); + } + diffEvaluator = e; + } + + public DifferenceEvaluator getDifferenceEvaluator() { + return diffEvaluator; + } + + /** + * Compares the detail values for object equality, lets the + * difference evaluator evaluate the result, notifies all + * listeners and returns the outcome. + */ + protected final ComparisonResult compare(Comparison comp) { + Object controlValue = comp.getControlNodeDetails().getValue(); + Object testValue = comp.getTestNodeDetails().getValue(); + boolean equal = controlValue == null + ? testValue == null : controlValue.equals(testValue); + ComparisonResult initial = + equal ? ComparisonResult.EQUAL : ComparisonResult.DIFFERENT; + ComparisonResult altered = + getDifferenceEvaluator().evaluate(comp, initial); + listeners.fireComparisonPerformed(comp, altered); + return altered; + } +} Modified: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java 2010-06-25 15:35:43 UTC (rev 406) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/diff/DOMDifferenceEngine.java 2010-06-28 11:49:08 UTC (rev 407) @@ -26,49 +26,8 @@ /** * Difference engine based on DOM. */ -public final class DOMDifferenceEngine implements DifferenceEngine { - private final ComparisonListenerSupport listeners = - new ComparisonListenerSupport(); - private ElementSelector elementSelector = ElementSelectors.Default; - private DifferenceEvaluator diffEvaluator = DifferenceEvaluators.Default; +public final class DOMDifferenceEngine extends AbstractDifferenceEngine { - public void addComparisonListener(ComparisonListener l) { - if (l == null) { - throw new IllegalArgumentException("listener must not be null"); - } - listeners.addComparisonListener(l); - } - - public void addMatchListener(ComparisonListener l) { - if (l == null) { - throw new IllegalArgumentException("listener must not be null"); - } - listeners.addMatchListener(l); - } - - public void addDifferenceListener(ComparisonListener l) { - if (l == null) { - throw new IllegalArgumentException("listener must not be null"); - } - listeners.addDifferenceListener(l); - } - - public void setElementSelector(ElementSelector s) { - if (s == null) { - throw new IllegalArgumentException("element selector must" - + " not be null"); - } - elementSelector = s; - } - - public void setDifferenceEvaluator(DifferenceEvaluator e) { - if (e == null) { - throw new IllegalArgumentException("difference evaluator must" - + " not be null"); - } - diffEvaluator = e; - } - public void compare(Source control, Source test) { if (control == null) { throw new IllegalArgumentException("control must not be null"); @@ -257,23 +216,4 @@ ComparisonResult compareNodeLists(NodeList control, NodeList test) { return ComparisonResult.EQUAL; } - - /** - * Compares the detail values for object equality, lets the - * difference evaluator evaluate the result, notifies all - * listeners and returns the outcome. - * - * <p>package private to support tests.</p> - */ - ComparisonResult compare(Comparison comp) { - Object controlValue = comp.getControlNodeDetails().getValue(); - Object testValue = comp.getTestNodeDetails().getValue(); - boolean equal = controlValue == null - ? testValue == null : controlValue.equals(testValue); - ComparisonResult initial = - equal ? ComparisonResult.EQUAL : ComparisonResult.DIFFERENT; - ComparisonResult altered = diffEvaluator.evaluate(comp, initial); - listeners.fireComparisonPerformed(comp, altered); - return altered; - } } Copied: trunk/xmlunit/src/main/net-core/diff/AbstractDifferenceEngine.cs (from rev 406, trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.cs) =================================================================== --- trunk/xmlunit/src/main/net-core/diff/AbstractDifferenceEngine.cs (rev 0) +++ trunk/xmlunit/src/main/net-core/diff/AbstractDifferenceEngine.cs 2010-06-28 11:49:08 UTC (rev 407) @@ -0,0 +1,86 @@ +/* + This file is licensed 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. +*/ + +using System; + +namespace net.sf.xmlunit.diff { + + /// <summary> + /// Useful base-implementation of some parts of the + /// IDifferenceEngine interface. + /// </summary> + public abstract class AbstractDifferenceEngine : IDifferenceEngine { + public event ComparisonListener ComparisonListener; + public event ComparisonListener MatchListener; + public event ComparisonListener DifferenceListener; + + private ElementSelector elementSelector = ElementSelectors.Default; + public virtual ElementSelector ElementSelector { + set { + if (value == null) { + throw new ArgumentNullException("element selector"); + } + elementSelector = value; + } + get { + return elementSelector; + } + } + + private DifferenceEvaluator diffEvaluator = DifferenceEvaluators.Default; + public virtual DifferenceEvaluator DifferenceEvaluator { + set { + if (value == null) { + throw new ArgumentNullException("difference evaluator"); + } + diffEvaluator = value; + } + get { + return diffEvaluator; + } + } + + public abstract void Compare(ISource control, ISource test); + + /// <summary> + /// Compares the detail values for object equality, lets the + /// difference evaluator evaluate the result, notifies all + /// listeners and returns the outcome. + /// </summary> + protected internal ComparisonResult Compare(Comparison comp) { + object controlValue = comp.ControlNodeDetails.Value; + object testValue = comp.TestNodeDetails.Value; + bool equal = controlValue == null + ? testValue == null : controlValue.Equals(testValue); + ComparisonResult initial = + equal ? ComparisonResult.EQUAL : ComparisonResult.DIFFERENT; + ComparisonResult altered = DifferenceEvaluator(comp, initial); + FireComparisonPerformed(comp, altered); + return altered; + } + + private void FireComparisonPerformed(Comparison comp, + ComparisonResult outcome) { + if (ComparisonListener != null) { + ComparisonListener(comp, outcome); + } + if (outcome == ComparisonResult.EQUAL && MatchListener != null) { + MatchListener(comp, outcome); + } else if (outcome != ComparisonResult.EQUAL + && DifferenceListener != null) { + DifferenceListener(comp, outcome); + } + } + } +} Modified: trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.cs =================================================================== --- trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.cs 2010-06-25 15:35:43 UTC (rev 406) +++ trunk/xmlunit/src/main/net-core/diff/DOMDifferenceEngine.cs 2010-06-28 11:49:08 UTC (rev 407) @@ -20,32 +20,9 @@ /// <summary> /// Difference engine based on DOM. /// </summary> - public sealed class DOMDifferenceEngine : IDifferenceEngine { - public event ComparisonListener ComparisonListener; - public event ComparisonListener MatchListener; - public event ComparisonListener DifferenceListener; + public sealed class DOMDifferenceEngine : AbstractDifferenceEngine { - private ElementSelector elementSelector = ElementSelectors.Default; - public ElementSelector ElementSelector { - set { - if (value == null) { - throw new ArgumentNullException("element selector"); - } - elementSelector = value; - } - } - - private DifferenceEvaluator diffEvaluator = DifferenceEvaluators.Default; - public DifferenceEvaluator DifferenceEvaluator { - set { - if (value == null) { - throw new ArgumentNullException("difference evaluator"); - } - diffEvaluator = value; - } - } - - public void Compare(ISource control, ISource test) { + public override void Compare(ISource control, ISource test) { if (control == null) { throw new ArgumentNullException("control"); } @@ -177,34 +154,5 @@ return ComparisonResult.EQUAL; } - /// <summary> - /// Compares the detail values for object equality, lets the - /// difference evaluator evaluate the result, notifies all - /// listeners and returns the outcome. - /// </summary> - internal ComparisonResult Compare(Comparison comp) { - object controlValue = comp.ControlNodeDetails.Value; - object testValue = comp.TestNodeDetails.Value; - bool equal = controlValue == null - ? testValue == null : controlValue.Equals(testValue); - ComparisonResult initial = - equal ? ComparisonResult.EQUAL : ComparisonResult.DIFFERENT; - ComparisonResult altered = diffEvaluator(comp, initial); - FireComparisonPerformed(comp, altered); - return altered; - } - - private void FireComparisonPerformed(Comparison comp, - ComparisonResult outcome) { - if (ComparisonListener != null) { - ComparisonListener(comp, outcome); - } - if (outcome == ComparisonResult.EQUAL && MatchListener != null) { - MatchListener(comp, outcome); - } else if (outcome != ComparisonResult.EQUAL - && DifferenceListener != null) { - DifferenceListener(comp, outcome); - } - } } } Copied: trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/AbstractDifferenceEngineTest.java (from rev 406, trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/DOMDifferenceEngineTest.java) =================================================================== --- trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/AbstractDifferenceEngineTest.java (rev 0) +++ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/AbstractDifferenceEngineTest.java 2010-06-28 11:49:08 UTC (rev 407) @@ -0,0 +1,117 @@ +/* + This file is licensed 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 net.sf.xmlunit.diff; + +import org.junit.Test; +import static org.junit.Assert.*; + +public abstract class AbstractDifferenceEngineTest { + + protected abstract AbstractDifferenceEngine getDifferenceEngine(); + + private static class ResultGrabber implements DifferenceEvaluator { + private ComparisonResult outcome = ComparisonResult.CRITICAL; + public ComparisonResult evaluate(Comparison comparison, + ComparisonResult outcome) { + this.outcome = outcome; + return outcome; + } + } + + @Test public void compareTwoNulls() { + ResultGrabber g = new ResultGrabber(); + AbstractDifferenceEngine d = getDifferenceEngine(); + d.setDifferenceEvaluator(g); + assertEquals(ComparisonResult.EQUAL, + d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, null, + null, null, null))); + assertEquals(ComparisonResult.EQUAL, g.outcome); + } + + @Test public void compareControlNullTestNonNull() { + ResultGrabber g = new ResultGrabber(); + AbstractDifferenceEngine d = getDifferenceEngine(); + d.setDifferenceEvaluator(g); + assertEquals(ComparisonResult.DIFFERENT, + d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, null, + null, null, ""))); + assertEquals(ComparisonResult.DIFFERENT, g.outcome); + } + + @Test public void compareControlNonNullTestNull() { + ResultGrabber g = new ResultGrabber(); + AbstractDifferenceEngine d = getDifferenceEngine(); + d.setDifferenceEvaluator(g); + assertEquals(ComparisonResult.DIFFERENT, + d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, "", + null, null, null))); + assertEquals(ComparisonResult.DIFFERENT, g.outcome); + } + + @Test public void compareTwoDifferentNonNulls() { + ResultGrabber g = new ResultGrabber(); + AbstractDifferenceEngine d = getDifferenceEngine(); + d.setDifferenceEvaluator(g); + assertEquals(ComparisonResult.DIFFERENT, + d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, new Short("1"), + null, null, new Short("2")))); + assertEquals(ComparisonResult.DIFFERENT, g.outcome); + } + + @Test public void compareTwoEqualNonNulls() { + ResultGrabber g = new ResultGrabber(); + AbstractDifferenceEngine d = getDifferenceEngine(); + d.setDifferenceEvaluator(g); + assertEquals(ComparisonResult.EQUAL, + d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, new Short("2"), + null, null, new Short("2")))); + assertEquals(ComparisonResult.EQUAL, g.outcome); + } + + @Test public void compareNotifiesListener() { + AbstractDifferenceEngine d = getDifferenceEngine(); + ComparisonListenerSupportTest.Listener l = + new ComparisonListenerSupportTest.Listener(ComparisonResult.EQUAL); + d.addComparisonListener(l); + assertEquals(ComparisonResult.EQUAL, + d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, new Short("2"), + null, null, new Short("2")))); + assertEquals(1, l.getInvocations()); + } + + @Test public void compareUsesResultOfEvaluator() { + AbstractDifferenceEngine d = getDifferenceEngine(); + ComparisonListenerSupportTest.Listener l = + new ComparisonListenerSupportTest.Listener(ComparisonResult.SIMILAR); + d.addComparisonListener(l); + d.setDifferenceEvaluator(new DifferenceEvaluator() { + public ComparisonResult evaluate(Comparison comparison, + ComparisonResult outcome) { + return ComparisonResult.SIMILAR; + } + }); + assertEquals(ComparisonResult.SIMILAR, + d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, new Short("2"), + null, null, new Short("2")))); + assertEquals(1, l.getInvocations()); + } + +} 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-06-25 15:35:43 UTC (rev 406) +++ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/diff/DOMDifferenceEngineTest.java 2010-06-28 11:49:08 UTC (rev 407) @@ -25,102 +25,12 @@ import org.w3c.dom.Text; import static org.junit.Assert.*; -public class DOMDifferenceEngineTest { +public class DOMDifferenceEngineTest extends AbstractDifferenceEngineTest { - private static class ResultGrabber implements DifferenceEvaluator { - private ComparisonResult outcome = ComparisonResult.CRITICAL; - public ComparisonResult evaluate(Comparison comparison, - ComparisonResult outcome) { - this.outcome = outcome; - return outcome; - } + @Override protected AbstractDifferenceEngine getDifferenceEngine() { + return new DOMDifferenceEngine(); } - @Test public void compareTwoNulls() { - ResultGrabber g = new ResultGrabber(); - DOMDifferenceEngine d = new DOMDifferenceEngine(); - d.setDifferenceEvaluator(g); - assertEquals(ComparisonResult.EQUAL, - d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, null, - null, null, null))); - assertEquals(ComparisonResult.EQUAL, g.outcome); - } - - @Test public void compareControlNullTestNonNull() { - ResultGrabber g = new ResultGrabber(); - DOMDifferenceEngine d = new DOMDifferenceEngine(); - d.setDifferenceEvaluator(g); - assertEquals(ComparisonResult.DIFFERENT, - d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, null, - null, null, ""))); - assertEquals(ComparisonResult.DIFFERENT, g.outcome); - } - - @Test public void compareControlNonNullTestNull() { - ResultGrabber g = new ResultGrabber(); - DOMDifferenceEngine d = new DOMDifferenceEngine(); - d.setDifferenceEvaluator(g); - assertEquals(ComparisonResult.DIFFERENT, - d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, "", - null, null, null))); - assertEquals(ComparisonResult.DIFFERENT, g.outcome); - } - - @Test public void compareTwoDifferentNonNulls() { - ResultGrabber g = new ResultGrabber(); - DOMDifferenceEngine d = new DOMDifferenceEngine(); - d.setDifferenceEvaluator(g); - assertEquals(ComparisonResult.DIFFERENT, - d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, new Short("1"), - null, null, new Short("2")))); - assertEquals(ComparisonResult.DIFFERENT, g.outcome); - } - - @Test public void compareTwoEqualNonNulls() { - ResultGrabber g = new ResultGrabber(); - DOMDifferenceEngine d = new DOMDifferenceEngine(); - d.setDifferenceEvaluator(g); - assertEquals(ComparisonResult.EQUAL, - d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, new Short("2"), - null, null, new Short("2")))); - assertEquals(ComparisonResult.EQUAL, g.outcome); - } - - @Test public void compareNotifiesListener() { - DOMDifferenceEngine d = new DOMDifferenceEngine(); - ComparisonListenerSupportTest.Listener l = - new ComparisonListenerSupportTest.Listener(ComparisonResult.EQUAL); - d.addComparisonListener(l); - assertEquals(ComparisonResult.EQUAL, - d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, new Short("2"), - null, null, new Short("2")))); - assertEquals(1, l.getInvocations()); - } - - @Test public void compareUsesResultOfEvaluator() { - DOMDifferenceEngine d = new DOMDifferenceEngine(); - ComparisonListenerSupportTest.Listener l = - new ComparisonListenerSupportTest.Listener(ComparisonResult.SIMILAR); - d.addComparisonListener(l); - d.setDifferenceEvaluator(new DifferenceEvaluator() { - public ComparisonResult evaluate(Comparison comparison, - ComparisonResult outcome) { - return ComparisonResult.SIMILAR; - } - }); - assertEquals(ComparisonResult.SIMILAR, - d.compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, new Short("2"), - null, null, new Short("2")))); - assertEquals(1, l.getInvocations()); - } - private static class DiffExpecter implements ComparisonListener { private int invoked = 0; private final int expectedInvocations; Copied: trunk/xmlunit/src/tests/net-core/diff/AbstractDifferenceEngineTest.cs (from rev 406, trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs) =================================================================== --- trunk/xmlunit/src/tests/net-core/diff/AbstractDifferenceEngineTest.cs (rev 0) +++ trunk/xmlunit/src/tests/net-core/diff/AbstractDifferenceEngineTest.cs 2010-06-28 11:49:08 UTC (rev 407) @@ -0,0 +1,132 @@ +/* + This file is licensed 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. +*/ +using System; +using NUnit.Framework; + +namespace net.sf.xmlunit.diff { + + public abstract class AbstractDifferenceEngineTest { + + protected abstract AbstractDifferenceEngine DifferenceEngine { + get; + } + + private ComparisonResult outcome = ComparisonResult.CRITICAL; + private ComparisonResult ResultGrabber(Comparison comparison, + ComparisonResult outcome) { + this.outcome = outcome; + return outcome; + } + + [Test] + public void CompareTwoNulls() { + AbstractDifferenceEngine d = DifferenceEngine; + d.DifferenceEvaluator = ResultGrabber; + Assert.AreEqual(ComparisonResult.EQUAL, + d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, null, + null, null, null))); + Assert.AreEqual(ComparisonResult.EQUAL, outcome); + } + + [Test] + public void CompareControlNullTestNonNull() { + AbstractDifferenceEngine d = DifferenceEngine; + d.DifferenceEvaluator = ResultGrabber; + Assert.AreEqual(ComparisonResult.DIFFERENT, + d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, null, + null, null, ""))); + Assert.AreEqual(ComparisonResult.DIFFERENT, outcome); + } + + [Test] + public void CompareControlNonNullTestNull() { + AbstractDifferenceEngine d = DifferenceEngine; + d.DifferenceEvaluator = ResultGrabber; + Assert.AreEqual(ComparisonResult.DIFFERENT, + d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, "", + null, null, null))); + Assert.AreEqual(ComparisonResult.DIFFERENT, outcome); + } + + [Test] + public void CompareTwoDifferentNonNulls() { + AbstractDifferenceEngine d = DifferenceEngine; + d.DifferenceEvaluator = ResultGrabber; + Assert.AreEqual(ComparisonResult.DIFFERENT, + d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, + Convert.ToInt16("1"), + null, null, + Convert.ToInt16("2")))); + Assert.AreEqual(ComparisonResult.DIFFERENT, outcome); + } + + [Test] + public void CompareTwoEqualNonNulls() { + AbstractDifferenceEngine d = DifferenceEngine; + d.DifferenceEvaluator = ResultGrabber; + Assert.AreEqual(ComparisonResult.EQUAL, + d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, + Convert.ToInt16("2"), + null, null, + Convert.ToInt16("2")))); + Assert.AreEqual(ComparisonResult.EQUAL, outcome); + } + + [Test] + public void CompareNotifiesListener() { + AbstractDifferenceEngine d = DifferenceEngine; + int invocations = 0; + d.ComparisonListener += delegate(Comparison comp, + ComparisonResult r) { + invocations++; + Assert.AreEqual(ComparisonResult.EQUAL, r); + }; + Assert.AreEqual(ComparisonResult.EQUAL, + d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, + Convert.ToInt16("2"), + null, null, + Convert.ToInt16("2")))); + Assert.AreEqual(1, invocations); + } + + [Test] + public void CompareUsesResultOfEvaluator() { + AbstractDifferenceEngine d = DifferenceEngine; + int invocations = 0; + d.ComparisonListener += delegate(Comparison comp, + ComparisonResult r) { + invocations++; + Assert.AreEqual(ComparisonResult.SIMILAR, r); + }; + d.DifferenceEvaluator = delegate(Comparison comparison, + ComparisonResult outcome) { + return ComparisonResult.SIMILAR; + }; + Assert.AreEqual(ComparisonResult.SIMILAR, + d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, + null, null, + Convert.ToInt16("2"), + null, null, + Convert.ToInt16("2")))); + Assert.AreEqual(1, invocations); + } + + } +} Modified: trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs =================================================================== --- trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs 2010-06-25 15:35:43 UTC (rev 406) +++ trunk/xmlunit/src/tests/net-core/diff/DOMDifferenceEngineTest.cs 2010-06-28 11:49:08 UTC (rev 407) @@ -18,114 +18,14 @@ namespace net.sf.xmlunit.diff { [TestFixture] - public class DOMDifferenceEngineTest { + public class DOMDifferenceEngineTest : AbstractDifferenceEngineTest { - private ComparisonResult outcome = ComparisonResult.CRITICAL; - private ComparisonResult ResultGrabber(Comparison comparison, - ComparisonResult outcome) { - this.outcome = outcome; - return outcome; + protected override AbstractDifferenceEngine DifferenceEngine { + get { + return new DOMDifferenceEngine(); + } } - [Test] - public void CompareTwoNulls() { - DOMDifferenceEngine d = new DOMDifferenceEngine(); - d.DifferenceEvaluator = ResultGrabber; - Assert.AreEqual(ComparisonResult.EQUAL, - d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, null, - null, null, null))); - Assert.AreEqual(ComparisonResult.EQUAL, outcome); - } - - [Test] - public void CompareControlNullTestNonNull() { - DOMDifferenceEngine d = new DOMDifferenceEngine(); - d.DifferenceEvaluator = ResultGrabber; - Assert.AreEqual(ComparisonResult.DIFFERENT, - d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, null, - null, null, ""))); - Assert.AreEqual(ComparisonResult.DIFFERENT, outcome); - } - - [Test] - public void CompareControlNonNullTestNull() { - DOMDifferenceEngine d = new DOMDifferenceEngine(); - d.DifferenceEvaluator = ResultGrabber; - Assert.AreEqual(ComparisonResult.DIFFERENT, - d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, "", - null, null, null))); - Assert.AreEqual(ComparisonResult.DIFFERENT, outcome); - } - - [Test] - public void CompareTwoDifferentNonNulls() { - DOMDifferenceEngine d = new DOMDifferenceEngine(); - d.DifferenceEvaluator = ResultGrabber; - Assert.AreEqual(ComparisonResult.DIFFERENT, - d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, - Convert.ToInt16("1"), - null, null, - Convert.ToInt16("2")))); - Assert.AreEqual(ComparisonResult.DIFFERENT, outcome); - } - - [Test] - public void CompareTwoEqualNonNulls() { - DOMDifferenceEngine d = new DOMDifferenceEngine(); - d.DifferenceEvaluator = ResultGrabber; - Assert.AreEqual(ComparisonResult.EQUAL, - d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, - Convert.ToInt16("2"), - null, null, - Convert.ToInt16("2")))); - Assert.AreEqual(ComparisonResult.EQUAL, outcome); - } - - [Test] - public void CompareNotifiesListener() { - DOMDifferenceEngine d = new DOMDifferenceEngine(); - int invocations = 0; - d.ComparisonListener += delegate(Comparison comp, - ComparisonResult r) { - invocations++; - Assert.AreEqual(ComparisonResult.EQUAL, r); - }; - Assert.AreEqual(ComparisonResult.EQUAL, - d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, - Convert.ToInt16("2"), - null, null, - Convert.ToInt16("2")))); - Assert.AreEqual(1, invocations); - } - - [Test] - public void CompareUsesResultOfEvaluator() { - DOMDifferenceEngine d = new DOMDifferenceEngine(); - int invocations = 0; - d.ComparisonListener += delegate(Comparison comp, - ComparisonResult r) { - invocations++; - Assert.AreEqual(ComparisonResult.SIMILAR, r); - }; - d.DifferenceEvaluator = delegate(Comparison comparison, - ComparisonResult outcome) { - return ComparisonResult.SIMILAR; - }; - Assert.AreEqual(ComparisonResult.SIMILAR, - d.Compare(new Comparison(ComparisonType.HAS_DOCTYPE_DECLARATION, - null, null, - Convert.ToInt16("2"), - null, null, - Convert.ToInt16("2")))); - Assert.AreEqual(1, invocations); - } - private XmlDocument doc; [SetUp] @@ -316,7 +216,8 @@ Assert.AreEqual(9, invocations); } - [Test] public void compareProcessingInstructions() { + [Test] + public void CompareProcessingInstructions() { DOMDifferenceEngine d = new DOMDifferenceEngine(); int invocations = 0; d.DifferenceListener += delegate(Comparison comp, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |