public void ExceptionTwelveAndThirteenEitherCanPass(bool firstCheck, bool secondCheck, bool expected)
        {
            var step = new PostProcessModulusCheckResult();

            var bankAccountDetails = new BankDetailsTestMother()
                                     .WithFirstWeightMapping(BankDetailsTestMother.WeightMappingWithException(12))
                                     .WithSecondWeightMapping(BankDetailsTestMother.WeightMappingWithException(13))
                                     .WithFirstCheckResult(firstCheck)
                                     .WithSecondCheckResult(secondCheck)
                                     .Build();

            var modulusCheckOutcome = step.Process(bankAccountDetails);

            Assert.AreEqual(expected, modulusCheckOutcome.Result);
            Assert.AreEqual("exception 12 and 13 - so second or first check must pass", modulusCheckOutcome.Explanation);
        }
        public void OtherwiseSecondCheckDeterminesResult(bool firstCheck, bool secondCheck, bool expected)
        {
            var step = new PostProcessModulusCheckResult();

            var bankAccountDetails = new BankDetailsTestMother()
                                     .WithFirstWeightMapping(BankDetailsTestMother.WeightMappingWithException(-1))
                                     .WithSecondWeightMapping(BankDetailsTestMother.WeightMappingWithException(-1))
                                     .WithFirstCheckResult(firstCheck)
                                     .WithSecondCheckResult(secondCheck)
                                     .Build();

            var modulusCheckOutcome = step.Process(bankAccountDetails);

            Assert.AreEqual(expected, modulusCheckOutcome.Result);
            Assert.AreEqual("no exceptions affect result - using second check result", modulusCheckOutcome.Explanation);
        }
        public void ExceptionFiveBothChecksMustPass(bool firstCheck, bool secondCheck, bool expected)
        {
            var step = new PostProcessModulusCheckResult();

            var bankAccountDetails = new BankDetailsTestMother()
                                     .WithFirstWeightMapping(BankDetailsTestMother.WeightMappingWithException(5))
                                     .WithSecondWeightMapping(BankDetailsTestMother.WeightMappingWithException(5))
                                     .WithFirstCheckResult(firstCheck)
                                     .WithSecondCheckResult(secondCheck)
                                     .Build();

            var modulusCheckOutcome = step.Process(bankAccountDetails);

            Assert.AreEqual(expected, modulusCheckOutcome.Result);
            Assert.AreEqual("exception 5 - so first and second check must pass", modulusCheckOutcome.Explanation);
        }