Package org.xmlunit.placeholder
Class PlaceholderDifferenceEvaluator
java.lang.Object
org.xmlunit.placeholder.PlaceholderDifferenceEvaluator
- All Implemented Interfaces:
DifferenceEvaluator
This class is used to add placeholder feature to XML comparison.
This class and the whole module are considered experimental and any API may change between releases of XMLUnit.
To use it, just add it with DiffBuilder like below
Diff diff = DiffBuilder.compare(control).withTest(test).withDifferenceEvaluator(new PlaceholderDifferenceEvaluator()).build();
Supported scenarios are demonstrated in the unit tests (PlaceholderDifferenceEvaluatorTest).
Default delimiters for placeholder are ${ and
}. Arguments to placeholders are by default enclosed
in ( and ) and separated by , - whitespace
is significant, arguments are not quoted.
To use custom delimiters (in regular expression), create
instance with the PlaceholderDifferenceEvaluator(String, String) or PlaceholderDifferenceEvaluator(String, String, String, String, String) constructors.
- Since:
- 2.6.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Patternprivate final Stringprivate static final Map<String, PlaceholderHandler> private static final String[]static final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringprivate static final Stringprivate final Pattern -
Constructor Summary
ConstructorsConstructorDescriptionCreates a PlaceholderDifferenceEvaluator with default delimitersPLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEXandPLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEX.PlaceholderDifferenceEvaluator(String placeholderOpeningDelimiterRegex, String placeholderClosingDelimiterRegex) Creates a PlaceholderDifferenceEvaluator with custom delimiters.PlaceholderDifferenceEvaluator(String placeholderOpeningDelimiterRegex, String placeholderClosingDelimiterRegex, String placeholderArgsOpeningDelimiterRegex, String placeholderArgsClosingDelimiterRegex, String placeholderArgsSeparatorRegex) Creates a PlaceholderDifferenceEvaluator with custom delimiters. -
Method Summary
Modifier and TypeMethodDescriptionprivate booleancantFindControlTextChildInTest(Comparison comparison) private booleancontrolHasOneTextChildAndTestHasNone(Comparison comparison) private ComparisonResultevaluate(Comparison comparison, ComparisonResult outcome) May alter the outcome of a comparison.private ComparisonResultevaluateAttributeListLengthConsideringPlaceholders(Comparison comparison, ComparisonResult outcome) private ComparisonResultevaluateConsideringPlaceholders(String controlText, String testText, ComparisonResult outcome) private ComparisonResultevaluateMissingAttributeConsideringPlaceholders(Comparison comparison, ComparisonResult outcome) private ComparisonResultevaluateMissingTextNodeConsideringPlaceholders(Comparison comparison, ComparisonResult outcome) private booleanprivate booleanisMissingAttributeDifference(Comparison comparison) private booleanisMissingTextNodeDifference(Comparison comparison) private booleanisTextCDATAMismatch(Comparison comparison) private booleanisTextLikeNode(Node node)
-
Field Details
-
PLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEX
-
PLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEX
-
PLACEHOLDER_DEFAULT_ARGS_OPENING_DELIMITER_REGEX
- Since:
- 2.7.0
-
PLACEHOLDER_DEFAULT_ARGS_CLOSING_DELIMITER_REGEX
- Since:
- 2.7.0
-
PLACEHOLDER_DEFAULT_ARGS_SEPARATOR_REGEX
- Since:
- 2.7.0
-
PLACEHOLDER_PREFIX_REGEX
-
KNOWN_HANDLERS
-
NO_ARGS
-
placeholderRegex
-
argsRegex
-
argsSplitter
-
-
Constructor Details
-
PlaceholderDifferenceEvaluator
public PlaceholderDifferenceEvaluator()Creates a PlaceholderDifferenceEvaluator with default delimitersPLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEXandPLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEX. -
PlaceholderDifferenceEvaluator
public PlaceholderDifferenceEvaluator(String placeholderOpeningDelimiterRegex, String placeholderClosingDelimiterRegex) Creates a PlaceholderDifferenceEvaluator with custom delimiters.- Parameters:
placeholderOpeningDelimiterRegex- regular expression for the opening delimiter of placeholder, defaults toPLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEXif the parameter is null or blankplaceholderClosingDelimiterRegex- regular expression for the closing delimiter of placeholder, defaults toPLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEXif the parameter is null or blank
-
PlaceholderDifferenceEvaluator
public PlaceholderDifferenceEvaluator(String placeholderOpeningDelimiterRegex, String placeholderClosingDelimiterRegex, String placeholderArgsOpeningDelimiterRegex, String placeholderArgsClosingDelimiterRegex, String placeholderArgsSeparatorRegex) Creates a PlaceholderDifferenceEvaluator with custom delimiters.- Parameters:
placeholderOpeningDelimiterRegex- regular expression for the opening delimiter of placeholder, defaults toPLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEXif the parameter is null or blankplaceholderClosingDelimiterRegex- regular expression for the closing delimiter of placeholder, defaults toPLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEXif the parameter is null or blankplaceholderArgsOpeningDelimiterRegex- regular expression for the opening delimiter of the placeholder's argument list, defaults toPLACEHOLDER_DEFAULT_ARGS_OPENING_DELIMITER_REGEXif the parameter is null or blankplaceholderArgsClosingDelimiterRegex- regular expression for the closing delimiter of the placeholder's argument list, defaults toPLACEHOLDER_DEFAULT_ARGS_CLOSING_DELIMITER_REGEXif the parameter is null or blankplaceholderArgsSeparatorRegex- regular expression for the delimiter between arguments inside of the placeholder's argument list, defaults toPLACEHOLDER_DEFAULT_ARGS_SEPARATOR_REGEXif the parameter is null or blank- Since:
- 2.7.0
-
-
Method Details
-
evaluate
Description copied from interface:DifferenceEvaluatorMay alter the outcome of a comparison.- Specified by:
evaluatein interfaceDifferenceEvaluator- Returns:
- the new result of the comparison.
-
isMissingTextNodeDifference
-
controlHasOneTextChildAndTestHasNone
-
cantFindControlTextChildInTest
-
evaluateMissingTextNodeConsideringPlaceholders
private ComparisonResult evaluateMissingTextNodeConsideringPlaceholders(Comparison comparison, ComparisonResult outcome) -
isTextCDATAMismatch
-
isTextLikeNode
-
isMissingAttributeDifference
-
evaluateMissingAttributeConsideringPlaceholders
private ComparisonResult evaluateMissingAttributeConsideringPlaceholders(Comparison comparison, ComparisonResult outcome) -
evaluateAttributeListLengthConsideringPlaceholders
private ComparisonResult evaluateAttributeListLengthConsideringPlaceholders(Comparison comparison, ComparisonResult outcome) -
evaluateConsideringPlaceholders
private ComparisonResult evaluateConsideringPlaceholders(String controlText, String testText, ComparisonResult outcome) -
isKnown
-
evaluate
-