public void ResetAllConditions_IsSuccessful()
        {
            // Arrange
            var condition1 = new CountRatingCondition(0, 10)
            {
                CacheCurrentValue = false
            };
            var condition2 = new CountRatingCondition(1, 7)
            {
                CacheCurrentValue = false
            };
            var conditions = new Dictionary <string, IRatingCondition>()
            {
                { "Test1", condition1 },
                { "Test2", condition2 }
            };
            var gateway = new RatingGateway();

            gateway.AddCondition(conditions);
            condition1.ManipulateState(10);
            condition2.ManipulateState(7);

            // Act
            gateway.ResetAllConditions();

            // Assert
            Assert.False(condition1.IsConditionMet);
            Assert.False(condition2.IsConditionMet);
        }
        public void IsConditionMet_EvaluatesTo_ExpectedResult(int initial, int goal, int?param, bool expected)
        {
            // Arrange
            var condition = new CountRatingCondition(initial, goal);

            // Act
            if (param == null)
            {
                condition.ManipulateState();
            }
            else
            {
                condition.ManipulateState(param);
            }

            // Assert
            Assert.Equal(expected, condition.IsConditionMet);
        }
        public void ManipulateState_Should_BumpCurrentStateByOne()
        {
            // Arrange
            var condition = new CountRatingCondition(0, 10);

            // Act
            condition.ManipulateState();

            // Assert
            Assert.Equal(1, condition.CurrentState);
        }