def test_quiz_checkAnswer_correct(self): quest = 'q?' ans = [] questions = [] ans.append(Answer('a', 1)) ans.append(Answer('b', 0)) ans.append(Answer('c', 0)) questions.append(Question(quest, ans)) questions.append(Question(quest, ans)) questions.append(Question(quest, ans)) quiz = Quiz(0, questions) res = quiz.checkAnswer('a') self.assertEqual(res, 1) res = quiz.checkAnswer('a') self.assertEqual(res, 2)
def test_quiz_checkAnswer_wrong(self): quest = 'q?' ans = [] questions = [] ans.append(Answer('a', 1)) ans.append(Answer('b', 0)) ans.append(Answer('c', 0)) questions.append(Question(quest, ans)) quiz = Quiz(0, questions) self.assertRaises(LostQuizError, quiz.checkAnswer, 'b')
def test_quiz_checkAnswer_complete(self): quest = 'q?' ans = [] questions = [] ans.append(Answer('a', 1)) ans.append(Answer('b', 0)) ans.append(Answer('c', 0)) questions.append(Question(quest, ans)) quiz = Quiz(0, questions) self.assertRaises(CompletedQuizError, quiz.checkAnswer, 'a')
def answer_question(id, answer): global _LOADED_QUIZZES result = "" id = str(id) exists_quiz(id) quiz = _LOADED_QUIZZES[id] try: Quiz.isOpen(quiz) if 'PUT' == request.method: try: result = Quiz.checkAnswer(quiz, answer) except CompletedQuizError: result = "you won 1 million clams!" except NonExistingAnswerError: result = "non-existing answer!" except CompletedQuizError: result = "completed quiz" except LostQuizError: result = "you lost!" return jsonify({"msg": result})
def play_quiz(id): global _LOADED_QUIZZES result = "" id = str(id) exists_quiz(id) if 'GET' == request.method: try: result = jsonify(Quiz.getQuestion(_LOADED_QUIZZES[id])) except CompletedQuizError: result = jsonify({"msg": "completed quiz"}) except LostQuizError: result = jsonify({"msg": "you lost!"}) return result
def test_quiz_iscompleted(self): quest = 'q?' ans = [] questions = [] ans.append(Answer('a', 1)) ans.append(Answer('b', 0)) ans.append(Answer('c', 0)) questions.append(Question(quest, ans)) questions.append(Question(quest, ans)) quiz = Quiz(0, questions) quiz.checkAnswer('a') self.assertFalse(quiz.isCompleted()) try: quiz.checkAnswer('a') except CompletedQuizError: self.assertTrue(quiz.isCompleted())
def create_quiz(request): global _LOADED_QUIZZES, _QUIZNUMBER json_data = request.get_json() qs = json_data['questions'] questions = [] for q in qs: question = q['question'] answers = [] for a in q['answers']: answers.append(Answer(a['answer'], a['correct'])) question = Question(question, answers) questions.append(question) _LOADED_QUIZZES[str(_QUIZNUMBER)] = Quiz(_QUIZNUMBER, questions) _QUIZNUMBER += 1 return jsonify({'quiznumber': _QUIZNUMBER - 1})
def single_quiz(id): global _LOADED_QUIZZES result = "" id = str(id) exists_quiz(id) if 'GET' == request.method: result = jsonify(Quiz.serialize(_LOADED_QUIZZES[id])) elif 'DELETE' == request.method: # delete a quiz and get back number of answered questions quiz = _LOADED_QUIZZES[id] del _LOADED_QUIZZES[id] result = jsonify({ "answered_questions": quiz.currentQuestion, "total_questions": len(quiz.questions) }) return result
def createDummyQuiz(self): json_data = { "questions": [{ "question": "What's the answer to all questions?", "answers": [{ "answer": "33", "correct": 0 }, { "answer": "42", "correct": 1 }, { "answer": "1", "correct": 0 }] }, { "question": "What's the answer to all questions?", "answers": [{ "answer": "33", "correct": 0 }, { "answer": "42", "correct": 1 }, { "answer": "1", "correct": 0 }] }] } qs = json_data['questions'] questions = [] for q in qs: question = q['question'] answers = [] for a in q['answers']: answers.append(Answer(a['answer'], a['correct'])) question = Question(question, answers) questions.append(question) return Quiz(1, questions)
def test_quiz_islost(self): quest = 'q?' ans = [] questions = [] ans.append(Answer('a', 1)) ans.append(Answer('b', 0)) ans.append(Answer('c', 0)) questions.append(Question(quest, ans)) questions.append(Question(quest, ans)) quiz = Quiz(0, questions) quiz.checkAnswer('a') self.assertEqual(quiz.currentQuestion, 1) try: quiz.checkAnswer('b') except LostQuizError: self.assertEqual(quiz.currentQuestion, -1)
def test_isCompleted(self): answer_1 = Answer("la prima", 1) answer_2 = Answer("la seconda") question = Question("Buona?", [answer_1, answer_2]) quiz = Quiz(1, [question]) self.assertEqual(quiz.isCompleted(), False)