Ejemplo n.º 1
0
        public static void Assert_StructsAreEqual(Struct s, Struct sCopy)
        {
            // values are same and then are not the same
            Assert.AreEqual(s.GetItem1(), sCopy.GetItem1());
            sCopy.IncrementItem1();
            Assert.AreNotEqual(s.GetItem1(), sCopy.GetItem1());
            sCopy.DecrementItem1();

            // Item23 and Item32 in struct should be the same instance (see constructor of Struct)
            Assert.AreSame(sCopy._item23, sCopy._item32);

            // reference field test
            if (s._item23 != null)
            {
                SimpleClassTests.Assert_AreEqualButNotSame(s._item23, sCopy._item23);
            }

            // reference field test
            if (s._item32 != null)
            {
                SimpleClassTests.Assert_AreEqualButNotSame(s._item32, sCopy._item32);
            }

            // readonly reference field test
            if (s._item4 != null)
            {
                SimpleClassTests.Assert_AreEqualButNotSame(s._item4, sCopy._item4);
            }
        }
Ejemplo n.º 2
0
        public static void Assert_DeeperStructsAreEqual(DeeperStruct s, DeeperStruct sCopy)
        {
            // values are same and then are not the same
            Assert.AreEqual(s.GetItem1(), sCopy.GetItem1());
            sCopy.IncrementItem1();
            Assert.AreNotEqual(s.GetItem1(), sCopy.GetItem1());
            sCopy.DecrementItem1();

            // test that deep hidden class in structure of structs was copied well
            if (s.GetItem2() != null)
            {
                SimpleClassTests.Assert_AreEqualButNotSame(s.GetItem2(), sCopy.GetItem2());
            }
        }
Ejemplo n.º 3
0
        public static void Assert_AreEqualButNotSame(ModerateClass m, ModerateClass mCopy)
        {
            if (m == null && mCopy == null)
            {
                return;
            }

            // original and copy are different instances
            Assert.AreNotSame(m, mCopy);

            // the same values in fields
            Assert.AreEqual(m._fieldPublic2, mCopy._fieldPublic2);
            Assert.AreEqual(m.PropertyPublic2, mCopy.PropertyPublic2);
            Assert.AreEqual(m._fieldPublic, mCopy._fieldPublic);
            Assert.AreEqual(m.GetPrivateField2(), mCopy.GetPrivateField2());
            Assert.AreEqual(m.GetPrivateProperty2(), mCopy.GetPrivateProperty2());
            Assert.AreEqual(m.GetPrivateField(), mCopy.GetPrivateField());
            Assert.AreEqual(m.GetPrivateProperty(), mCopy.GetPrivateProperty());
            Assert.AreEqual((string)m.ObjectTextProperty, (string)mCopy.ObjectTextProperty);

            // check that structs copied well (but with different instances of subclasses)
            Assert_StructsAreEqual(m._structField, mCopy._structField);

            // chech that classes in structs in structs are copied well
            Assert_DeeperStructsAreEqual(m._deeperStructField, mCopy._deeperStructField);

            // generic classes are well copied
            Assert_GenericClassesAreEqual(m._genericClassField, mCopy._genericClassField);

            // subclass in property copied well
            SimpleClassTests.Assert_AreEqualButNotSame(m.SimpleClassProperty, mCopy.SimpleClassProperty);

            // subclass in readonly field copied well
            SimpleClassTests.Assert_AreEqualButNotSame(m._readonlySimpleClassField, mCopy._readonlySimpleClassField);

            // array of subclasses copied well
            if (m.SimpleClassArray != null)
            {
                Assert.AreEqual(m.SimpleClassArray.Length, mCopy.SimpleClassArray.Length);

                for (var i = 0; i < m.SimpleClassArray.Length; i++)
                {
                    SimpleClassTests.Assert_AreEqualButNotSame(m.SimpleClassArray[i], mCopy.SimpleClassArray[i]);
                }
            }
        }
Ejemplo n.º 4
0
        public static void Assert_GenericClassesAreEqual(GenericClass <SimpleClass> s, GenericClass <SimpleClass> sCopy)
        {
            if (s == null && sCopy == null)
            {
                return;
            }

            // test that subclass is equal but different instance
            if (s._item1 != null)
            {
                SimpleClassTests.Assert_AreEqualButNotSame(s._item1, sCopy._item1);
            }

            // readonly reference field test
            if (s._item2 != null)
            {
                SimpleClassTests.Assert_AreEqualButNotSame(s._item2, sCopy._item2);
            }
        }
Ejemplo n.º 5
0
        public static void Assert_AreEqualButNotSame_ChooseForType(ISimpleClass s, ISimpleClass sCopy)
        {
            if (s == null && sCopy == null)
            {
                return;
            }

            if (s is ComplexClass)
            {
                Assert_AreEqualButNotSame((ComplexClass)s, (ComplexClass)sCopy);
            }
            else if (s is ModerateClass)
            {
                ModerateClassTests.Assert_AreEqualButNotSame((ModerateClass)s, (ModerateClass)sCopy);
            }
            else
            {
                SimpleClassTests.Assert_AreEqualButNotSame((SimpleClass)s, (SimpleClass)sCopy);
            }
        }