From: <bo...@us...> - 2010-09-09 15:17:41
|
Revision: 460 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=460&view=rev Author: bodewig Date: 2010-09-09 15:17:35 +0000 (Thu, 09 Sep 2010) Log Message: ----------- port unit test for Bug 3062518 - differences come in slightly different order and the value for 'child not found' is a Node now where it used to be the Node's nodeName Modified Paths: -------------- trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/NewDifferenceEngine.java trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DetailedDiff.java Property Changed: ---------------- trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DetailedDiff.java Modified: trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/NewDifferenceEngine.java =================================================================== --- trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/NewDifferenceEngine.java 2010-09-09 14:57:48 UTC (rev 459) +++ trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/NewDifferenceEngine.java 2010-09-09 15:17:35 UTC (rev 460) @@ -36,6 +36,7 @@ package org.custommonkey.xmlunit; +import javax.xml.namespace.QName; import javax.xml.transform.Source; import net.sf.xmlunit.builder.Input; @@ -259,8 +260,13 @@ } public static NodeDetail toNodeDetail(Comparison.Detail detail) { - return new NodeDetail(String.valueOf(detail.getValue()), - (Node) detail.getTarget(), + String value = String.valueOf(detail.getValue()); + if (detail.getValue() instanceof QName) { + value = ((QName) detail.getValue()).getLocalPart(); + } else if (detail.getValue() instanceof Node) { + value = ((Node) detail.getValue()).getNodeName(); + } + return new NodeDetail(value, (Node) detail.getTarget(), detail.getXPath()); } 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-09 14:57:48 UTC (rev 459) +++ trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DetailedDiff.java 2010-09-09 15:17:35 UTC (rev 460) @@ -387,4 +387,68 @@ XMLUnit.setCompareUnmatched(true); } } + + /** + * @see https://sourceforge.net/tracker/index.php?func=detail&aid=3062518&group_id=23187&atid=377768 + */ + public void testIssue3062518() throws Exception { + String control = "<Fruits>" + + "<Apple size=\"11\" color=\"green\"/>" + + "<Apple size=\"15\" color=\"green\"/>" + + "<Banana size=\"10\"/>" + + "</Fruits>"; + String test = "<Fruits>" + + "<Apple size=\"11\" color=\"green\"/>" + + "<Banana size=\"11\"/>" + + "</Fruits>"; + try { + XMLUnit.setCompareUnmatched(false); + DetailedDiff d = (DetailedDiff) buildDiff(control, test); + List l = d.getAllDifferences(); + assertEquals(4, l.size()); + // expected 3 children is 2 + Difference diff = (Difference) l.get(0); + assertEquals(DifferenceConstants.CHILD_NODELIST_LENGTH_ID, + diff.getId()); + assertEquals("3", diff.getControlNodeDetail().getValue()); + assertEquals("2", diff.getTestNodeDetail().getValue()); + assertEquals("/Fruits[1]", + diff.getControlNodeDetail().getXpathLocation()); + assertEquals("/Fruits[1]", + diff.getTestNodeDetail().getXpathLocation()); + + // didn't find the second Apple element + diff = (Difference) l.get(1); + assertEquals(DifferenceConstants.CHILD_NODE_NOT_FOUND_ID, + diff.getId()); + assertEquals("Apple", diff.getControlNodeDetail().getValue()); + assertEquals("null", diff.getTestNodeDetail().getValue()); + assertEquals("/Fruits[1]/Apple[2]", + diff.getControlNodeDetail().getXpathLocation()); + assertEquals(null, + diff.getTestNodeDetail().getXpathLocation()); + + // Banana's size attribute doesn't match + diff = (Difference) l.get(3); + assertEquals(DifferenceConstants.ATTR_VALUE_ID, + diff.getId()); + assertEquals("10", diff.getControlNodeDetail().getValue()); + assertEquals("11", diff.getTestNodeDetail().getValue()); + assertEquals("/Fruits[1]/Banana[1]/@size", + diff.getControlNodeDetail().getXpathLocation()); + assertEquals("/Fruits[1]/Banana[1]/@size", + diff.getTestNodeDetail().getXpathLocation()); + + // Banana is the third child in control but the second one in test + diff = (Difference) l.get(2); + assertEquals("2", diff.getControlNodeDetail().getValue()); + assertEquals("1", diff.getTestNodeDetail().getValue()); + assertEquals("/Fruits[1]/Banana[1]", + diff.getControlNodeDetail().getXpathLocation()); + assertEquals("/Fruits[1]/Banana[1]", + diff.getTestNodeDetail().getXpathLocation()); + } finally { + XMLUnit.setCompareUnmatched(true); + } + } } Property changes on: trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DetailedDiff.java ___________________________________________________________________ Added: svn:mergeinfo + /branches/xmlunit-1.x/tests/java/org/custommonkey/xmlunit/test_DetailedDiff.java:337,346,353,459 /branches/xmlunit-1.x/tests/org/custommonkey/xmlunit/test_DetailedDiff.java:346 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |