1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/*
2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Copyright (c) 2007 Mockito contributors
3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * This program is made available under the terms of the MIT License.
4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */
5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpackage org.mockito.internal.matchers;
7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.io.Serializable;
9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.hamcrest.Description;
11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.hamcrest.Matcher;
12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.ArgumentMatcher;
13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson@SuppressWarnings("unchecked")
15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class Not extends ArgumentMatcher implements Serializable {
16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    private static final long serialVersionUID = 4627373642333593264L;
18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    private final Matcher first;
19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public Not(Matcher first) {
21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        this.first = first;
22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public boolean matches(Object actual) {
25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        return !first.matches(actual);
26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public void describeTo(Description description) {
29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        description.appendText("not(");
30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        first.describeTo(description);
31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        description.appendText(")");
32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}