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.util.Arrays;
1947d431f63a66505a645f282416659a9758a91f1cBrett Chabot
2047d431f63a66505a645f282416659a9758a91f1cBrett Chabotimport org.easymock.internal.ArgumentToString;
2147d431f63a66505a645f282416659a9758a91f1cBrett Chabot
2247d431f63a66505a645f282416659a9758a91f1cBrett Chabotpublic class ArrayEquals extends Equals {
2347d431f63a66505a645f282416659a9758a91f1cBrett Chabot
2447d431f63a66505a645f282416659a9758a91f1cBrett Chabot    private static final long serialVersionUID = 1L;
2547d431f63a66505a645f282416659a9758a91f1cBrett Chabot
2647d431f63a66505a645f282416659a9758a91f1cBrett Chabot    public ArrayEquals(Object expected) {
2747d431f63a66505a645f282416659a9758a91f1cBrett Chabot        super(expected);
2847d431f63a66505a645f282416659a9758a91f1cBrett Chabot    }
2947d431f63a66505a645f282416659a9758a91f1cBrett Chabot
3047d431f63a66505a645f282416659a9758a91f1cBrett Chabot    @Override
3147d431f63a66505a645f282416659a9758a91f1cBrett Chabot    public boolean matches(Object actual) {
3247d431f63a66505a645f282416659a9758a91f1cBrett Chabot        Object expected = getExpected();
3347d431f63a66505a645f282416659a9758a91f1cBrett Chabot        if (expected instanceof boolean[]
3447d431f63a66505a645f282416659a9758a91f1cBrett Chabot                && (actual == null || actual instanceof boolean[])) {
3547d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return Arrays.equals((boolean[]) expected, (boolean[]) actual);
3647d431f63a66505a645f282416659a9758a91f1cBrett Chabot        } else if (expected instanceof byte[]
3747d431f63a66505a645f282416659a9758a91f1cBrett Chabot                && (actual == null || actual instanceof byte[])) {
3847d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return Arrays.equals((byte[]) expected, (byte[]) actual);
3947d431f63a66505a645f282416659a9758a91f1cBrett Chabot        } else if (expected instanceof char[]
4047d431f63a66505a645f282416659a9758a91f1cBrett Chabot                && (actual == null || actual instanceof char[])) {
4147d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return Arrays.equals((char[]) expected, (char[]) actual);
4247d431f63a66505a645f282416659a9758a91f1cBrett Chabot        } else if (expected instanceof double[]
4347d431f63a66505a645f282416659a9758a91f1cBrett Chabot                && (actual == null || actual instanceof double[])) {
4447d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return Arrays.equals((double[]) expected, (double[]) actual);
4547d431f63a66505a645f282416659a9758a91f1cBrett Chabot        } else if (expected instanceof float[]
4647d431f63a66505a645f282416659a9758a91f1cBrett Chabot                && (actual == null || actual instanceof float[])) {
4747d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return Arrays.equals((float[]) expected, (float[]) actual);
4847d431f63a66505a645f282416659a9758a91f1cBrett Chabot        } else if (expected instanceof int[]
4947d431f63a66505a645f282416659a9758a91f1cBrett Chabot                && (actual == null || actual instanceof int[])) {
5047d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return Arrays.equals((int[]) expected, (int[]) actual);
5147d431f63a66505a645f282416659a9758a91f1cBrett Chabot        } else if (expected instanceof long[]
5247d431f63a66505a645f282416659a9758a91f1cBrett Chabot                && (actual == null || actual instanceof long[])) {
5347d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return Arrays.equals((long[]) expected, (long[]) actual);
5447d431f63a66505a645f282416659a9758a91f1cBrett Chabot        } else if (expected instanceof short[]
5547d431f63a66505a645f282416659a9758a91f1cBrett Chabot                && (actual == null || actual instanceof short[])) {
5647d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return Arrays.equals((short[]) expected, (short[]) actual);
5747d431f63a66505a645f282416659a9758a91f1cBrett Chabot        } else if (expected instanceof Object[]
5847d431f63a66505a645f282416659a9758a91f1cBrett Chabot                && (actual == null || actual instanceof Object[])) {
5947d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return Arrays.equals((Object[]) expected, (Object[]) actual);
6047d431f63a66505a645f282416659a9758a91f1cBrett Chabot        } else {
6147d431f63a66505a645f282416659a9758a91f1cBrett Chabot            return super.matches(actual);
6247d431f63a66505a645f282416659a9758a91f1cBrett Chabot        }
6347d431f63a66505a645f282416659a9758a91f1cBrett Chabot    }
6447d431f63a66505a645f282416659a9758a91f1cBrett Chabot
6547d431f63a66505a645f282416659a9758a91f1cBrett Chabot    @Override
6647d431f63a66505a645f282416659a9758a91f1cBrett Chabot    public void appendTo(StringBuffer buffer) {
6747d431f63a66505a645f282416659a9758a91f1cBrett Chabot        ArgumentToString.appendArgument(getExpected(), buffer);
6847d431f63a66505a645f282416659a9758a91f1cBrett Chabot    }
6947d431f63a66505a645f282416659a9758a91f1cBrett Chabot}
70