예제 #1
0
파일: Affector.cs 프로젝트: ruh-roh/ruh-roh
        private void PrepareCombinedTrigger(Logical operation)
        {
            if (_triggers.Count == 0 || _nextCombination != null)
            {
                throw new InvalidOperationException();
            }

            _nextCombination = new CombinedTrigger(operation, _triggers.Last());
            _triggers.RemoveAt(_triggers.Count - 1);
            _triggers.Add(_nextCombination);
        }
예제 #2
0
파일: Affector.cs 프로젝트: ruh-roh/ruh-roh
        void IAffector.AddTrigger(ITrigger trigger)
        {
            if (_nextCombination != null)
            {
                _nextCombination.Second = trigger;
                _nextCombination        = null;
                return;
            }

            _triggers.Add(trigger);
        }
예제 #3
0
        public void Should_Apply_Not_Operand(bool value)
        {
            var fakeTrigger = A.Fake <ITrigger>();

            A.CallTo(() => fakeTrigger.WillAffect()).Returns(value);

            var trigger = new CombinedTrigger {
                Second = fakeTrigger
            };

            Assert.NotEqual(value, trigger.WillAffect());
        }
예제 #4
0
        public void Should_Update_Updateable_Triggers()
        {
            var firstTrigger  = A.Fake <IUpdateableTrigger>();
            var secondTrigger = A.Fake <IUpdateableTrigger>();

            var trigger = new CombinedTrigger(Logical.And, firstTrigger)
            {
                Second = secondTrigger
            };

            trigger.Update();

            A.CallTo(() => firstTrigger.Update()).MustHaveHappened(1, Times.Exactly);
            A.CallTo(() => secondTrigger.Update()).MustHaveHappened(1, Times.Exactly);
        }
예제 #5
0
        internal void Should_Apply_And_Or_Xor_Operands(Logical operand, bool firstTriggerValue, bool secondTriggerValue, bool expected)
        {
            var firstTrigger = A.Fake <ITrigger>();

            A.CallTo(() => firstTrigger.WillAffect()).Returns(firstTriggerValue);
            var secondTrigger = A.Fake <ITrigger>();

            A.CallTo(() => secondTrigger.WillAffect()).Returns(secondTriggerValue);

            var trigger = new CombinedTrigger(operand, firstTrigger)
            {
                Second = secondTrigger
            };

            Assert.Equal(expected, trigger.WillAffect());
        }
예제 #6
0
        internal void Should_Throw_InvalidOperationException_When_Missing_SecondTrigger_For_And_Or_Xor_Operands(Logical operand)
        {
            var trigger = new CombinedTrigger(operand, new RandomTrigger());

            Assert.Throws <InvalidOperationException>(() => trigger.WillAffect());
        }
예제 #7
0
        public void Should_Throw_InvalidOperationException_When_Missing_SecondTrigger_For_Not_Operand()
        {
            var trigger = new CombinedTrigger();

            Assert.Throws <InvalidOperationException>(() => trigger.WillAffect());
        }