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)
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)
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)