1 /* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5 package org.mockito.internal.matchers; 6 7 import java.lang.reflect.Array; 8 9 // stolen from hamcrest because I didn't want to have more dependency than Matcher class 10 public final class Equality { 11 areEqual(Object o1, Object o2)12 public static boolean areEqual(Object o1, Object o2) { 13 if (o1 == o2) { 14 return true; 15 } else if (o1 == null || o2 == null) { 16 return false; 17 } else if (isArray(o1)) { 18 return isArray(o2) && areArraysEqual(o1, o2); 19 } else { 20 return o1.equals(o2); 21 } 22 } 23 areArraysEqual(Object o1, Object o2)24 static boolean areArraysEqual(Object o1, Object o2) { 25 return areArrayLengthsEqual(o1, o2) && areArrayElementsEqual(o1, o2); 26 } 27 areArrayLengthsEqual(Object o1, Object o2)28 static boolean areArrayLengthsEqual(Object o1, Object o2) { 29 return Array.getLength(o1) == Array.getLength(o2); 30 } 31 areArrayElementsEqual(Object o1, Object o2)32 static boolean areArrayElementsEqual(Object o1, Object o2) { 33 for (int i = 0; i < Array.getLength(o1); i++) { 34 if (!areEqual(Array.get(o1, i), Array.get(o2, i))) { 35 return false; 36 } 37 } 38 return true; 39 } 40 isArray(Object o)41 static boolean isArray(Object o) { 42 return o.getClass().isArray(); 43 } 44 Equality()45 private Equality() {} 46 } 47