.withDifferenceEvaluator(new DifferenceEvaluator() { public ComparisonResult evaluate(Comparison comparison, ComparisonResult comparisonResult) { // skip namespace prefix comparison if (comparison.getType().equals(ComparisonType.NAMESPACE_PREFIX)) return ComparisonResult.SIMILAR; return comparisonResult; } })
@Override public ComparisonResult evaluate(Comparison comparison, ComparisonResult orig) { return orig != ComparisonResult.EQUAL && comparisonTypes.contains(comparison.getType()) ? outcome : orig; } };
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; } }
@Override public ComparisonResult evaluate(Comparison comparison, ComparisonResult outcome) { if (COUNTED_COMPARISONS.contains(comparison.getType()) && comparison.getControlDetails().getValue() != null) { return outcome; } return ComparisonResult.EQUAL; } };
@Override public void describeMismatch(final Object item, final Description description) { final Comparison difference = firstComparison(); final String controlString = comparisonFormatter.getDetails(difference.getTestDetails(), difference.getType(), formatXml); description.appendText(String.format("result was: \n%s", controlString)); }
private static boolean isSequenceOfRootElement(Comparison comparison) { return comparison.getType() == ComparisonType.CHILD_NODELIST_SEQUENCE && comparison.getControlDetails().getTarget() instanceof Element && comparison.getControlDetails().getTarget().getParentNode() instanceof Document; }
@Override public void describeTo(Description description) { if (diffResult == null || !diffResult.hasDifferences()) { description.appendText(" is ") .appendText(checkFor == ComparisonResult.EQUAL ? "equal" : "similar") .appendText(" to the control document"); return; } final Comparison difference = firstComparison(); final String reason = createReasonPrefix(diffResult.getControlSource().getSystemId(), difference); final String testString = comparisonFormatter.getDetails(difference.getControlDetails(), difference.getType(), formatXml); description.appendText(String.format("%s:\n%s", reason, testString)); }
private void printFullNodeDiff( final Document testDoc, final Comparison comparison, final String oldText, final String newText ) { output.startSpan( "NODE MODIFIED ["+comparison.getType()+"] ; " + comparison.toString() + "\n" ); output.writeRaw( " . " ); output.endSpan(); // output.write( "- " + oldText ); // output.write( "+ " + newText ); // // output.write( "~" ); // new DaisyDiffFormatter( oldText, newText ).printDiff( output.getHandler() ); // output.write( "~" ); // // printParentInfo( testDoc, comparison.getTestDetails().getParentXPath() ); }
public ComparisonResult evaluate(Comparison comparison, ComparisonResult outcome) { if (outcome == ComparisonResult.EQUAL) { return outcome; } if (comparison.getType() == ComparisonType.CHILD_LOOKUP && (isDoctype(comparison.getControlDetails()) || isDoctype(comparison.getTestDetails()))) { return ComparisonResult.EQUAL; } if (comparison.getType() == ComparisonType.CHILD_NODELIST_LENGTH && isDocumentWithDocTypeDifference(comparison) && Math.abs((Integer) comparison.getControlDetails().getValue() - (Integer) comparison.getTestDetails().getValue()) == 1) { return ComparisonResult.EQUAL; } if (comparison.getType() == ComparisonType.CHILD_NODELIST_SEQUENCE && isDocumentWithDocTypeDifference(comparison)) { return ComparisonResult.EQUAL; } return outcome; }
/** * @return an instants of {@link org.junit.ComparisonFailure} or <code>null</code> if the class is not available. */ private AssertionError createComparisonFailure() { final Comparison difference = firstComparison(); final String reason = createReasonPrefix(diffResult.getControlSource().getSystemId(), difference); final String controlString = comparisonFormatter.getDetails(difference.getControlDetails(), difference .getType(), formatXml); final String testString = comparisonFormatter.getDetails(difference.getTestDetails(), difference.getType(), formatXml); return createComparisonFailure(reason, controlString, testString); }
private void printModifiedNode( final Comparison comparison ) { final Comparison.Detail details = comparison.getControlDetails(); if( XmlDomUtils.xpathDepth( details.getXPath() ) == 1 ) { output.startSpan( "MODIFIED ; " + details.getXPath() + "." ); output.writeRaw( " _ " ); output.endSpan(); } else { if( comparison.getType() == ComparisonType.CHILD_NODELIST_SEQUENCE ) { output.startSpan( ". node order different: " + comparison.getTestDetails().getXPath() ); output.writeRaw( " * " ); output.endSpan(); } else if( comparison.getType() == ComparisonType.CHILD_NODELIST_LENGTH ) { printChildNodesChanged( comparison ); } else if( comparison.getType() == ComparisonType.ATTR_NAME_LOOKUP || comparison.getType() == ComparisonType.ATTR_VALUE ) { printAttrChanged( comparison ); } else { printNodeDiff( comparison ); } } }
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); }
public static Iterable<Difference> toDifference(Comparison comp) { List<Difference> diffs = new LinkedList<Difference>(); Difference proto = null; switch (comp.getType()) { case ATTR_VALUE_EXPLICITLY_SPECIFIED: proto = ATTR_VALUE_EXPLICITLY_SPECIFIED;
final ComparisonType type = difference.getType(); String description = type.getDescription(); final Detail controlDetails = difference.getControlDetails();
ComparisonResult outcome) { if (outcome == ComparisonResult.DIFFERENT) { switch (comparison.getType()) { case NODE_TYPE: Short control = (Short) comparison
@Override public String getDescription(Comparison difference) { final ComparisonType type = difference.getType(); String description = type.getDescription(); final Detail controlDetails = difference.getControlDetails(); final Detail testDetails = difference.getTestDetails(); final String controlTarget = getDetails(difference.getControlDetails(), type, true); final String testTarget = getDetails(difference.getTestDetails(), type, true); if (type == ComparisonType.ATTR_NAME_LOOKUP) { return String.format("Expected %s '%s'\nEXPEXTED:\n%s\nFOUND:\n%s", description, controlDetails.getXPath(), controlTarget, testTarget); } return String.format("Expected %s '%s' but was '%s'\nEXPEXTED:\n%s\nFOUND:\n%s", description, getValue(controlDetails.getValue(), type), getValue(testDetails.getValue(), type), controlTarget, testTarget); }