コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
 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());
 }
コード例 #4
0
        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));
        }
コード例 #5
0
        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());
        }
コード例 #6
0
        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());
        }
コード例 #7
0
 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());
 }
コード例 #8
0
        /**
  * 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));
        }