From a0201f37a0b7631127079d0b65ad18892fbff6a0 Mon Sep 17 00:00:00 2001 From: Lyla Fischer Date: Fri, 11 May 2012 12:25:32 -0400 Subject: [PATCH] names not required --- djangoapps/courseware/capa/responsetypes.py | 18 +++++++++++++-- .../courseware/test_files/multi_bare.xml | 21 ++++++++++++++++++ djangoapps/courseware/tests.py | 22 +++++++++++++------ 3 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 djangoapps/courseware/test_files/multi_bare.xml diff --git a/djangoapps/courseware/capa/responsetypes.py b/djangoapps/courseware/capa/responsetypes.py index ac4c84d8a6..d56e0e64b8 100644 --- a/djangoapps/courseware/capa/responsetypes.py +++ b/djangoapps/courseware/capa/responsetypes.py @@ -79,14 +79,28 @@ class MultipleChoiceResponse(GenericResponse): return {self.answer_id:self.correct_choices} def preprocess_response(self): + i=0 for response in self.xml.xpath("choicegroup"): response.set("type", "MultipleChoice") - + for choice in list(response): + if choice.get("name") == None: + choice.set("name", "choice_"+str(i)) + i+=1 + else: + choice.set("name", "choice_"+choice.get("name")) + class TrueFalseResponse(MultipleChoiceResponse): def preprocess_response(self): + i=0 for response in self.xml.xpath("choicegroup"): response.set("type", "TrueFalse") - + for choice in list(response): + if choice.get("name") == None: + choice.set("name", "choice_"+str(i)) + i+=1 + else: + choice.set("name", "choice_"+choice.get("name")) + def grade(self, student_answers): correct = set(self.correct_choices) answers = set(student_answers.get(self.answer_id, [])) diff --git a/djangoapps/courseware/test_files/multi_bare.xml b/djangoapps/courseware/test_files/multi_bare.xml new file mode 100644 index 0000000000..20bc8f853d --- /dev/null +++ b/djangoapps/courseware/test_files/multi_bare.xml @@ -0,0 +1,21 @@ + + + + + This is foil One. + + + This is foil Two. + + + This is foil Three. + + + This is foil Four. + + + This is foil Five. + + + + diff --git a/djangoapps/courseware/tests.py b/djangoapps/courseware/tests.py index d901b79437..5688d698b2 100644 --- a/djangoapps/courseware/tests.py +++ b/djangoapps/courseware/tests.py @@ -67,23 +67,31 @@ class MultiChoiceTest(unittest.TestCase): def test_MC_grade(self): multichoice_file = os.path.dirname(__file__)+"/test_files/multichoice.xml" test_lcp = lcp.LoncapaProblem(open(multichoice_file), '1') - correct_answers = {'1_2_1':'foil3'} + correct_answers = {'1_2_1':'choice_foil3'} self.assertEquals(test_lcp.grade_answers(correct_answers)['1_2_1'], 'correct') - false_answers = {'1_2_1':'foil2'} + false_answers = {'1_2_1':'choice_foil2'} + self.assertEquals(test_lcp.grade_answers(false_answers)['1_2_1'], 'incorrect') + + def test_MC_bare_grades(self): + multichoice_file = os.path.dirname(__file__)+"/test_files/multi_bare.xml" + test_lcp = lcp.LoncapaProblem(open(multichoice_file), '1') + correct_answers = {'1_2_1':'choice_2'} + self.assertEquals(test_lcp.grade_answers(correct_answers)['1_2_1'], 'correct') + false_answers = {'1_2_1':'choice_1'} self.assertEquals(test_lcp.grade_answers(false_answers)['1_2_1'], 'incorrect') def test_TF_grade(self): truefalse_file = os.getcwd()+"/djangoapps/courseware/test_files/truefalse.xml" test_lcp = lcp.LoncapaProblem(open(truefalse_file), '1') - correct_answers = {'1_2_1':['foil2', 'foil1']} + correct_answers = {'1_2_1':['choice_foil2', 'choice_foil1']} self.assertEquals(test_lcp.grade_answers(correct_answers)['1_2_1'], 'correct') - false_answers = {'1_2_1':['foil1']} + false_answers = {'1_2_1':['choice_foil1']} self.assertEquals(test_lcp.grade_answers(false_answers)['1_2_1'], 'incorrect') - false_answers = {'1_2_1':['foil1', 'foil3']} + false_answers = {'1_2_1':['choice_foil1', 'choice_foil3']} self.assertEquals(test_lcp.grade_answers(false_answers)['1_2_1'], 'incorrect') - false_answers = {'1_2_1':['foil3']} + false_answers = {'1_2_1':['choice_foil3']} self.assertEquals(test_lcp.grade_answers(false_answers)['1_2_1'], 'incorrect') - false_answers = {'1_2_1':['foil1', 'foil2', 'foil3']} + false_answers = {'1_2_1':['choice_foil1', 'choice_foil2', 'choice_foil3']} self.assertEquals(test_lcp.grade_answers(false_answers)['1_2_1'], 'incorrect') class GradesheetTest(unittest.TestCase):