• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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