private static void assertErrorMessage(Throwable e, String message) { // TODO(kevinb): use a Truth assertion here if (!e.getMessage().contains(message)) { fail("expected <" + e.getMessage() + "> to contain <" + message + ">"); } }
/** Test adding null equal object yields error */ public void testAddNullEqualObject() { try { equalsTester.addEqualityGroup(reference, (Object[]) null); fail("Should fail on null equal object"); } catch (NullPointerException e) { } }
/** Test equalObjects after adding multiple instances at once with a null */ public void testAddTwoEqualObjectsAtOnceWithNull() { try { equalsTester.addEqualityGroup(reference, equalObject1, null); fail("Should fail on null equal object"); } catch (NullPointerException e) { } }
/** Test null reference yields error */ public void testAddNullReference() { try { equalsTester.addEqualityGroup((Object) null); fail("Should fail on null reference"); } catch (NullPointerException e) { } }
public void testNullEqualityGroup() { EqualsTester tester = new EqualsTester(); try { tester.addEqualityGroup((Object[]) null); fail(); } catch (NullPointerException e) { } }
public void testNullObjectInEqualityGroup() { EqualsTester tester = new EqualsTester(); try { tester.addEqualityGroup(1, null, 3); fail(); } catch (NullPointerException e) { assertErrorMessage(e, "at index 1"); } }
/** * Test adding objects only by addEqualityGroup, with no reference object specified in the * constructor. */ public void testAddEqualObjectWithOArgConstructor() { equalsTester.addEqualityGroup(equalObject1, notEqualObject1); try { equalsTester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage( e, equalObject1 + " [group 1, item 1] must be Object#equals to " + notEqualObject1 + " [group 1, item 2]"); return; } fail("Should get not equal to equal object error"); }
/** Test proper handling where an object tests equal to null */ public void testInvalidEqualsNull() { Object obj = new InvalidEqualsNullObject(); equalsTester.addEqualityGroup(obj); try { equalsTester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage(e, obj + " must not be Object#equals to null"); return; } fail("Should get equal to null error"); }
/** Test proper handling where an object is not equal to one the user has said should be equal */ public void testInvalidNotEqualsEqualObject() { equalsTester.addEqualityGroup(reference, notEqualObject1); try { equalsTester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage(e, reference + " [group 1, item 1]"); assertErrorMessage(e, notEqualObject1 + " [group 1, item 2]"); return; } fail("Should get not equal to equal object error"); }
/** Test proper handling of case where an object is not equal to itself */ public void testNonreflexiveEquals() { Object obj = new NonReflexiveObject(); equalsTester.addEqualityGroup(obj); try { equalsTester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage(e, obj + " must be Object#equals to itself"); return; } fail("Should get non-reflexive error"); }
/** Test proper handling where an object incorrectly tests for an incompatible class */ public void testInvalidEqualsIncompatibleClass() { Object obj = new InvalidEqualsIncompatibleClassObject(); equalsTester.addEqualityGroup(obj); try { equalsTester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage( e, obj + " must not be Object#equals to an arbitrary object of another class"); return; } fail("Should get equal to incompatible class error"); }
/** * Test for an invalid hashCode method, i.e., one that returns different value for objects that * are equal according to the equals method */ public void testInvalidHashCode() { Object a = new InvalidHashCodeObject(1, 2); Object b = new InvalidHashCodeObject(1, 2); equalsTester.addEqualityGroup(a, b); try { equalsTester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage( e, "the Object#hashCode (" + a.hashCode() + ") of " + a + " [group 1, item 1] must be equal to the Object#hashCode (" + b.hashCode() + ") of " + b); return; } fail("Should get invalid hashCode error"); }
public void testUnequalObjectsInEqualityGroup() { EqualsTester tester = new EqualsTester().addEqualityGroup(named("foo"), named("bar")); try { tester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage(e, "foo [group 1, item 1] must be Object#equals to bar [group 1, item 2]"); return; } fail("should failed because of unequal objects in the same equality group"); }
public void testSymmetryBroken() { EqualsTester tester = new EqualsTester().addEqualityGroup(named("foo").addPeers("bar"), named("bar")); try { tester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage(e, "bar [group 1, item 2] must be Object#equals to foo [group 1, item 1]"); return; } fail("should failed because symmetry is broken"); }
public void testTransitivityBrokenInEqualityGroup() { EqualsTester tester = new EqualsTester() .addEqualityGroup( named("foo").addPeers("bar", "baz"), named("bar").addPeers("foo"), named("baz").addPeers("foo")); try { tester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage(e, "bar [group 1, item 2] must be Object#equals to baz [group 1, item 3]"); return; } fail("should failed because transitivity is broken"); }
public void testTransitivityBrokenAcrossEqualityGroups() { EqualsTester tester = new EqualsTester() .addEqualityGroup(named("foo").addPeers("bar"), named("bar").addPeers("foo", "x")) .addEqualityGroup(named("baz").addPeers("x"), named("x").addPeers("baz", "bar")); try { tester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage( e, "bar [group 1, item 2] must not be Object#equals to x [group 2, item 2]"); return; } fail("should failed because transitivity is broken"); }
private static void assertErrorMessage(Throwable e, String message) { // TODO(kevinb): use a Truth assertion here if (!e.getMessage().contains(message)) { fail("expected <" + e.getMessage() + "> to contain <" + message + ">"); } }
/** Test equalObjects after adding multiple instances at once with a null */ public void testAddTwoEqualObjectsAtOnceWithNull() { try { equalsTester.addEqualityGroup(reference, equalObject1, null); fail("Should fail on null equal object"); } catch (NullPointerException e) { } }
/** Test proper handling where an object is not equal to one the user has said should be equal */ public void testInvalidNotEqualsEqualObject() { equalsTester.addEqualityGroup(reference, notEqualObject1); try { equalsTester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage(e, reference + " [group 1, item 1]"); assertErrorMessage(e, notEqualObject1 + " [group 1, item 2]"); return; } fail("Should get not equal to equal object error"); }
public void testSymmetryBroken() { EqualsTester tester = new EqualsTester().addEqualityGroup(named("foo").addPeers("bar"), named("bar")); try { tester.testEquals(); } catch (AssertionFailedError e) { assertErrorMessage(e, "bar [group 1, item 2] must be Object#equals to foo [group 1, item 1]"); return; } fail("should failed because symmetry is broken"); }