コード例 #1
0
    def test_check_answer(self):
        test_cases = [
            TCData(('12', None, '11.99'), False),
            TCData(('1', None, '1001/1000'), False),
            TCData(('19.45', None, '19.455'), False),
            TCData(('19.45', None, '19.4500'), True),
            TCData(('6.25', None, '25/4'), True),
            TCData(('6.25', None, '6.25'), True),
            TCData(('19.45000000', None, '19.450'), True),
            TCData(('-1.7', 0.05, '- 10/6'), True),
            TCData(('1.47', 0.01, '1.459'), True),
            TCData((str(Decimal(22) / Decimal(7)), 0.02, '3.129'), True),
            TCData(('1.292', 0.005, '1.2983'), False),
            TCData(('1.292', 0.005, '1.2857'), False),
            TCData(('1.292', 0.005, '1.29299'), True),
        ]

        for test_case in test_cases:
            subpart_question_mock = NonCallableMagicMock(spec_set=['answer'])
            subpart_question_mock.answer = NonCallableMagicMock(
                spec_set=['tolerance', 'value'])
            subpart_question_mock.answer.value = test_case.input[0]
            subpart_question_mock.answer.tolerance = test_case.input[1]

            numeric_answer = NumericAnswer(test_case.input[2], None)
            numeric_answer.check_answer(subpart_question_mock)
            self.assertEqual(numeric_answer.correct, test_case.expected_output)
コード例 #2
0
    def test_check_answer(self):
        test_cases = [
            TCData((' JawAHArLal  Nehru ', 'Jawaharlal Nehru'), True),
            TCData(('jawaharlalnehru', 'Jawaharlal Nehru'), False),
            TCData(('\t\t FooBAR ', 'foobar'), True),
            TCData((None, 'foobar'), False),
            TCData(('banana', 'foobar'), False),
            TCData(('foobar', 'FooBar'), True),
            TCData(('Jawaharlal nehroo', 'Jawaharlal Nehru'), False),
            TCData(('jawaharlal\tnehru', 'Jawaharlal Nehru'), True),
        ]

        for test_case in test_cases:
            subpart_question_mock = NonCallableMagicMock(spec_set=['answer'])
            subpart_question_mock.answer = test_case.input[1]

            textual_answer = TextualAnswer(test_case.input[0], None)
            textual_answer.check_answer(subpart_question_mock)
            self.assertEqual(textual_answer.correct, test_case.expected_output)
コード例 #3
0
    def test_check_answer(self):
        test_cases = [
            TCData((HWCentralConditionalAnswerFormat.NUMERIC, 1,
                    '_value_ < 10', []), [False]),
            TCData((HWCentralConditionalAnswerFormat.NUMERIC, 3,
                    '_value_ < 10', []), [False, False, False]),
            TCData((HWCentralConditionalAnswerFormat.NUMERIC, 3,
                    '_value_ < 10', ['5.1', '3/10', '- 5 / 56']),
                   [True, True, True]),
            TCData((HWCentralConditionalAnswerFormat.NUMERIC, 1,
                    '_value_ < 10', ['11.1']), [False]),
            TCData((HWCentralConditionalAnswerFormat.NUMERIC, 3,
                    '_value_ < 10', [None, '9', None]), [False, True, False]),
            TCData((HWCentralConditionalAnswerFormat.TEXTUAL, 1,
                    '_value_.isupper()', []), [False]),
            TCData((HWCentralConditionalAnswerFormat.TEXTUAL, 3,
                    '_value_.isupper()', []), [False, False, False]),
            TCData((HWCentralConditionalAnswerFormat.TEXTUAL, 3,
                    '_value_.isupper()',
                    [' FOO  BAR\t ', 'BANANA', 'W A T\t\t E   RMELON']),
                   [True, True, True]),
            TCData((HWCentralConditionalAnswerFormat.TEXTUAL, 1,
                    '_value_.isupper()', ['foobar']), [False]),
            TCData((HWCentralConditionalAnswerFormat.TEXTUAL, 3,
                    '_value_.isupper()', [None, '  FU BAR', None]),
                   [False, True, False])
        ]

        for test_case in test_cases:
            subpart_question_mock = NonCallableMagicMock(spec_set=['answer'])
            subpart_question_mock.answer = NonCallableMagicMock(
                spec_set=['answer_format', 'num_answers', 'condition'])
            subpart_question_mock.answer.answer_format = test_case.input[0]
            subpart_question_mock.answer.num_answers = test_case.input[1]
            subpart_question_mock.answer.condition = test_case.input[2]

            conditional_answer = ConditionalAnswer(test_case.input[3], None)
            conditional_answer.check_answer(subpart_question_mock)
            self.assertEqual(conditional_answer.correct,
                             test_case.expected_output)