• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.hamcrest.core;
2 
3 import static org.hamcrest.core.IsInstanceOf.instanceOf;
4 import static org.hamcrest.core.IsEqual.equalTo;
5 import org.hamcrest.Factory;
6 import org.hamcrest.Matcher;
7 import org.hamcrest.BaseMatcher;
8 import org.hamcrest.Description;
9 
10 /**
11  * Decorates another Matcher, retaining the behavior but allowing tests
12  * to be slightly more expressive.
13  *
14  * eg. assertThat(cheese, equalTo(smelly))
15  * vs  assertThat(cheese, is(equalTo(smelly)))
16  */
17 public class Is<T> extends BaseMatcher<T> {
18 
19     private final Matcher<T> matcher;
20 
Is(Matcher<T> matcher)21     public Is(Matcher<T> matcher) {
22         this.matcher = matcher;
23     }
24 
matches(Object arg)25     public boolean matches(Object arg) {
26         return matcher.matches(arg);
27     }
28 
describeTo(Description description)29     public void describeTo(Description description) {
30         description.appendText("is ").appendDescriptionOf(matcher);
31     }
32 
33     /**
34      * Decorates another Matcher, retaining the behavior but allowing tests
35      * to be slightly more expressive.
36      *
37      * eg. assertThat(cheese, equalTo(smelly))
38      * vs  assertThat(cheese, is(equalTo(smelly)))
39      */
40     @Factory
is(Matcher<T> matcher)41     public static <T> Matcher<T> is(Matcher<T> matcher) {
42         return new Is<T>(matcher);
43     }
44 
45     /**
46      * This is a shortcut to the frequently used is(equalTo(x)).
47      *
48      * eg. assertThat(cheese, is(equalTo(smelly)))
49      * vs  assertThat(cheese, is(smelly))
50      */
51     @Factory
is(T value)52     public static <T> Matcher<T> is(T value) {
53         return is(equalTo(value));
54     }
55 
56     /**
57      * This is a shortcut to the frequently used is(instanceOf(SomeClass.class)).
58      *
59      * eg. assertThat(cheese, is(instanceOf(Cheddar.class)))
60      * vs  assertThat(cheese, is(Cheddar.class))
61      */
62     @Factory
is(Class<?> type)63     public static Matcher<Object> is(Class<?> type) {
64         return is(instanceOf(type));
65     }
66 
67 }
68 
69