From: Harikesh K. <ha...@us...> - 2017-12-02 06:19:11
|
Difference camparison fails when an element value is updated to null. Sample1: <root><firstChild>first</firstChild><secondChild>secondChild</secondChild></root> Sample2: <root><firstChild>first</firstChild><secondChild></secondChild></root> Diff diff = new Diff(oldXml, newXml); DetailedDiff detDiff = new DetailedDiff(diff); List<Difference> differences = detDiff.getAllDifferences(); Collections.sort(differences, new Comparator<Difference>() { @Override public int compare(Difference o1, Difference o2) { int i = o2.getTestNodeDetail().getNode().compareDocumentPosition(o1.getTestNodeDetail().getNode()); if(i == 2 || i == 8) return -1; else return 1; } }); It throws NullPointerException at Collections.sort(....) method. --- ** [bugs:#46] 1.2 bug comparing missing attributes** **Status:** closed-fixed **Group:** Java_1.2 **Created:** Thu Dec 04, 2008 05:30 AM UTC by Matthew Watson **Last Updated:** Wed Mar 18, 2009 06:53 PM UTC **Owner:** Stefan Bodewig There is a bug when comparing 2 xml fragments where one has a missing attribute, the error is reported correctly, but the xpath for the attribute being compared is incorrect. The test below produces: Expected number of element attributes '2' but was '1' - comparing <bar...> at /foo\[1\]/bar\[1\] to <bar...> at /foo\[1\]/bar\[1\] Expected attribute name 'y' but was 'null' - comparing <bar...> at /foo\[1\]/bar\[1\]/@a to <bar...> at /foo\[1\]/bar\[1\]/@a The second diff says it is comparing attribute "y", but the xpath indicates attribute "a". Either the attribute in the xpath should be "y", or the xpath should only indicate /foo\[1\]/bar\[1\] Matt import java.util.List; import org.custommonkey.xmlunit.DetailedDiff; import org.custommonkey.xmlunit.Diff; import org.custommonkey.xmlunit.XMLTestCase; public class XmlUnitBug extends XMLTestCase \{ public void testBug\(\) throws Exception \{ Diff myDiff = new Diff\("<foo><bar a=\"x\" y=\"z\"/></foo>", "<foo><bar a=\"x\"/></foo>"\); DetailedDiff myDDiff = new DetailedDiff\(myDiff\); List allDifferences = myDDiff.getAllDifferences\(\); for \(Object diff : allDifferences\) \{ System.err.println\(diff\); \} assertTrue\(myDDiff.similar\(\)\); \} \} --- Sent from sourceforge.net because xml...@li... is subscribed to https://sourceforge.net/p/xmlunit/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/xmlunit/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |