Skip to content

Provide Boolean-Expression combining matcher and expression #44

@mmichaelis

Description

@mmichaelis

Sometimes you might want to reuse an existing expression and a given matcher to combine both to a simple Boolean-Expression. Here is an example how this might look like:

  private static class MatcherExpressionCombiningExpression<T> extends AbstractExpression<Boolean> {
    private final Expression<? extends T> expression;
    private final Matcher<? super T> matcher;

    private MatcherExpressionCombiningExpression(final Expression<? extends T> expression, final Matcher<? super T> matcher) {
      this.expression = expression;
      this.matcher = matcher;
    }

    @Override
    public void describeTo(@Nonnull final Description description) {
      description.appendText("expression: ");
      description.appendDescriptionOf(expression);
      description.appendText(", matcher: ");
      description.appendDescriptionOf(matcher);
      super.describeTo(description);
    }

    @Override
    public Boolean get() {
      return matcher.matches(expression.get());
    }

    @Factory
    public static <T> MatcherExpressionCombiningExpression<T> combiningExpression(final Expression<? extends T> expression, final Matcher<? super T> matcher) {
      return new MatcherExpressionCombiningExpression<T>(expression, matcher);
    }
  }

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions