Пример #1
0
        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);
        }
Пример #4
0
        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]);
        }
Пример #5
0
        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);
        }
Пример #7
0
        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());
        }
Пример #8
0
        private void AssertHasChange(object oldObject, object newObject, Change expectedChange)
        {
            var changes = ChangeDetector.GetChanges(oldObject, newObject);

            Assert.AreEqual(expectedChange, changes.SingleOrDefault());
        }
Пример #9
0
        private void AssertHasNoChange(object oldObject, object newObject)
        {
            var changes = ChangeDetector.GetChanges(oldObject, newObject);

            Assert.AreEqual(0, changes.ToArray().Length);
        }
Пример #10
0
        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);
        }