public void PropertiesBasic()
        {
            var propertiesType = this._assembly.GetType("AssemblyToProcess.Basic.Properties");
            var propertiesInstance = (dynamic) Activator.CreateInstance(propertiesType);

            PropertyExtensions.SetPrivatePropertyValue(
                propertiesInstance, "BackedProperty", 1.23);
            PropertyExtensions.SetPrivatePropertyValue(
                propertiesInstance, "PrivateProperty", 123);
            propertiesType.GetProperty("PublicProperty").SetValue(propertiesInstance, "I'm public.");

            // Hand copy.
            var hCopy = propertiesInstance.HCopy();
            var hGetter = new ObjectGetter(propertiesType, hCopy);

            Assert.Equal(1.23, hGetter.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(123, hGetter.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm public.", hGetter.PropertyValue("PublicProperty"));

            // Deep copy.
            var dCopy = propertiesInstance.DeepCopy();
            var dGetter = new ObjectGetter(propertiesType, dCopy);

            Assert.Equal(1.23, dGetter.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(123, dGetter.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm public.", dGetter.PropertyValue("PublicProperty"));
        }
Exemple #2
0
        public void PropertiesBasic()
        {
            var propertiesType     = this._assembly.GetType("AssemblyToProcess.Basic.Properties");
            var propertiesInstance = (dynamic)Activator.CreateInstance(propertiesType);

            PropertyExtensions.SetPrivatePropertyValue(
                propertiesInstance, "BackedProperty", 1.23);
            PropertyExtensions.SetPrivatePropertyValue(
                propertiesInstance, "PrivateProperty", 123);
            propertiesType.GetProperty("PublicProperty").SetValue(propertiesInstance, "I'm public.");

            // Hand copy.
            var hCopy   = propertiesInstance.HCopy();
            var hGetter = new ObjectGetter(propertiesType, hCopy);

            Assert.Equal(1.23, hGetter.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(123, hGetter.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm public.", hGetter.PropertyValue("PublicProperty"));

            // Deep copy.
            var dCopy   = propertiesInstance.DeepCopy();
            var dGetter = new ObjectGetter(propertiesType, dCopy);

            Assert.Equal(1.23, dGetter.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(123, dGetter.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm public.", dGetter.PropertyValue("PublicProperty"));
        }
Exemple #3
0
        public void ObjectInheritanceTest()
        {
            var inheritsAbstractType     = this._assembly.GetType("AssemblyToProcess.Abstracts.InheritsAbstract");
            var inheritsAbstractInstance = (dynamic)Activator.CreateInstance(inheritsAbstractType);

            inheritsAbstractType.GetField("MainObject").SetValue(inheritsAbstractInstance, "main obj");
            inheritsAbstractType.GetProperty("InterfaceProperty").SetValue(inheritsAbstractInstance, 123);

            // Hand copy.
            var hCopy = inheritsAbstractInstance.HCopy();

            var hGet = new ObjectGetter(inheritsAbstractType, hCopy);

            Assert.Equal("main obj", hGet.FieldValue("MainObject"));
            Assert.Equal(123, hGet.PropertyValue("InterfaceProperty"));

            // Deep copy.
            var dCopy = inheritsAbstractInstance.DeepCopy();

            var dGet = new ObjectGetter(inheritsAbstractType, dCopy);

            Assert.Equal("main obj", dGet.FieldValue("MainObject"));
            Assert.Equal(123, dGet.PropertyValue("InterfaceProperty"));
        }
        public void ObjectInheritanceTest()
        {
            var inheritsAbstractType = this._assembly.GetType("AssemblyToProcess.Abstracts.InheritsAbstract");
            var inheritsAbstractInstance = (dynamic) Activator.CreateInstance(inheritsAbstractType);

            inheritsAbstractType.GetField("MainObject").SetValue(inheritsAbstractInstance, "main obj");
            inheritsAbstractType.GetProperty("InterfaceProperty").SetValue(inheritsAbstractInstance, 123);

            // Hand copy.
            var hCopy = inheritsAbstractInstance.HCopy();

            var hGet = new ObjectGetter(inheritsAbstractType, hCopy);

            Assert.Equal("main obj", hGet.FieldValue("MainObject"));
            Assert.Equal(123, hGet.PropertyValue("InterfaceProperty"));

            // Deep copy.
            var dCopy = inheritsAbstractInstance.DeepCopy();

            var dGet = new ObjectGetter(inheritsAbstractType, dCopy);

            Assert.Equal("main obj", dGet.FieldValue("MainObject"));
            Assert.Equal(123, dGet.PropertyValue("InterfaceProperty"));
        }
Exemple #5
0
        public void Tests()
        {
            var propT = this._assembly.GetType("AssemblyToProcess.Basic.Properties");
            var propI = (dynamic)Activator.CreateInstance(propT);

            PropertyExtensions.SetPrivatePropertyValue(propI, "BackedProperty", 1.23);
            PropertyExtensions.SetPrivatePropertyValue(propI, "PrivateProperty", 123);
            propT.GetProperty("PublicProperty").SetValue(propI, "I'm public.");

            var typicalIT = this._assembly.GetType("AssemblyToProcess.Inherits.TypicalInheritance");
            var typicalII = (dynamic)Activator.CreateInstance(typicalIT);

            typicalIT.GetField("Properties").SetValue(typicalII, propI);

            // Hand copy.
            var hCopy = typicalII.HCopy();
            var hGet  = new ObjectGetter(typicalIT, hCopy);

            var fValue = hGet.FieldValue("Properties");

            hGet = new ObjectGetter(propT, fValue);

            Assert.Equal(1.23, hGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(0, hGet.PrivatePropertyValue("PrivateProperty")); // Won't copy since it's private.
            Assert.Equal("I'm public.", hGet.PropertyValue("PublicProperty"));

            // Deep copy.
            var dCopy = typicalII.DeepCopy();
            var dGet  = new ObjectGetter(typicalIT, dCopy);

            fValue = dGet.FieldValue("Properties");
            dGet   = new ObjectGetter(propT, fValue);

            Assert.Equal(1.23, dGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(123, dGet.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm public.", dGet.PropertyValue("PublicProperty"));

            // Bad copy.
            var bCopy = typicalII.BCopy();
            var bGet  = new ObjectGetter(typicalIT, bCopy);

            fValue = bGet.FieldValue("Properties");
            bGet   = new ObjectGetter(propT, fValue);

            Assert.Equal(1.23, bGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(123, bGet.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm public.", bGet.PropertyValue("PublicProperty"));

            // Modify.
            PropertyExtensions.SetPrivatePropertyValue(propI, "BackedProperty", 2.34);
            PropertyExtensions.SetPrivatePropertyValue(propI, "PrivateProperty", 234);
            propT.GetProperty("PublicProperty").SetValue(propI, "I'm changed!");
            typicalIT.GetField("Properties").SetValue(typicalII, propI);

            // Hand copy.
            hGet = new ObjectGetter(typicalIT, hCopy);

            fValue = hGet.FieldValue("Properties");
            hGet   = new ObjectGetter(propT, fValue);

            Assert.Equal(1.23, hGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(0, hGet.PrivatePropertyValue("PrivateProperty")); // Won't copy since it's private.
            Assert.Equal("I'm public.", hGet.PropertyValue("PublicProperty"));

            // Deep copy.
            dGet = new ObjectGetter(typicalIT, dCopy);

            fValue = dGet.FieldValue("Properties");
            dGet   = new ObjectGetter(propT, fValue);

            Assert.Equal(1.23, dGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(123, dGet.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm public.", dGet.PropertyValue("PublicProperty"));

            // Bad copy.
            bGet = new ObjectGetter(typicalIT, bCopy);

            fValue = bGet.FieldValue("Properties");
            bGet   = new ObjectGetter(propT, fValue);

            Assert.Equal(2.34, bGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(234, bGet.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm changed!", bGet.PropertyValue("PublicProperty"));
        }
        public void Tests()
        {
            var propT = this._assembly.GetType("AssemblyToProcess.Basic.Properties");
            var propI = (dynamic) Activator.CreateInstance(propT);

            PropertyExtensions.SetPrivatePropertyValue(propI, "BackedProperty", 1.23);
            PropertyExtensions.SetPrivatePropertyValue(propI, "PrivateProperty", 123);
            propT.GetProperty("PublicProperty").SetValue(propI, "I'm public.");

            var typicalIT = this._assembly.GetType("AssemblyToProcess.Inherits.TypicalInheritance");
            var typicalII = (dynamic) Activator.CreateInstance(typicalIT);

            typicalIT.GetField("Properties").SetValue(typicalII, propI);

            // Hand copy.
            var hCopy = typicalII.HCopy();
            var hGet = new ObjectGetter(typicalIT, hCopy);

            var fValue = hGet.FieldValue("Properties");
            hGet = new ObjectGetter(propT, fValue);

            Assert.Equal(1.23, hGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(0, hGet.PrivatePropertyValue("PrivateProperty")); // Won't copy since it's private.
            Assert.Equal("I'm public.", hGet.PropertyValue("PublicProperty"));

            // Deep copy.
            var dCopy = typicalII.DeepCopy();
            var dGet = new ObjectGetter(typicalIT, dCopy);

            fValue = dGet.FieldValue("Properties");
            dGet = new ObjectGetter(propT, fValue);

            Assert.Equal(1.23, dGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(123, dGet.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm public.", dGet.PropertyValue("PublicProperty"));

            // Bad copy.
            var bCopy = typicalII.BCopy();
            var bGet = new ObjectGetter(typicalIT, bCopy);

            fValue = bGet.FieldValue("Properties");
            bGet = new ObjectGetter(propT, fValue);
 
            Assert.Equal(1.23, bGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(123, bGet.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm public.", bGet.PropertyValue("PublicProperty"));
            
            // Modify.
            PropertyExtensions.SetPrivatePropertyValue(propI, "BackedProperty", 2.34);
            PropertyExtensions.SetPrivatePropertyValue(propI, "PrivateProperty", 234);
            propT.GetProperty("PublicProperty").SetValue(propI, "I'm changed!");
            typicalIT.GetField("Properties").SetValue(typicalII, propI);

            // Hand copy.
            hGet = new ObjectGetter(typicalIT, hCopy);

            fValue = hGet.FieldValue("Properties");
            hGet = new ObjectGetter(propT, fValue);

            Assert.Equal(1.23, hGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(0, hGet.PrivatePropertyValue("PrivateProperty")); // Won't copy since it's private.
            Assert.Equal("I'm public.", hGet.PropertyValue("PublicProperty"));

            // Deep copy.
            dGet = new ObjectGetter(typicalIT, dCopy);

            fValue = dGet.FieldValue("Properties");
            dGet = new ObjectGetter(propT, fValue);

            Assert.Equal(1.23, dGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(123, dGet.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm public.", dGet.PropertyValue("PublicProperty"));

            // Bad copy.
            bGet = new ObjectGetter(typicalIT, bCopy);

            fValue = bGet.FieldValue("Properties");
            bGet = new ObjectGetter(propT, fValue);
 
            Assert.Equal(2.34, bGet.PrivatePropertyValue("BackedProperty"));
            Assert.Equal(234, bGet.PrivatePropertyValue("PrivateProperty"));
            Assert.Equal("I'm changed!", bGet.PropertyValue("PublicProperty"));
        }