public void DecimalOperatorPowerMinus4IsCreatedAsExpected() { // Arrange var engine = new DecimalEngine(DecimalOperator.TenThousandths, DecimalOperator.TenThousandths); var p = engine.CreateRandomDecimalProblem(); // Act // Assert Assert.AreEqual(0.0001, p.Operator); }
public void DecimalOperatorPower1IsCreatedAsExpected() { // Arrange var engine = new DecimalEngine(DecimalOperator.Tens, DecimalOperator.Tens); var p = engine.CreateRandomDecimalProblem(); // Act // Assert Assert.AreEqual(10, p.Operator); }
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)); }
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)); }
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); }
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); }
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))); }
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); }