public void FindPropertyInfos_WithDiamondShapedInheritance()
        {
            MixinPropertyFinder propertyFinder = CreatePropertyFinder(typeof(DiamondTarget), false);

            Assert.That(propertyFinder.FindPropertyInfosOnMixins().ToArray(),
                        Is.EquivalentTo(
                            new[]
            {
                GetProperty(typeof(DiamondBase), "PBase"),
            }));
        }
        public void FindPropertyInfos_ForDerivedMixinNotOnBase()
        {
            MixinPropertyFinder propertyFinder = CreatePropertyFinder(typeof(TargetClassC), false);

            Assert.That(propertyFinder.FindPropertyInfosOnMixins().ToArray(),
                        Is.EquivalentTo(
                            new []
            {
                GetProperty(typeof(DerivedMixinNotOnBase), "DerivedMixinProperty"),
                GetProperty(typeof(MixinNotOnBase), "MixinProperty"),
            }));
        }
        public void FindPropertyInfos_ForDerived()
        {
            MixinPropertyFinder propertyFinder = CreatePropertyFinder(typeof(TargetClassB), false);

            Assert.That(propertyFinder.FindPropertyInfosOnMixins().ToArray(),
                        Is.EquivalentTo(
                            new []
            {
                GetProperty(typeof(MixinB), "P6"),
                GetProperty(typeof(MixinE), "P9"),
            }));
        }
        public void FindPropertyInfos_IncludeBasePropertiesFalse()
        {
            MixinPropertyFinder propertyFinder = CreatePropertyFinder(typeof(TargetClassA), false);

            Assert.That(propertyFinder.FindPropertyInfosOnMixins().ToArray(),
                        Is.EquivalentTo(
                            new[]
            {
                GetProperty(typeof(MixinA), "P5"),
                GetProperty(typeof(MixinC), "P7"),
                GetProperty(typeof(MixinD), "P8"),
            }));
        }
        public void FindPropertyInfos_ForMixinAppliedAboveInheritanceRoot()
        {
            MixinPropertyFinder propertyFinder = CreatePropertyFinder(typeof(InheritanceRootInheritingPersistentMixin), true);

            Assert.That(
                propertyFinder.FindPropertyInfosOnMixins().ToArray(),
                Is.EquivalentTo(
                    new[]
            {
                GetProperty(typeof(MixinAddingPersistentPropertiesAboveInheritanceRoot), "PersistentProperty"),
                GetProperty(typeof(MixinAddingPersistentPropertiesAboveInheritanceRoot), "PersistentRelationProperty")
            }));
        }