Class ContentsBase
Base constraint for content constraints
Method Summary
-
__construct() public
Constructor
-
additionalFailureDescription() protected
Return additional failure description where needed.
-
count() public
Counts the number of constraint elements.
-
evaluate() public
Evaluates the constraint for parameter $other.
-
exporter() protected
-
fail() protected
Throws an exception for the given compared value and test description.
-
failureDescription() protected
Returns the description of the failure.
-
failureDescriptionInContext() protected
Returns the description of the failure when this constraint appears in context of an $operator expression.
-
matches() protected
Evaluates the constraint for parameter $other. Returns true if the constraint is met, false otherwise.
-
reduce() protected
Reduces the sub-expression starting at $this by skipping degenerate sub-expression and returns first descendant constraint that starts a non-reducible sub-expression.
-
toString() public
Returns a string representation of the object.
-
toStringInContext() protected
Returns a custom string representation of the constraint object when it appears in context of an $operator expression.
Method Detail
__construct() ¶ public
__construct(string[] $contents, string $output)
Constructor
Parameters
-
string[]
$contents Contents
-
string
$output Output type
additionalFailureDescription() ¶ protected
additionalFailureDescription(mixed $other): string
Return additional failure description where needed.
The function can be overridden to provide additional failure information like a diff
Parameters
-
mixed
$other evaluated value or object
Returns
string
evaluate() ¶ public
evaluate(mixed $other, string $description = '', bool $returnResult = false): ?bool
Evaluates the constraint for parameter $other.
If $returnResult is set to false (the default), an exception is thrown in case of a failure. null is returned otherwise.
If $returnResult is true, the result of the evaluation is returned as a boolean value instead: true in case of success, false in case of a failure.
Parameters
-
$other
-
string
$description optional -
bool
$returnResult optional
Returns
?bool
Throws
ExpectationFailedException
InvalidArgumentException
fail() ¶ protected
fail(mixed $other, string $description, ?ComparisonFailure $comparisonFailure = null): void
Throws an exception for the given compared value and test description.
Parameters
-
mixed
$other evaluated value or object
-
string
$description Additional information about the test
-
?ComparisonFailure
$comparisonFailure optional
Returns
void
Throws
ExpectationFailedException
InvalidArgumentException
failureDescription() ¶ protected
failureDescription(mixed $other): string
Returns the description of the failure.
The beginning of failure messages is "Failed asserting that" in most cases. This method should return the second part of that sentence.
To provide additional failure information additionalFailureDescription can be used.
Parameters
-
mixed
$other evaluated value or object
Returns
string
Throws
InvalidArgumentException
failureDescriptionInContext() ¶ protected
failureDescriptionInContext(Operator $operator, mixed $role, mixed $other): string
Returns the description of the failure when this constraint appears in context of an $operator expression.
The purpose of this method is to provide meaningful failure description in context of operators such as LogicalNot. Native PHPUnit constraints are supported out of the box by LogicalNot, but externally developed ones had no way to provide correct messages in this context.
The method shall return empty string, when it does not handle customization by itself.
Parameters
-
Operator
$operator the $operator of the expression
-
mixed
$role role of $this constraint in the $operator expression
-
mixed
$other evaluated value or object
Returns
string
matches() ¶ protected
matches(mixed $other): bool
Evaluates the constraint for parameter $other. Returns true if the constraint is met, false otherwise.
This method can be overridden to implement the evaluation algorithm.
Parameters
-
mixed
$other value or object to evaluate
Returns
bool
reduce() ¶ protected
reduce(): self
Reduces the sub-expression starting at $this by skipping degenerate sub-expression and returns first descendant constraint that starts a non-reducible sub-expression.
Returns $this for terminal constraints and for operators that start non-reducible sub-expression, or the nearest descendant of $this that starts a non-reducible sub-expression.
A constraint expression may be modelled as a tree with non-terminal nodes (operators) and terminal nodes. For example:
LogicalOr (operator, non-terminal)
- LogicalAnd (operator, non-terminal) | + IsType('int') (terminal) | + GreaterThan(10) (terminal)
- LogicalNot (operator, non-terminal)
- IsType('array') (terminal)
A degenerate sub-expression is a part of the tree, that effectively does not contribute to the evaluation of the expression it appears in. An example of degenerate sub-expression is a BinaryOperator constructed with single operand or nested BinaryOperators, each with single operand. An expression involving a degenerate sub-expression is equivalent to a reduced expression with the degenerate sub-expression removed, for example
LogicalAnd (operator)
- LogicalOr (degenerate operator) | + LogicalAnd (degenerate operator) | + IsType('int') (terminal)
- GreaterThan(10) (terminal)
is equivalent to
LogicalAnd (operator)
- IsType('int') (terminal)
- GreaterThan(10) (terminal)
because the subexpression
- LogicalOr
- LogicalAnd
- -
- LogicalAnd
is degenerate. Calling reduce() on the LogicalOr object above, as well as on LogicalAnd, shall return the IsType('int') instance.
Other specific reductions can be implemented, for example cascade of LogicalNot operators
- LogicalNot
- LogicalNot
+LogicalNot
- IsTrue
- LogicalNot
+LogicalNot
can be reduced to
LogicalNot
- IsTrue
Returns
self
toString() ¶ public
toString(): string
Returns a string representation of the object.
Returns
string
toStringInContext() ¶ protected
toStringInContext(Operator $operator, mixed $role): string
Returns a custom string representation of the constraint object when it appears in context of an $operator expression.
The purpose of this method is to provide meaningful descriptive string in context of operators such as LogicalNot. Native PHPUnit constraints are supported out of the box by LogicalNot, but externally developed ones had no way to provide correct strings in this context.
The method shall return empty string, when it does not handle customization by itself.
Parameters
-
Operator
$operator the $operator of the expression
-
mixed
$role role of $this constraint in the $operator expression
Returns
string