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