public void CorrectlyReturnsTheRightValue_WhenSetViaDynamicProperty()
{
var observableObject = new CustomObject();
dynamic dynamicObservableObject = observableObject;
// Settings value via dynamic property, getting via dynamic property and via GetValue<T> method.
DateTime dt = DateTime.ParseExact("2016-01-01 01:01:01", "yyyy-MM-dd HH:mm:ss", null);
dynamicObservableObject.Property1 = "test";
dynamicObservableObject.Property2 = 100;
dynamicObservableObject.Property3 = 3.14F;
dynamicObservableObject.Property4 = 1.2M;
dynamicObservableObject.Property5 = dt;
Assert.AreEqual("test", dynamicObservableObject.Property1);
Assert.AreEqual(100, dynamicObservableObject.Property2);
Assert.AreEqual(3.14F, dynamicObservableObject.Property3);
Assert.AreEqual(1.2M, dynamicObservableObject.Property4);
Assert.AreEqual(dt, dynamicObservableObject.Property5);
Assert.AreEqual("test", observableObject.GetValue<string>("Property1"));
Assert.AreEqual(100, observableObject.GetValue<int>("Property2"));
Assert.AreEqual(3.14F, observableObject.GetValue<float>("Property3"));
Assert.AreEqual(1.2M, observableObject.GetValue<decimal>("Property4"));
Assert.AreEqual(dt, observableObject.GetValue<DateTime>("Property5"));
}