1c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinpackage org.hamcrest.core;
2c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
3c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.hamcrest.Matcher;
4c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.junit.Test;
5c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
6c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static org.hamcrest.AbstractMatcherTest.*;
7c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static org.hamcrest.core.IsEqual.equalTo;
8c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static org.hamcrest.core.IsInstanceOf.instanceOf;
9c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static org.hamcrest.core.IsNot.not;
10c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
11c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinpublic final class IsNotTest {
12c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
13c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    @Test public void
14c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    copesWithNullsAndUnknownTypes() {
15c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        Matcher<String> matcher = not("something");
16c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
17c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertNullSafe(matcher);
18c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertUnknownTypeSafe(matcher);
19c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    }
20c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
21c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    @Test public void
22c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    evaluatesToTheTheLogicalNegationOfAnotherMatcher() {
23c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        final Matcher<String> matcher = not(equalTo("A"));
24c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
25c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertMatches(matcher, "B");
26c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDoesNotMatch(matcher, "A");
27c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    }
28c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
29c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    @Test public void
30c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    providesConvenientShortcutForNotEqualTo() {
31c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        final Matcher<String> matcher = not("A");
32c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
33c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertMatches(matcher, "B");
34c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDoesNotMatch(matcher, "A");
35c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    }
36c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
37c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    @Test public void
38c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    usesDescriptionOfNegatedMatcherWithPrefix() {
39c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDescription("not an instance of java.lang.String", not(instanceOf(String.class)));
40c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDescription("not \"A\"", not("A"));
41c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    }
42c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin}
43