Пример #1
0
        public void DecimalOperatorPowerMinus4IsCreatedAsExpected()
        {
            // Arrange
            var engine = new DecimalEngine(DecimalOperator.TenThousandths, DecimalOperator.TenThousandths);
            var p      = engine.CreateRandomDecimalProblem();

            // Act

            // Assert
            Assert.AreEqual(0.0001, p.Operator);
        }
Пример #2
0
        public void DecimalOperatorPower1IsCreatedAsExpected()
        {
            // Arrange
            var engine = new DecimalEngine(DecimalOperator.Tens, DecimalOperator.Tens);
            var p      = engine.CreateRandomDecimalProblem();

            // Act

            // Assert
            Assert.AreEqual(10, p.Operator);
        }
Пример #3
0
        public void EvaluateReturnsTrueIfAnswerCorrect()
        {
            // Arrange
            var engine         = new DecimalEngine();
            var p              = engine.CreateRandomDecimalProblem();
            var expectedAnswer = p.ProblemOperation == Operation.Multiply ? p.Number * p.Operator : p.Number / p.Operator;

            // Act
            p.Answer = Math.Round(expectedAnswer, p.GetExpectedDecimalPlacesInAnswer());

            // Assert
            Assert.IsTrue(engine.Evaluate(p));
        }
Пример #4
0
        public void EvaluateReturnsFalseIfAnswerNotCorrect()
        {
            // Arrange
            var engine         = new DecimalEngine();
            var p              = engine.CreateRandomDecimalProblem();
            var expectedAnswer = p.ProblemOperation == Operation.Multiply ? p.Number * p.Operator : p.Number / p.Operator;

            // Act
            p.Answer = Math.Round(expectedAnswer + 1, 5);             // Just to make it incorrect

            // Assert
            Assert.IsFalse(engine.Evaluate(p));
        }
Пример #5
0
        public IDictionary <string, string> GetDecimalOperators()
        {
            var decimalOperators   = typeof(DecimalOperator).GetEnumValues().Cast <DecimalOperator>();
            var operatorDictionary = new Dictionary <string, string>();

            foreach (DecimalOperator dop in decimalOperators)
            {
                string name  = dop.ToString();
                string value = DecimalEngine.GetDecimalIndexFromDecimalOperatorEnum(dop).ToString();
                operatorDictionary.Add(name, value);
            }

            return(operatorDictionary);
        }
Пример #6
0
        public bool SetQuizOperators([FromBody] IEnumerable <int> operators)
        {
            var session = HttpContext.Current.Session;

            session.Clear();

            var decimalOperatorRange = new List <DecimalOperator>();

            decimalOperatorRange.Add(DecimalEngine.GetDecimalOperatorEnumFromDecimalIndex(operators.Min()));
            decimalOperatorRange.Add(DecimalEngine.GetDecimalOperatorEnumFromDecimalIndex(operators.Max()));

            session.Add(QuizDecimalOpertorRangeSessionKey, decimalOperatorRange);

            return(true);
        }
Пример #7
0
        private static DecimalEngine CreateEngineFromSession()
        {
            var decimalOperatorRange = (IEnumerable <DecimalOperator>)HttpContext.Current.Session[QuizDecimalOpertorRangeSessionKey];
            int floorOp;
            int ceilingOp;
            int firstOp = DecimalEngine.GetDecimalIndexFromDecimalOperatorEnum(decimalOperatorRange.First());
            int lastOp  = DecimalEngine.GetDecimalIndexFromDecimalOperatorEnum(decimalOperatorRange.Last());

            if (firstOp > lastOp)
            {
                floorOp   = lastOp;
                ceilingOp = firstOp;
            }
            else
            {
                floorOp   = firstOp;
                ceilingOp = lastOp;
            }

            return(new DecimalEngine(DecimalEngine.GetDecimalOperatorEnumFromDecimalIndex(floorOp), DecimalEngine.GetDecimalOperatorEnumFromDecimalIndex(ceilingOp)));
        }
Пример #8
0
        private IEnumerable <DecimalResult> EvaluateAnswers()
        {
            var results = new List <DecimalResult>();

            // get the problems from session
            var answerList = (List <DecimalProblem>)HttpContext.Current.Session[GetSessionKey()];

            if (answerList != null && answerList.Count > 0)
            {
                // create an engine
                DecimalEngine engine = CreateEngineFromSession();

                foreach (var answer in answerList)
                {
                    results.Add(new DecimalResult(answer, engine));
                }

                //Save to DB now
                SaveResultToDb(results);
            }

            return(results);
        }