Class CombinableMatcher<T>

Type Parameters:
T - the type of matcher being combined.
All Implemented Interfaces:
Matcher<T>, SelfDescribing

public class CombinableMatcher<T> extends TypeSafeDiagnosingMatcher<T>
Allows matchers of the same type to be combined using either/or, or both/and. For example:
 import static org.hamcrest.core.CombinableMatcher.either;
 import static org.hamcrest.core.CombinableMatcher.both;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.not;

 Matcher<Integer> either_3_or_4 = either(equalTo(3)).or(equalTo(4));
 Matcher<Integer> neither_3_nor_4 = both(not(equalTo(3))).and(not(equalTo(4)));
See Also:
  • Constructor Details

    • CombinableMatcher

      public CombinableMatcher(Matcher<? super T> matcher)
      Constructor, best called from either or both.
      Parameters:
      matcher - the starting matcher
      See Also:
  • Method Details

    • matchesSafely

      protected boolean matchesSafely(T item, Description mismatch)
      Description copied from class: TypeSafeDiagnosingMatcher
      Subclasses should implement this. The item will already have been checked for the specific type and will never be null.
      Specified by:
      matchesSafely in class TypeSafeDiagnosingMatcher<T>
      Parameters:
      item - the item.
      mismatch - the mismatch description.
      Returns:
      boolean true/false depending if item matches matcher.
    • describeTo

      public void describeTo(Description description)
      Description copied from interface: SelfDescribing
      Generates a description of the object. The description may be part of a description of a larger object of which this is just a component, so it should be worded appropriately.
      Parameters:
      description - The description to be built or appended to.
    • and

      public CombinableMatcher<T> and(Matcher<? super T> other)
      Specify the second matcher in a CombinableMatcher pair.
      Parameters:
      other - the second matcher
      Returns:
      the combined matcher
    • or

      public CombinableMatcher<T> or(Matcher<? super T> other)
      Specify the second matcher in a CombinableMatcher pair.
      Parameters:
      other - the second matcher
      Returns:
      the combined matcher
    • both

      public static <LHS> CombinableMatcher.CombinableBothMatcher<LHS> both(Matcher<? super LHS> matcher)
      Creates a matcher that matches when both of the specified matchers match the examined object. For example:
      assertThat("fab", both(containsString("a")).and(containsString("b")))
      Type Parameters:
      LHS - the matcher type.
      Parameters:
      matcher - the matcher to combine, and both must pass.
      Returns:
      The matcher.
    • either

      public static <LHS> CombinableMatcher.CombinableEitherMatcher<LHS> either(Matcher<? super LHS> matcher)
      Creates a matcher that matches when either of the specified matchers match the examined object. For example:
      assertThat("fan", either(containsString("a")).or(containsString("b")))
      Type Parameters:
      LHS - the matcher type.
      Parameters:
      matcher - the matcher to combine, and either must pass.
      Returns:
      The matcher.