public ExerciseWrapper PostAnswer([FromBody] ExerciseAnswer answer)
        {
            var isRightAnswer = _exerciseHelper.IsRightAnswer(answer);

            Exercise       newExercise = null;
            ExerciseStatus exerciseStatus;

            if (isRightAnswer)
            {
                if (_exerciseHelper.IsEndOfExercise(answer.Exercise.Rank))
                {
                    exerciseStatus = ExerciseStatus.EndOfExercise;
                }
                else
                {
                    newExercise    = _exerciseHelper.GetNextExercise(answer.Exercise);
                    exerciseStatus = ExerciseStatus.Continue;
                }
            }
            else
            {
                exerciseStatus = ExerciseStatus.IncorrectAnswer;
            }

            return(new ExerciseWrapper
            {
                Status = exerciseStatus,
                Exercise = newExercise,
                TimeOut = _exerciseHelper.GetTimeOut(newExercise != null ? newExercise.Rank : RankLevel.Beginner)
            });
        }
Пример #2
0
        public void PostAnswerTest_Incorrect()
        {
            var exerciseHelper = Substitute.For <IExerciseHelper>();

            exerciseHelper.GetFirstExercise().Returns(new Exercise {
                Rank = RankLevel.Beginner
            });
            var exerciseController = new ExerciseController(exerciseHelper);

            exerciseHelper.IsRightAnswer(Arg.Any <ExerciseAnswer>()).Returns(false);
            exerciseHelper.IsEndOfExercise(Arg.Any <RankLevel>()).Returns(false);

            var answer = new ExerciseAnswer {
                Exercise = new Exercise()
            };
            var wrapper = exerciseController.PostAnswer(answer);

            Assert.AreEqual(ExerciseStatus.IncorrectAnswer, wrapper.Status);
            Assert.IsNull(wrapper.Exercise);
        }
Пример #3
0
        public void PostAnswer_RightAnswer_EndOfQuestions()
        {
            var exerciseHelper = Substitute.For <IExerciseHelper>();

            exerciseHelper.GetNextExercise(Arg.Any <Exercise>()).Returns(new Exercise {
                Rank = RankLevel.Advanced
            });
            var exerciseController = new ExerciseController(exerciseHelper);

            exerciseHelper.IsRightAnswer(Arg.Any <ExerciseAnswer>()).Returns(true);
            exerciseHelper.IsEndOfExercise(Arg.Any <RankLevel>()).Returns(true);

            var answer = new ExerciseAnswer {
                Exercise = new Exercise()
            };
            var wrapper = exerciseController.PostAnswer(answer);

            Assert.AreEqual(ExerciseStatus.EndOfExercise, wrapper.Status);
            Assert.IsNull(wrapper.Exercise);
        }
Пример #4
0
 public bool IsRightAnswer(ExerciseAnswer answer)
 {
     return(answer.Answer == answer.Exercise.Operand1 + answer.Exercise.Operand2);
 }