|
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. |