public void CorrectlyReturnsTheDefaultValue_WhenNotSet()
{
var observableObject = new CustomObject();
dynamic dynamicObservableObject = observableObject;
Assert.AreEqual(null, observableObject.GetValue<string>("Property1"));
Assert.AreEqual(0, observableObject.GetValue<int>("Property2"));
Assert.AreEqual(0F, observableObject.GetValue<float>("Property3"));
Assert.AreEqual(0M, observableObject.GetValue<decimal>("Property4"));
Assert.AreEqual(DateTime.MinValue, observableObject.GetValue<DateTime>("Property5"));
//
Assert.AreEqual(null, observableObject.GetValue<string>("Property1"));
Assert.AreEqual(null, observableObject.GetValue<int?>("Property2"));
Assert.AreEqual(null, observableObject.GetValue<float?>("Property3"));
Assert.AreEqual(null, observableObject.GetValue<decimal?>("Property4"));
Assert.AreEqual(null, observableObject.GetValue<DateTime?>("Property5"));
}