public void Apply_AnotherType_AtMiddlePriority()
        {
            var a0 = new BehaviorA { Priority = 0 };
            var b2 = new BehaviorB { Priority = 2 };
            var c1 = new BehaviorC { Priority = 1 };

            var set = BehaviorSet(a0, b2, c1);

            Assert.That(set, HasBehaviors(b2, c1, a0));
        }
        public void Apply_AnotherType_AtMiddlePriority_AllowMultiple()
        {
            var a0 = new BehaviorA { Priority = 0, AllowMultiple = true };
            var b2 = new BehaviorB { Priority = 2, AllowMultiple = true };
            var c1 = new BehaviorC { Priority = 1, AllowMultiple = true };

            var set = BehaviorSet(a0, b2, c1);

            Assert.That(set, HasBehaviors(b2, c1, a0));
        }
        public void Apply_AnotherType_AtLowerPriority_AllowMultiple()
        {
            var a2 = new BehaviorA { Priority = 2, AllowMultiple = true };
            var b2 = new BehaviorB { Priority = 2, AllowMultiple = true };
            var c1 = new BehaviorC { Priority = 1, AllowMultiple = true };

            var set = BehaviorSet(a2, b2, c1);

            Assert.That(set, HasBehaviors(b2, a2, c1));
        }
        public void Apply_AnotherType_AtLowerPriority()
        {
            var a2 = new BehaviorA { Priority = 2 };
            var b2 = new BehaviorB { Priority = 2 };
            var c1 = new BehaviorC { Priority = 1 };

            var set = BehaviorSet(a2, b2, c1);

            Assert.That(set, HasBehaviors(b2, a2, c1));
        }
        public void Apply_AnotherType_AtHigherPriority_AllowMultiple()
        {
            var a1 = new BehaviorA { Priority = 1, AllowMultiple = true };
            var b1 = new BehaviorB { Priority = 1, AllowMultiple = true };
            var c2 = new BehaviorC { Priority = 2, AllowMultiple = true };

            var set = BehaviorSet(a1, b1, c2);

            Assert.That(set, HasBehaviors(c2, b1, a1));
        }
        public void Apply_SameType_AtMiddlePriority_AllowMultiple()
        {
            var a2 = new BehaviorA { Priority = 2, AllowMultiple = true };
            var b2 = new BehaviorB { Priority = 2, AllowMultiple = true };
            var c0 = new BehaviorC { Priority = 0, AllowMultiple = true };
            var a1 = new BehaviorA { Priority = 1, AllowMultiple = true };

            var set = BehaviorSet(a2, b2, c0, a1);

            Assert.That(set, HasBehaviors(b2, a2, a1, c0));
        }
        public void Apply_SameType_AtMiddlePriority()
        {
            var a2 = new BehaviorA { Priority = 2 };
            var b2 = new BehaviorB { Priority = 2 };
            var c0 = new BehaviorC { Priority = 0 };
            var a1 = new BehaviorA { Priority = 1 };

            var set = BehaviorSet(a2, b2, c0, a1);

            Assert.That(set, HasBehaviors(b2, a1, c0));
        }