public static NodeDetail toNodeDetail(Comparison.Detail detail) { String value = String.valueOf(detail.getValue()); if (detail.getValue() instanceof Node) { value = ((Node) detail.getValue()).getNodeName(); } return new NodeDetail(value, detail.getTarget(), detail.getXPath()); }
break; case TEXT_VALUE: if (comp.getControlDetails().getTarget() instanceof CDATASection) { proto = CDATA_VALUE; } else if (comp.getControlDetails().getTarget() instanceof Comment) { proto = COMMENT_VALUE; .equals(cd .getValue())), cd.getTarget(), cd.getXPath()), new NodeDetail(String .equals(td .getValue())), td.getTarget(), td.getXPath())));
if( isAttrAdded( comparison ) ) { final String nodeText = printNode.nodeToString( xmlDomUtils.findNode( testDoc, comparison.getTestDetails().getParentXPath() ) ); final String attributeText = printNode.attrToString( comparison.getTestDetails().getTarget(), (QName)comparison.getTestDetails().getValue() ); output.startSpan( "MODIFIED ; new attribute [" + attributeText + "] <!-- xpath: " + comparison.getTestDetails().getXPath() + " -->" ); output.writeRaw( " . " ); final String controlAttributeText = printNode.attrToString( comparison.getControlDetails().getTarget(), (QName)comparison.getControlDetails().getValue() ); output.startSpan( "MODIFIED ; removed attribute [" + controlAttributeText + "] <!-- xpath: " + comparison.getControlDetails().getXPath() + " -->" ); output.writeRaw( " . " ); final String attributeText = printNode.attrToString( (Attr)comparison.getTestDetails().getTarget() ); output.startSpan( "MODIFIED ; changed attribute [" + attributeText + "] <!-- xpath: " + comparison.getTestDetails().getXPath() + " -->" ); output.writeRaw( " . " ); final String controlAttributeText = printNode.attrToString( (Attr)comparison.getControlDetails().getTarget() ); changeHolder.removedAttribute( controlNodeText, controlAttributeText );
public void printChildNodesChanged( final Comparison comparison ) { final String parentNodeXpath = comparison.getTestDetails().getXPath(); final int sizeControl = (int)comparison.getControlDetails().getValue(); final int sizeTest = (int)comparison.getTestDetails().getValue(); if( sizeTest > sizeControl ) { // nodes added output.startSpan( String.format( ". %s node(s) added: %s <!-- %s -->", sizeTest - sizeControl, printNode.printNodeSignature( comparison.getTestDetails().getTarget() ), parentNodeXpath ) ); output.writeRaw( " * " ); output.endSpan(); } else { // nodes removed output.startSpan( String.format( ". %s node(s) removed: %s <!-- %s -->", sizeControl - sizeTest, printNode.printNodeSignature( comparison.getTestDetails().getTarget() ), parentNodeXpath ) ); output.writeRaw( " * " ); output.endSpan(); } final NodeChangesHolder changeHolder = semanticDiff.updateHolder( semanticDiff.addChangeHolder( XmlDomUtils.wideContext( parentNodeXpath ) ), NodeChangesHolder.OpType.ADDED, holderNodeText( testDoc, comparison.getTestDetails() ) ); semanticDiff.updateHolder( changeHolder, NodeChangesHolder.OpType.REMOVED, holderNodeText( controlDoc, comparison.getControlDetails() ) ); changeHolder.attachAutoDiffs(); semanticDiff.updateHolder( semanticDiff.addChangeHolder( XmlDomUtils.wideContext( comparison.getControlDetails().getXPath() ) ), NodeChangesHolder.OpType.REMOVED, holderNodeText( controlDoc, comparison.getControlDetails() ) ); }
/** * Return the xml node from {@link Detail#getTarget()} as formatted String. * * <p>Delegates to {@link #getFullFormattedXml} unless the {@code Comparison.Detail}'s {@code target} is null.</p> * * @param difference The {@link Comparison#getControlDetails()} or {@link Comparison#getTestDetails()}. * @param type the implementation can return different details depending on the ComparisonType. * @param formatXml set this to true if the Comparison was generated with {@link * org.xmlunit.builder.DiffBuilder#ignoreWhitespace()} - this affects the indentation of the generated output. * * @return the full xml node. */ @Override public String getDetails(Comparison.Detail difference, ComparisonType type, boolean formatXml) { if (difference.getTarget() == null) { return "<NULL>"; } return getFullFormattedXml(difference.getTarget(), type, formatXml); }
private static boolean isDeleted( final Comparison comparison ) { return comparison.getTestDetails().getTarget() == null; }
private boolean isDoctype(Comparison.Detail detail) { return detail != null && detail.getTarget() instanceof DocumentType; }
private static boolean isAdded( final Comparison comparison ) { return comparison.getControlDetails().getTarget() == null; }
public void comparisonPerformed(Comparison comparison, ComparisonResult outcome) { if (comparison.getType() == ComparisonType.XML_ENCODING) { haveSeenXmlEncoding = true; } else if (comparison.getControlDetails().getTarget() instanceof Element && (comparison.getType() == ComparisonType.NODE_TYPE || comparison.getType() == ComparisonType.CHILD_LOOKUP) ) { haveSeenElementNodeComparison = true; } }
private void printNodeDiff( final Comparison comparison ) { final String oldText = printNode.nodeToString( comparison.getControlDetails().getTarget() ); final String newText = printNode.nodeToString( comparison.getTestDetails().getTarget() ); printFullNodeDiff( testDoc, comparison, oldText, newText ); }
private static boolean belongsToProlog(Comparison comparison, boolean ignoreDoctypeDeclarationAsWell) { if (comparison.getType().isDoctypeComparison()) { return ignoreDoctypeDeclarationAsWell; } return belongsToProlog(comparison.getControlDetails().getTarget(), ignoreDoctypeDeclarationAsWell) || belongsToProlog(comparison.getTestDetails().getTarget(), ignoreDoctypeDeclarationAsWell); }