Пример #1
0
        private void VerifyCalculation(BaseCaseMapping mapper, bool a, bool b, bool c, Engine.Model.CalculationType calc, decimal correctValue)
        {
            var result = mapper.Resolve(a, b, c, D, E, F).Result;

            Assert.AreNotEqual(result, Engine.Model.CalculationType.Error, "Calculation Type {calc} not mapped");
            Assert.AreEqual(result.CalculationType, calc, "Calculation Type {calc} is mapped incorrectly");
            Assert.AreEqual(result.CalculationValue, correctValue, "Calculation Type {calc} has invalid calculation result");
        }
Пример #2
0
        public void TestBaseCaseMapping()
        {
            var mapper = new BaseCaseMapping();

            //A && B && !C => X = S
            //A && B && C => X = R
            //!A && B && C => X =T
            //[other] => [error]

            VerifyCalculation(mapper, true, true, false, Engine.Model.CalculationType.S, BaseCaseCalculationTypeSCorrectAnswer);

            VerifyCalculation(mapper, true, true, true, Engine.Model.CalculationType.R, BaseCaseCalculationTypeRCorrectAnswer);

            VerifyCalculation(mapper, false, true, true, Engine.Model.CalculationType.T, BaseCaseCalculationTypeTCorrectAnswer);

            VerifyInvalidInput(mapper, true, false, true);
            VerifyInvalidInput(mapper, false, false, true);
            VerifyInvalidInput(mapper, false, true, false);
            VerifyInvalidInput(mapper, true, false, false);
            VerifyInvalidInput(mapper, false, false, false);
        }
Пример #3
0
        private void VerifyInvalidInput(BaseCaseMapping mapper, bool a, bool b, bool c)
        {
            var result = mapper.Resolve(a, b, c, D, E, F).Result;

            Assert.AreEqual(result.CalculationType, Engine.Model.CalculationType.Error, "Invalid input returned an error"); // null is much faster at runtime than throwing an exception, so the calculation engine can be used in performance critical code?
        }
Пример #4
0
        async Task <IActionResult> MapCalculationToResultsAndSend(bool a, bool b, bool c, int d, int e, int f, BaseCaseMapping mapper)
        {
            (ResultsDTO.X, ResultsDTO.Y) = await mapper.Resolve(a, b, c, d, e, f);

            if (ResultsDTO.X == Engine.Model.CalculationType.Error)
            {
                throw new HttpRequestException("Invalid request parameters");
            }

            return(new ObjectResult(ResultsDTO));
        }