public void GetChangesRecursively_DifferentDeepVeryDifferentObjects_HasProperChanges() { var changes = ChangeDetector .GetChanges( new ComplexObject() { StringValue = "foo", MyIntValue = 28, SubObject = new ComplexObject() { StringValue = "bar", MyIntValue = 123 } }, new ComplexObject() { StringValue = "fuz", MyIntValue = 1337, SubObject = new ComplexObject() { StringValue = "baz", MyIntValue = 123 } }) .OrderBy(x => x.PropertyPath) .ToArray(); Assert.AreEqual(3, changes.Length); Assert.AreEqual(new Change("MyIntValue", 28, 1337), changes[0]); Assert.AreEqual(new Change("StringValue", "foo", "fuz"), changes[1]); Assert.AreEqual(new Change("SubObject.StringValue", "bar", "baz"), changes[2]); }
public void GetChangesRecursively_DifferentSubObjectCollectionsInDeepObjects_HasChange() { var changes = ChangeDetector .GetChanges( new DeepComplexObject() { ComplexObject = new ComplexObject() { SubObjects = new List <ComplexObject>() } }, new DeepComplexObject() { ComplexObject = new ComplexObject() { SubObjects = new List <ComplexObject>() { new ComplexObject() } } }); Assert.AreEqual(4, changes.Count); Assert.IsTrue(changes.HasChangeFor(x => x.ComplexObject.SubObjects)); }
public void PocoWithNoID() { noIdOriginal = new SimplePocoNoID() { name = "Name", boolean = true, date = DateTime.MinValue, number = 42 }; noIdChanged = new SimplePocoNoID() { name = "Kyle", boolean = true, date = DateTime.MinValue, number = 42 }; List <Change> result = sut.GetChanges(noIdOriginal, noIdChanged, "Kyle", date); Assert.Single(result); }
public void GetChangesRecursively_StringHashSet_HasProperChanges() { var oldObject = new HashSet <string>(new [] { "foo", "bar", "baz", "fuz" }); var newObject = new HashSet <string>(new [] { "foo", "lol", "hi", "fuz" }); var changes = ChangeDetector .GetChanges( oldObject, newObject) .OrderBy(x => x.PropertyPath) .ToArray(); Assert.AreEqual(3, changes.Length); Assert.AreEqual(new Change("", oldObject, newObject), changes[0]); Assert.AreEqual(new Change("1", "bar", "lol"), changes[1]); Assert.AreEqual(new Change("2", "baz", "hi"), changes[2]); }
public void GetChangesRecursively_ComplexObjectToNullSubObject_HasProperChanges() { var oldObject = new ComplexObject() { StringValue = "foo", MyIntValue = 28, SubObject = new ComplexObject() { StringValue = "baz", MyIntValue = 123 } }; var newObject = new ComplexObject() { StringValue = "fuz", MyIntValue = 1337, SubObject = null }; var changeCollection = ChangeDetector .GetChanges( oldObject, newObject); var changes = changeCollection .OrderBy(x => x.PropertyPath) .ToArray(); Assert.AreEqual(6, changes.Length); Assert.AreEqual(new Change("MyIntValue", 28, 1337), changes[0]); Assert.AreEqual(new Change("StringValue", "foo", "fuz"), changes[1]); Assert.AreEqual(new Change("SubObject.MyIntValue", 123, null), changes[2]); Assert.AreEqual(new Change("SubObject.StringsHashSet", oldObject.SubObject.StringsHashSet, null), changes[3]); Assert.AreEqual(new Change("SubObject.StringsHashSet.0", "foo", null), changes[4]); Assert.AreEqual(new Change("SubObject.StringValue", "baz", null), changes[5]); Assert.IsTrue(changeCollection.HasChangeFor(x => x.SubObject.StringsHashSet)); }
public void GetChangesRecursively_SubObjectNullDifferences_HasChange() { var changes = ChangeDetector .GetChanges( new DeepComplexObject() { ComplexObject = new ComplexObject() { EnumHashSet = null } }, new DeepComplexObject() { ComplexObject = new ComplexObject() { EnumHashSet = new HashSet <SimpleEnum>() { SimpleEnum.Foo } } }); Assert.AreEqual(2, changes.Count); }
private void AssertHasChange <T>(T oldObject, T newObject, Expression <Func <T, object> > expression, Change expectedChange) { var changes = ChangeDetector.GetChanges(oldObject, newObject, expression); Assert.AreEqual(expectedChange, changes.SingleOrDefault()); }
private void AssertHasChange(object oldObject, object newObject, Change expectedChange) { var changes = ChangeDetector.GetChanges(oldObject, newObject); Assert.AreEqual(expectedChange, changes.SingleOrDefault()); }
private void AssertHasNoChange(object oldObject, object newObject) { var changes = ChangeDetector.GetChanges(oldObject, newObject); Assert.AreEqual(0, changes.ToArray().Length); }
private void AssertHasNoChange <T>(T oldObject, T newObject, Expression <Func <T, object> > expression) { var changes = ChangeDetector.GetChanges(oldObject, newObject, expression); Assert.AreEqual(0, changes.ToArray().Length); }