public void shouldCallSuccessFunctionWhenGivenListOfTwentyZeros()
        {
            var mockWithCallbacks = new Mock <CallbackInterface>();
            var rolls             = new List <int>(new int[20]);
            var validator         = new BowlingRollValidator();

            validator.validate(rolls, mockWithCallbacks.Object.SuccessCallback,
                               mockWithCallbacks.Object.FailureCallback);
            mockWithCallbacks.Verify(m => m.SuccessCallback());
        }
        public void shouldCallFailureFuncWithUnEarnedBonusInTenthWhenGivenTwentyOnePinsWithoutSpareOrStrikeInTenthFrame()
        {
            var mockWithCallbacks = new Mock <CallbackInterface>();
            var rolls             = new List <int>(new int[21]);
            var validator         = new BowlingRollValidator();

            validator.validate(rolls, mockWithCallbacks.Object.SuccessCallback,
                               mockWithCallbacks.Object.FailureCallback);

            mockWithCallbacks.Verify(m => m.FailureCallback(ErrorCode.UnEarnedBonusInTenth));
        }
        public void shouldCallFailureFunctionWithTooManyRollsErrorCodeWhenGivenListOf22Zeros()
        {
            var mockWithCallbacks = new Mock <CallbackInterface>();
            var rolls             = new List <int>(new int[22]).Select(r => r + 5).ToList();
            var validator         = new BowlingRollValidator();

            validator.validate(rolls, mockWithCallbacks.Object.SuccessCallback,
                               mockWithCallbacks.Object.FailureCallback);

            mockWithCallbacks.Verify(m => m.FailureCallback(ErrorCode.TooManyRolls));
        }
        public void shouldCallFailureFunctionWithNotEnoughRollsErrorCodeWhenGivenListOf19Zeros()
        {
            var mockWithCallbacks = new Mock <CallbackInterface>();
            var rolls             = new List <int>(new int[19]);
            var validator         = new BowlingRollValidator();

            validator.validate(rolls, mockWithCallbacks.Object.SuccessCallback,
                               mockWithCallbacks.Object.FailureCallback);

            mockWithCallbacks.Verify(m => m.FailureCallback(ErrorCode.NotEnoughRolls));
        }
        public void shouldReturnStringFromSuccessFunctionWhenSuccessful()
        {
            var mockWithCallbacks = new Mock <CallbackInterface>();
            var successResult     = "I was Successful";

            mockWithCallbacks.Setup(m => m.SuccessCallback()).Returns(successResult);
            var rolls     = new List <int>(new int[20]);
            var validator = new BowlingRollValidator();

            Assert.Equal(successResult, validator.validate(rolls, mockWithCallbacks.Object.SuccessCallback,
                                                           mockWithCallbacks.Object.FailureCallback));
        }