147d431f63a66505a645f282416659a9758a91f1cBrett Chabot/*
247d431f63a66505a645f282416659a9758a91f1cBrett Chabot * Copyright 2001-2009 OFFIS, Tammo Freese
347d431f63a66505a645f282416659a9758a91f1cBrett Chabot *
447d431f63a66505a645f282416659a9758a91f1cBrett Chabot * Licensed under the Apache License, Version 2.0 (the "License");
547d431f63a66505a645f282416659a9758a91f1cBrett Chabot * you may not use this file except in compliance with the License.
647d431f63a66505a645f282416659a9758a91f1cBrett Chabot * You may obtain a copy of the License at
747d431f63a66505a645f282416659a9758a91f1cBrett Chabot *
847d431f63a66505a645f282416659a9758a91f1cBrett Chabot *     http://www.apache.org/licenses/LICENSE-2.0
947d431f63a66505a645f282416659a9758a91f1cBrett Chabot *
1047d431f63a66505a645f282416659a9758a91f1cBrett Chabot * Unless required by applicable law or agreed to in writing, software
1147d431f63a66505a645f282416659a9758a91f1cBrett Chabot * distributed under the License is distributed on an "AS IS" BASIS,
1247d431f63a66505a645f282416659a9758a91f1cBrett Chabot * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1347d431f63a66505a645f282416659a9758a91f1cBrett Chabot * See the License for the specific language governing permissions and
1447d431f63a66505a645f282416659a9758a91f1cBrett Chabot * limitations under the License.
1547d431f63a66505a645f282416659a9758a91f1cBrett Chabot */
1647d431f63a66505a645f282416659a9758a91f1cBrett Chabotpackage org.easymock.internal.matchers;
1747d431f63a66505a645f282416659a9758a91f1cBrett Chabot
1847d431f63a66505a645f282416659a9758a91f1cBrett Chabotimport java.io.Serializable;
1947d431f63a66505a645f282416659a9758a91f1cBrett Chabot
2047d431f63a66505a645f282416659a9758a91f1cBrett Chabotimport org.easymock.IArgumentMatcher;
2147d431f63a66505a645f282416659a9758a91f1cBrett Chabotimport org.easymock.internal.ArgumentToString;
2247d431f63a66505a645f282416659a9758a91f1cBrett Chabot
2347d431f63a66505a645f282416659a9758a91f1cBrett Chabotpublic class Equals implements IArgumentMatcher, Serializable {
2447d431f63a66505a645f282416659a9758a91f1cBrett Chabot
2547d431f63a66505a645f282416659a9758a91f1cBrett Chabot    private static final long serialVersionUID = 583055160049982067L;
2647d431f63a66505a645f282416659a9758a91f1cBrett Chabot
2747d431f63a66505a645f282416659a9758a91f1cBrett Chabot    private final Object expected;
2847d431f63a66505a645f282416659a9758a91f1cBrett Chabot
2947d431f63a66505a645f282416659a9758a91f1cBrett Chabot    public Equals(Object expected) {
3047d431f63a66505a645f282416659a9758a91f1cBrett Chabot        this.expected = expected;
3147d431f63a66505a645f282416659a9758a91f1cBrett Chabot    }
3247d431f63a66505a645f282416659a9758a91f1cBrett Chabot
3347d431f63a66505a645f282416659a9758a91f1cBrett Chabot    public boolean matches(Object actual) {
3447d431f63a66505a645f282416659a9758a91f1cBrett Chabot        if (this.expected == null) {
3547d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return actual == null;
3647d431f63a66505a645f282416659a9758a91f1cBrett Chabot        }
3747d431f63a66505a645f282416659a9758a91f1cBrett Chabot        return expected.equals(actual);
3847d431f63a66505a645f282416659a9758a91f1cBrett Chabot    }
3947d431f63a66505a645f282416659a9758a91f1cBrett Chabot
4047d431f63a66505a645f282416659a9758a91f1cBrett Chabot    public void appendTo(StringBuffer buffer) {
4147d431f63a66505a645f282416659a9758a91f1cBrett Chabot        ArgumentToString.appendArgument(expected, buffer);
4247d431f63a66505a645f282416659a9758a91f1cBrett Chabot    }
4347d431f63a66505a645f282416659a9758a91f1cBrett Chabot
4447d431f63a66505a645f282416659a9758a91f1cBrett Chabot    protected final Object getExpected() {
4547d431f63a66505a645f282416659a9758a91f1cBrett Chabot        return expected;
4647d431f63a66505a645f282416659a9758a91f1cBrett Chabot    }
4747d431f63a66505a645f282416659a9758a91f1cBrett Chabot
4847d431f63a66505a645f282416659a9758a91f1cBrett Chabot    @Override
4947d431f63a66505a645f282416659a9758a91f1cBrett Chabot    public boolean equals(Object o) {
5047d431f63a66505a645f282416659a9758a91f1cBrett Chabot        if (o == null || !this.getClass().equals(o.getClass()))
5147d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return false;
5247d431f63a66505a645f282416659a9758a91f1cBrett Chabot        Equals other = (Equals) o;
5347d431f63a66505a645f282416659a9758a91f1cBrett Chabot        return this.expected == null && other.expected == null
5447d431f63a66505a645f282416659a9758a91f1cBrett Chabot                || this.expected != null
5547d431f63a66505a645f282416659a9758a91f1cBrett Chabot                && this.expected.equals(other.expected);
5647d431f63a66505a645f282416659a9758a91f1cBrett Chabot    }
5747d431f63a66505a645f282416659a9758a91f1cBrett Chabot
5847d431f63a66505a645f282416659a9758a91f1cBrett Chabot    @Override
5947d431f63a66505a645f282416659a9758a91f1cBrett Chabot    public int hashCode() {
6047d431f63a66505a645f282416659a9758a91f1cBrett Chabot        throw new UnsupportedOperationException("hashCode() is not supported");
6147d431f63a66505a645f282416659a9758a91f1cBrett Chabot    }
6247d431f63a66505a645f282416659a9758a91f1cBrett Chabot
6347d431f63a66505a645f282416659a9758a91f1cBrett Chabot}
64