From: <bo...@us...> - 2010-09-02 12:02:42
|
Revision: 454 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=454&view=rev Author: bodewig Date: 2010-09-02 12:02:35 +0000 (Thu, 02 Sep 2010) Log Message: ----------- use NewDifferenceEngine if we can - this implicitly changes the default for compareUnmatched when Diff is used, need to think about the implications a little more Modified Paths: -------------- trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/Diff.java trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DetailedDiff.java Modified: trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/Diff.java =================================================================== --- trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/Diff.java 2010-09-02 12:00:51 UTC (rev 453) +++ trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/Diff.java 2010-09-02 12:02:35 UTC (rev 454) @@ -414,9 +414,26 @@ * via a constructor. */ private DifferenceEngineContract getDifferenceEngine() { - return differenceEngine == null - ? new DifferenceEngine(this, matchTrackerDelegate) - : differenceEngine; + if (differenceEngine == null) { + if ( + !XMLUnit.getExplicitCompareUnmatched() + && + XMLUnit.getIgnoreAttributeOrder() + && + !XMLUnit.getIgnoreWhitespace() + && !usesUnknownElementQualifier() + ) { + return new NewDifferenceEngine(this, matchTrackerDelegate); + } + return new DifferenceEngine(this, matchTrackerDelegate); + } + return differenceEngine; } + private boolean usesUnknownElementQualifier() { + return elementQualifierDelegate != null + && !(elementQualifierDelegate instanceof ElementNameQualifier) + && !(elementQualifierDelegate instanceof ElementNameAndTextQualifier) + && !(elementQualifierDelegate instanceof ElementNameAndAttributeQualifier); + } } Modified: trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DetailedDiff.java =================================================================== --- trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DetailedDiff.java 2010-09-02 12:00:51 UTC (rev 453) +++ trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DetailedDiff.java 2010-09-02 12:02:35 UTC (rev 454) @@ -65,15 +65,15 @@ DetailedDiff detailedDiff) { assertEquals("size: " + detailedDiff, 5, differences.size()); assertEquals("first: " + detailedDiff, - DifferenceConstants.ELEMENT_NUM_ATTRIBUTES, differences.get(0)); + DifferenceConstants.HAS_CHILD_NODES, differences.get(0)); assertEquals("second: " + detailedDiff, - DifferenceConstants.ATTR_NAME_NOT_FOUND, differences.get(1)); + DifferenceConstants.ELEMENT_NUM_ATTRIBUTES, differences.get(1)); assertEquals("third: " + detailedDiff, - DifferenceConstants.ATTR_VALUE, differences.get(2)); + DifferenceConstants.ATTR_NAME_NOT_FOUND, differences.get(2)); assertEquals("fourth: " + detailedDiff, - DifferenceConstants.ATTR_SEQUENCE, differences.get(3)); + DifferenceConstants.ATTR_VALUE, differences.get(3)); assertEquals("fifth: " + detailedDiff, - DifferenceConstants.HAS_CHILD_NODES, differences.get(4)); + DifferenceConstants.CHILD_NODE_NOT_FOUND, differences.get(4)); } public void testAllDifferencesSecondForecastControl() throws Exception { @@ -84,16 +84,16 @@ assertEquals("size: " + detailedDiff, 5, differences.size()); assertEquals("first: " + detailedDiff, - DifferenceConstants.ELEMENT_NUM_ATTRIBUTES, differences.get(0)); + DifferenceConstants.HAS_CHILD_NODES, differences.get(0)); assertEquals("second: " + detailedDiff, - DifferenceConstants.ATTR_VALUE, differences.get(1)); + DifferenceConstants.ELEMENT_NUM_ATTRIBUTES, differences.get(1)); assertEquals("third: " + detailedDiff, - DifferenceConstants.ATTR_SEQUENCE, differences.get(2)); + DifferenceConstants.ATTR_VALUE, differences.get(2)); assertEquals("forth: " + detailedDiff, DifferenceConstants.ATTR_NAME_NOT_FOUND, differences.get(3)); assertEquals("fifth: " + detailedDiff, - DifferenceConstants.HAS_CHILD_NODES, differences.get(4)); + DifferenceConstants.CHILD_NODE_NOT_FOUND, differences.get(4)); } public void testPrototypeIsADetailedDiff() throws Exception { @@ -111,6 +111,8 @@ File test, control; control = new File(test_Constants.BASEDIR + "/src/tests/resources/controlDetail.xml"); test = new File(test_Constants.BASEDIR + "/src/tests/resources/testDetail.xml"); + try { + XMLUnit.setCompareUnmatched(true); DetailedDiff differencesWithWhitespace = new DetailedDiff( new Diff(new InputSource(new FileReader(control)), new InputSource(new FileReader(test))) ); @@ -126,6 +128,9 @@ assertEquals(1402 + unmatchedNodes, differencesWithWhitespace.getAllDifferences().size()); + } finally { + XMLUnit.clearCompareUnmatched(); + } try { XMLUnit.setIgnoreWhitespace(true); @@ -133,7 +138,7 @@ new Diff(new FileReader(control), new FileReader(test)); DetailedDiff detailedDiff = new DetailedDiff(prototype); List differences = detailedDiff.getAllDifferences(); - unmatchedNodes = 0; + int unmatchedNodes = 0; for (Iterator iter = differences.iterator(); iter.hasNext();) { Difference d = (Difference) iter.next(); if (d.getId() == DifferenceConstants.CHILD_NODE_NOT_FOUND_ID) { @@ -327,21 +332,26 @@ * https://sourceforge.net/tracker/?func=detail&aid=2758280&group_id=23187&atid=377768 */ public void testCompareUnmatched() throws Exception { - String control = "<root><a>1</a>" - + "<b>1</b>" - + "<c>1</c>" - + "<d>1</d>" - + "<e>1</e></root>"; - String test = "<root><a>1</a>" - + "<b>1</b>" - + "<z>1</z>" - + "<d>1</d>" - + "<e>1</e></root>"; - DetailedDiff d = (DetailedDiff) buildDiff(control, test); - List l = d.getAllDifferences(); - assertEquals(1, l.size()); - Difference diff = (Difference) l.get(0); - assertEquals(DifferenceConstants.ELEMENT_TAG_NAME_ID, diff.getId()); + try { + XMLUnit.setCompareUnmatched(true); + String control = "<root><a>1</a>" + + "<b>1</b>" + + "<c>1</c>" + + "<d>1</d>" + + "<e>1</e></root>"; + String test = "<root><a>1</a>" + + "<b>1</b>" + + "<z>1</z>" + + "<d>1</d>" + + "<e>1</e></root>"; + DetailedDiff d = (DetailedDiff) buildDiff(control, test); + List l = d.getAllDifferences(); + assertEquals(1, l.size()); + Difference diff = (Difference) l.get(0); + assertEquals(DifferenceConstants.ELEMENT_TAG_NAME_ID, diff.getId()); + } finally { + XMLUnit.clearCompareUnmatched(); + } } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |