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