public void Extend() { var test = new TestExpando(); test.Field1 = "Value from Real Object"; test.Property1 = "ValueFromProp"; dynamic test2 = new ExpandoObject(); test2.ExField1 = "Value from Expando"; var exField2 = new string[] { "el1", "el2" }; test2.ExField2 = exField2; dynamic target = CQ.Extend(null, test); Assert.AreEqual("Value from Real Object", target.Field1, "Appended a regular object field to an expando object"); Assert.AreEqual("ValueFromProp", target.Property1, "Appended a regular object property to an expando object"); CQ.Extend(target, test2); Assert.AreEqual("Value from Expando", target.ExField1, "Appended an expando object property to an expando object"); Assert.AreEqual(exField2, target.ExField2, "Appended a regular object property to an expando object"); // Test "extending" regular objects (property copy) TestClass1 t1 = new TestClass1(); t1.Prop1 = "value1"; t1.Prop2 = "value2"; TestClass2 t2 = new TestClass2(); t2.Prop2 = "class2value2"; t2.Prop3 = "class2vlaue3"; CQ.Extend(t1, t2); Assert.AreEqual("value1", t1.Prop1, "Target prop1 unchanged"); Assert.AreEqual("class2value2", t1.Prop2, "Target prop2 updated"); }
public void ExtendExpando() { var test = new TestExpando(); test.Field1 = "Value from Real Object"; test.Property1 = "ValueFromProp"; dynamic test2 = new ExpandoObject(); test2.ExField1 = "Value from Expando"; var exField2 = new string[] { "el1", "el2" }; test2.ExField2 = exField2; dynamic target = CQ.Extend(null, test); Assert.AreEqual("Value from Real Object", target.Field1, "Appended a regular object field to an expando object"); Assert.AreEqual("ValueFromProp", target.Property1, "Appended a regular object property to an expando object"); CQ.Extend(target, test2); Assert.AreEqual("Value from Expando", target.ExField1, "Appended an expando object property to an expando object"); Assert.AreEqual(exField2, target.ExField2, "Appended a regular object property to an expando object"); }