public void EntityDiff_GetAffected_Relationships()
        {
            // arrange
            var dbEntities = new HashSet <Dummy>(AllEntities.Select(e => new Dummy {
                Id = e.Id
            }));
            DiffableEntityHashSet <Dummy> diffs = new DiffableEntityHashSet <Dummy>(AllEntities, dbEntities, Relationships, null);

            // act
            var affectedThroughFirstToOne  = diffs.GetAffected(d => d.FirstToOne).ToList();
            var affectedThroughSecondToOne = diffs.GetAffected(d => d.SecondToOne).ToList();
            var affectedThroughToMany      = diffs.GetAffected(d => d.ToManies).ToList();

            // assert
            affectedThroughFirstToOne.ForEach((entitiy) => Assert.Contains(entitiy, FirstToOnesEntities));
            affectedThroughSecondToOne.ForEach((entitiy) => Assert.Contains(entitiy, SecondToOnesEntities));
            affectedThroughToMany.ForEach((entitiy) => Assert.Contains(entitiy, ToManiesEntities));
        }
        public void EntityDiff_GetAffected_Attributes()
        {
            // arrange
            var dbEntities = new HashSet <Dummy>(AllEntities.Select(e => new Dummy {
                Id = e.Id
            }));
            var updatedAttributes = new Dictionary <PropertyInfo, HashSet <Dummy> >
            {
                { typeof(Dummy).GetProperty("SomeUpdatedProperty"), AllEntities }
            };
            DiffableEntityHashSet <Dummy> diffs = new DiffableEntityHashSet <Dummy>(AllEntities, dbEntities, Relationships, updatedAttributes);

            // act
            var affectedThroughSomeUpdatedProperty    = diffs.GetAffected(d => d.SomeUpdatedProperty).ToList();
            var affectedThroughSomeNotUpdatedProperty = diffs.GetAffected(d => d.SomeNotUpdatedProperty).ToList();

            // assert
            Assert.NotEmpty(affectedThroughSomeUpdatedProperty);
            Assert.Empty(affectedThroughSomeNotUpdatedProperty);
        }