public void FindDifferences_Array_complex_withIgnore()
        {
            var oldState = new ComplexArrayVictim
            {
                ComplexArray = new[] { new Complex(), new Complex(), new Complex() }
            };

            var newState = new ComplexArrayVictim
            {
                ComplexArray = new[] { new Complex(), new Complex {
                                           String = "different"
                                       }, new Complex {
                                           String = "also different"
                                       } }
            };

            worker.FindDifferences
            (
                oldState,
                newState,
                stateChanges,
                5,
                (field, context) => false,
                (prop, context) => context.BreadcrumbAsString.Equals("ComplexArray[2]")
            );

            Assert.Equal(1, stateChanges.Changes.Count);

            var change = stateChanges.Changes[0];

            Assert.Equal("ComplexArray[1].String", change.Breadcrumb);
            Assert.Equal("yo", change.OldValue);
            Assert.Equal("different", change.NewValue);
        }
        public void FindDifferences_Array_complex()
        {
            var oldState = new ComplexArrayVictim
            {
                ComplexArray = new[] { new Complex(), new Complex() }
            };

            var newState = new ComplexArrayVictim
            {
                ComplexArray = new[] { new Complex(), new Complex {
                                           String = "different"
                                       } }
            };

            worker.FindDifferences(oldState, newState, stateChanges, 5);

            Assert.Equal(1, stateChanges.Changes.Count);

            var change = stateChanges.Changes[0];

            Assert.Equal("ComplexArray[1].String", change.Breadcrumb);
            Assert.Equal("yo", change.OldValue);
            Assert.Equal("different", change.NewValue);
        }