1/*
2 * Copyright 2001-2009 OFFIS, Tammo Freese
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.easymock.internal.matchers;
17
18import java.io.Serializable;
19
20import org.easymock.IArgumentMatcher;
21import org.easymock.internal.ArgumentToString;
22
23public class Equals implements IArgumentMatcher, Serializable {
24
25    private static final long serialVersionUID = 583055160049982067L;
26
27    private final Object expected;
28
29    public Equals(Object expected) {
30        this.expected = expected;
31    }
32
33    public boolean matches(Object actual) {
34        if (this.expected == null) {
35            return actual == null;
36        }
37        return expected.equals(actual);
38    }
39
40    public void appendTo(StringBuffer buffer) {
41        ArgumentToString.appendArgument(expected, buffer);
42    }
43
44    protected final Object getExpected() {
45        return expected;
46    }
47
48    @Override
49    public boolean equals(Object o) {
50        if (o == null || !this.getClass().equals(o.getClass()))
51            return false;
52        Equals other = (Equals) o;
53        return this.expected == null && other.expected == null
54                || this.expected != null
55                && this.expected.equals(other.expected);
56    }
57
58    @Override
59    public int hashCode() {
60        throw new UnsupportedOperationException("hashCode() is not supported");
61    }
62
63}
64