Skip to content

Commit 873014e

Browse files
author
joe.walnes
committed
IsEqual method delegates to the object's equals() method for null values.
See http://code.google.com/p/hamcrest/issues/detail?id=22 (Thanks RoystonS)
1 parent c03c925 commit 873014e

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

hamcrest-core/src/main/java/org/hamcrest/core/IsEqual.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ public IsEqual(T equalArg) {
2222
}
2323

2424
public boolean matches(Object arg) {
25-
return areEqual(object, arg);
25+
return areEqual(arg, object);
2626
}
2727

2828
public void describeTo(Description description) {
2929
description.appendValue(object);
3030
}
3131

3232
private static boolean areEqual(Object o1, Object o2) {
33-
if (o1 == null || o2 == null) {
34-
return o1 == null && o2 == null;
33+
if (o1 == null) {
34+
return o2 == null;
3535
} else if (isArray(o1)) {
3636
return isArray(o2) && areArraysEqual(o1, o2);
3737
} else {

hamcrest-unit-test/src/main/java/org/hamcrest/core/IsEqualTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,22 @@ public void testCanCompareNullValues() {
3030
assertThat("hi", not(equalTo(null)));
3131
}
3232

33+
public void testHonoursIsEqualImplementationEvenWithNullValues() {
34+
Object alwaysEqual = new Object() {
35+
public boolean equals(Object obj) {
36+
return true;
37+
}
38+
};
39+
Object neverEqual = new Object() {
40+
public boolean equals(Object obj) {
41+
return false;
42+
}
43+
};
44+
45+
assertThat(alwaysEqual, equalTo(null));
46+
assertThat(neverEqual, not(equalTo(null)));
47+
}
48+
3349
public void testComparesTheElementsOfAnObjectArray() {
3450
String[] s1 = {"a", "b"};
3551
String[] s2 = {"a", "b"};

0 commit comments

Comments
 (0)