public void Compare_Simple_Model()
{
var comparer = SutEngine.Get<SimpleModel>();
var oldModel = new SimpleModel
{
Id = 1,
Check = true,
Name = "Name",
Value = 1.23m,
Date = new DateTime(2015, 01, 01, 12, 50, 30),
Time = new TimeSpan(5, 4, 3),
State = State.Inactive,
Nullable = null,
};
var newModel = new SimpleModel
{
Id = 1,
Check = false,
Name = "Name?",
Value = 10.23m,
Date = new DateTime(2015, 01, 02, 12, 50, 30),
Time = new TimeSpan(5, 4, 1),
State = State.Active,
Nullable = true,
};
var changes = comparer(oldModel, newModel);
Assert.AreEqual(changes.Count(), 7);
Assert.IsNotNull(changes.Single(x => x.Name == "Check" && (bool)x.OldValue == true && (bool)x.NewValue == false));
Assert.IsNotNull(changes.Single(x => x.Name == "Name" && (string)x.OldValue == "Name" && (string)x.NewValue == "Name?"));
Assert.IsNotNull(changes.Single(x => x.Name == "Value" && (decimal)x.OldValue == 1.23m && (decimal)x.NewValue == 10.23m));
Assert.IsNotNull(changes.Single(x => x.Name == "Date" && (DateTime)x.OldValue != (DateTime)x.NewValue));
Assert.IsNotNull(changes.Single(x => x.Name == "Time" && (TimeSpan)x.OldValue != (TimeSpan)x.NewValue));
Assert.IsNotNull(changes.Single(x => x.Name == "State" && (State)x.OldValue != (State)x.NewValue));
Assert.IsNotNull(changes.Single(x => x.Name == "Nullable" && (bool?)x.OldValue == null && (bool?)x.NewValue == true));
}