public void TestBasicExtensibility() { var extendable = new SomeObj().Dynamify(); extendable.NewProperty = 10; extendable.IntProp = 10; // Validate an extended property Assert.AreEqual(10, extendable.NewProperty); Assert.AreEqual(10, (extendable.Unwrap() as object).GetProperty("NewProperty")); // Validate a normal property Assert.AreEqual(10, extendable.IntProp); Assert.AreEqual(10, (extendable.Unwrap() as object).GetProperty("IntProp")); Assert.AreEqual(10, (extendable.Unwrap() as SomeObj).IntProp); }
public void TestThatExtendableIsAlsoObservable() { var extendable = new SomeObj().Dynamify(); var token = (extendable as IObjectObservable).SetExpectedChanges( new Change(extendable, "First", null, "Adam"), new Change(extendable, "First", "Adam", "Joe"), new Change(extendable, "IntProp", 0, 10)); extendable.First = "Adam"; extendable.First = "Joe"; Assert.AreEqual("Joe", (extendable.Unwrap() as object).GetProperty("First")); extendable.IntProp = 10; token.ValidateAllNotificationsHappened(); }