public void testReflectionEquals() { TestObject o1 = new TestObject(4); TestObject o2 = new TestObject(5); Assert.IsTrue(EqualsBuilder.ReflectionEquals(o1, o1)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(o1, o2)); o2.setA(4); Assert.IsTrue(EqualsBuilder.ReflectionEquals(o1, o2)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(o1, this)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(o1, null)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(null, o2)); Assert.IsTrue(EqualsBuilder.ReflectionEquals((Object) null, (Object) null)); }
public void testReflectionHierarchyEquals(bool testTransients) { TestObject to1 = new TestObject(4); TestObject to1Bis = new TestObject(4); TestObject to1Ter = new TestObject(4); TestObject to2 = new TestObject(5); TestEmptySubObject teso = new TestEmptySubObject(4); TestTSubObject ttso = new TestTSubObject(4, 1); TestTTSubObject tttso = new TestTTSubObject(4, 1, 2); TestTTLeafObject ttlo = new TestTTLeafObject(4, 1, 2, 3); TestSubObject tso1 = new TestSubObject(1, 4); TestSubObject tso1bis = new TestSubObject(1, 4); TestSubObject tso1ter = new TestSubObject(1, 4); TestSubObject tso2 = new TestSubObject(2, 5); testReflectionEqualsEquivalenceRelationship(to1, to1Bis, to1Ter, to2, new TestObject(), testTransients); testReflectionEqualsEquivalenceRelationship(tso1, tso1bis, tso1ter, tso2, new TestSubObject(), testTransients); // More sanity checks: // same values Assert.IsTrue(EqualsBuilder.ReflectionEquals(ttlo, ttlo, testTransients)); Assert.IsTrue(EqualsBuilder.ReflectionEquals(new TestSubObject(1, 10), new TestSubObject(1, 10), testTransients)); // same super values, diff sub values Assert.IsTrue( !EqualsBuilder.ReflectionEquals(new TestSubObject(1, 10), new TestSubObject(1, 11), testTransients)); Assert.IsTrue( !EqualsBuilder.ReflectionEquals(new TestSubObject(1, 11), new TestSubObject(1, 10), testTransients)); // diff super values, same sub values Assert.IsTrue( !EqualsBuilder.ReflectionEquals(new TestSubObject(0, 10), new TestSubObject(1, 10), testTransients)); Assert.IsTrue( !EqualsBuilder.ReflectionEquals(new TestSubObject(1, 10), new TestSubObject(0, 10), testTransients)); // mix super and sub types: equals Assert.IsTrue(EqualsBuilder.ReflectionEquals(to1, teso, testTransients)); Assert.IsTrue(EqualsBuilder.ReflectionEquals(teso, to1, testTransients)); Assert.IsTrue(EqualsBuilder.ReflectionEquals(to1, ttso, false)); // Force testTransients = false for this assert Assert.IsTrue(EqualsBuilder.ReflectionEquals(ttso, to1, false)); // Force testTransients = false for this assert Assert.IsTrue(EqualsBuilder.ReflectionEquals(to1, tttso, false)); // Force testTransients = false for this assert Assert.IsTrue(EqualsBuilder.ReflectionEquals(tttso, to1, false)); // Force testTransients = false for this assert Assert.IsTrue(EqualsBuilder.ReflectionEquals(ttso, tttso, false)); // Force testTransients = false for this assert Assert.IsTrue(EqualsBuilder.ReflectionEquals(tttso, ttso, false)); // Force testTransients = false for this assert // mix super and sub types: NOT equals Assert.IsTrue(!EqualsBuilder.ReflectionEquals(new TestObject(0), new TestEmptySubObject(1), testTransients)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(new TestEmptySubObject(1), new TestObject(0), testTransients)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(new TestObject(0), new TestTSubObject(1, 1), testTransients)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(new TestTSubObject(1, 1), new TestObject(0), testTransients)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(new TestObject(1), new TestSubObject(0, 10), testTransients)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(new TestSubObject(0, 10), new TestObject(1), testTransients)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(to1, ttlo)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(tso1, this)); }
public void testObjectArrayHiddenByObject() { TestObject[] array1 = new TestObject[2]; array1[0] = new TestObject(4); array1[1] = new TestObject(5); TestObject[] array2 = new TestObject[2]; array2[0] = new TestObject(4); array2[1] = new TestObject(5); Object obj1 = array1; Object obj2 = array2; Assert.IsTrue(new EqualsBuilder().Append(obj1, obj1).IsEquals()); Assert.IsTrue(new EqualsBuilder().Append(obj1, array1).IsEquals()); Assert.IsTrue(new EqualsBuilder().Append(obj1, obj2).IsEquals()); Assert.IsTrue(new EqualsBuilder().Append(obj1, array2).IsEquals()); array1[1].setA(6); Assert.IsTrue(!new EqualsBuilder().Append(obj1, obj2).IsEquals()); }
public void testObjectArray() { TestObject[] obj1 = new TestObject[3]; obj1[0] = new TestObject(4); obj1[1] = new TestObject(5); obj1[2] = null; TestObject[] obj2 = new TestObject[3]; obj2[0] = new TestObject(4); obj2[1] = new TestObject(5); obj2[2] = null; Assert.IsTrue(new EqualsBuilder().Append(obj1, obj1).IsEquals()); Assert.IsTrue(new EqualsBuilder().Append(obj2, obj2).IsEquals()); Assert.IsTrue(new EqualsBuilder().Append(obj1, obj2).IsEquals()); obj1[1].setA(6); Assert.IsTrue(!new EqualsBuilder().Append(obj1, obj2).IsEquals()); obj1[1].setA(5); Assert.IsTrue(new EqualsBuilder().Append(obj1, obj2).IsEquals()); obj1[2] = obj1[1]; Assert.IsTrue(!new EqualsBuilder().Append(obj1, obj2).IsEquals()); obj1[2] = null; Assert.IsTrue(new EqualsBuilder().Append(obj1, obj2).IsEquals()); obj2 = null; Assert.IsTrue(!new EqualsBuilder().Append(obj1, obj2).IsEquals()); obj1 = null; Assert.IsTrue(new EqualsBuilder().Append(obj1, obj2).IsEquals()); }
public void testObject() { TestObject o1 = new TestObject(4); TestObject o2 = new TestObject(5); Assert.IsTrue(new EqualsBuilder().Append(o1, o1).IsEquals()); Assert.IsTrue(!new EqualsBuilder().Append(o1, o2).IsEquals()); o2.setA(4); Assert.IsTrue(new EqualsBuilder().Append(o1, o2).IsEquals()); Assert.IsTrue(!new EqualsBuilder().Append(o1, this).IsEquals()); Assert.IsTrue(!new EqualsBuilder().Append(o1, null).IsEquals()); Assert.IsTrue(!new EqualsBuilder().Append(null, o2).IsEquals()); Assert.IsTrue(new EqualsBuilder().Append((Object) null, (Object) null).IsEquals()); }
public void testSuper() { TestObject o1 = new TestObject(4); TestObject o2 = new TestObject(5); Assert.AreEqual(true, new EqualsBuilder().AppendSuper(true).Append(o1, o1).IsEquals()); Assert.AreEqual(false, new EqualsBuilder().AppendSuper(false).Append(o1, o1).IsEquals()); Assert.AreEqual(false, new EqualsBuilder().AppendSuper(true).Append(o1, o2).IsEquals()); Assert.AreEqual(false, new EqualsBuilder().AppendSuper(false).Append(o1, o2).IsEquals()); }
/** * Equivalence relationship tests inspired by "Effective Java": * <ul> * <li>reflection</li> * <li>symmetry</li> * <li>transitive</li> * <li>consistency</li> * <li>non-null reference</li> * </ul> * @param to a TestObject * @param toBis a TestObject, equal to to and toTer * @param toTer Left hand side, equal to to and toBis * @param to2 a different TestObject * @param oToChange a TestObject that will be changed */ public void testReflectionEqualsEquivalenceRelationship( TestObject to, TestObject toBis, TestObject toTer, TestObject to2, TestObject oToChange, bool testTransients) { // reflection test Assert.IsTrue(EqualsBuilder.ReflectionEquals(to, to, testTransients)); Assert.IsTrue(EqualsBuilder.ReflectionEquals(to2, to2, testTransients)); // symmetry test Assert.IsTrue(EqualsBuilder.ReflectionEquals(to, toBis, testTransients) && EqualsBuilder.ReflectionEquals(toBis, to, testTransients)); // transitive test Assert.IsTrue( EqualsBuilder.ReflectionEquals(to, toBis, testTransients) && EqualsBuilder.ReflectionEquals(toBis, toTer, testTransients) && EqualsBuilder.ReflectionEquals(to, toTer, testTransients)); // consistency test oToChange.setA(to.getA()); if (oToChange is TestSubObject) { ((TestSubObject) oToChange).setB(((TestSubObject) to).getB()); } Assert.IsTrue(EqualsBuilder.ReflectionEquals(oToChange, to, testTransients)); Assert.IsTrue(EqualsBuilder.ReflectionEquals(oToChange, to, testTransients)); oToChange.setA(to.getA() + 1); if (oToChange is TestSubObject) { ((TestSubObject) oToChange).setB(((TestSubObject) to).getB() + 1); } Assert.IsTrue(!EqualsBuilder.ReflectionEquals(oToChange, to, testTransients)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(oToChange, to, testTransients)); // non-null reference test Assert.IsTrue(!EqualsBuilder.ReflectionEquals(to, null, testTransients)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(to2, null, testTransients)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(null, to, testTransients)); Assert.IsTrue(!EqualsBuilder.ReflectionEquals(null, to2, testTransients)); Assert.IsTrue(EqualsBuilder.ReflectionEquals((Object) null, (Object) null, testTransients)); }