From 00f966a94a0d32691f990bcc41b3ab2fccf5c861 Mon Sep 17 00:00:00 2001 From: Alexander Kryklia Date: Mon, 21 Jan 2013 19:22:23 +0200 Subject: [PATCH] populate -> __init__ --- common/lib/capa/capa/verifiers/draganddrop.py | 23 ++++++++----------- .../capa/capa/verifiers/tests_draganddrop.py | 19 ++++++++------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/common/lib/capa/capa/verifiers/draganddrop.py b/common/lib/capa/capa/verifiers/draganddrop.py index 1756ab355b..87381fad76 100644 --- a/common/lib/capa/capa/verifiers/draganddrop.py +++ b/common/lib/capa/capa/verifiers/draganddrop.py @@ -101,11 +101,6 @@ class PositionsCompare(list): class DragAndDrop(object): """ Grader class for drag and drop inputtype. """ - def __init__(self): - self.correct_groups = dict() # correct groups from xml - self.correct_positions = dict() # correct positions for comparing - self.user_groups = dict() # will be populated from user answer - self.user_positions = dict() # will be populated from user answer def grade(self): ''' Grader user answer. @@ -243,7 +238,7 @@ class DragAndDrop(object): return True - def populate(self, correct_answer, user_answer): + def __init__(self, correct_answer, user_answer): """ Populates DragAndDrop variables from user_answer and correct_answer. If correct_answer is dict, converts it to list. Correct answer in dict form is simpe structure for fast and simple @@ -289,10 +284,13 @@ class DragAndDrop(object): Args: user_answer: json correct_answer: dict or list + """ - Returns: None + self.correct_groups = dict() # correct groups from xml + self.correct_positions = dict() # correct positions for comparing + self.user_groups = dict() # will be populated from user answer + self.user_positions = dict() # will be populated from user answer - """ # convert from dict answer format to list format if isinstance(correct_answer, dict): tmp = [] @@ -330,8 +328,8 @@ class DragAndDrop(object): def grade(user_input, correct_answer): - """ Populates DragAndDrop instance from user_input and correct_answer and - calls DragAndDrop.drade for grading. + """ Creates DragAndDrop instance from user_input and correct_answer and + calls DragAndDrop.grade for grading. Supports two interfaces for correct_answer: dict and list. @@ -373,6 +371,5 @@ def grade(user_input, correct_answer): Returns: bool """ - dnd = DragAndDrop() - dnd.populate(correct_answer=correct_answer, user_answer=user_input) - return dnd.grade() + return DragAndDrop(correct_answer=correct_answer, + user_answer=user_input).grade() diff --git a/common/lib/capa/capa/verifiers/tests_draganddrop.py b/common/lib/capa/capa/verifiers/tests_draganddrop.py index 55425ae910..9b1b15ce0c 100644 --- a/common/lib/capa/capa/verifiers/tests_draganddrop.py +++ b/common/lib/capa/capa/verifiers/tests_draganddrop.py @@ -520,11 +520,10 @@ class Test_DragAndDrop_Grade(unittest.TestCase): class Test_DragAndDrop_Populate(unittest.TestCase): def test_1(self): - dnd = draganddrop.DragAndDrop() correct_answer = {'1': [[40, 10], 29], 'name_with_icon': [20, 20]} user_input = '{"draggables": \ [{"1": [10, 10]}, {"name_with_icon": [20, 20]}]}' - dnd.populate(correct_answer, user_input) + dnd = draganddrop.DragAndDrop(correct_answer, user_input) correct_groups = {'1': ['name_with_icon'], '0': ['1']} correct_positions = {'1': {'exact': [[20, 20]]}, '0': {'exact': [[[40, 10], 29]]}} @@ -540,49 +539,49 @@ class Test_DragAndDrop_Populate(unittest.TestCase): class Test_DraAndDrop_Compare_Positions(unittest.TestCase): def test_1(self): - dnd = draganddrop.DragAndDrop() + dnd = draganddrop.DragAndDrop({'1': 't1'}, '{"draggables": [{"1": "t1"}]}') self.assertTrue(dnd.compare_positions(correct=[[1, 1], [2, 3]], user=[[2, 3], [1, 1]], flag='anyof')) def test_2a(self): - dnd = draganddrop.DragAndDrop() + dnd = draganddrop.DragAndDrop({'1': 't1'}, '{"draggables": [{"1": "t1"}]}') self.assertTrue(dnd.compare_positions(correct=[[1, 1], [2, 3]], user=[[2, 3], [1, 1]], flag='exact')) def test_2b(self): - dnd = draganddrop.DragAndDrop() + dnd = draganddrop.DragAndDrop({'1': 't1'}, '{"draggables": [{"1": "t1"}]}') self.assertFalse(dnd.compare_positions(correct=[[1, 1], [2, 3]], user=[[2, 13], [1, 1]], flag='exact')) def test_3(self): - dnd = draganddrop.DragAndDrop() + dnd = draganddrop.DragAndDrop({'1': 't1'}, '{"draggables": [{"1": "t1"}]}') self.assertFalse(dnd.compare_positions(correct=["a", "b"], user=["a", "b", "c"], flag='anyof')) def test_4(self): - dnd = draganddrop.DragAndDrop() + dnd = draganddrop.DragAndDrop({'1': 't1'}, '{"draggables": [{"1": "t1"}]}') self.assertTrue(dnd.compare_positions(correct=["a", "b", "c"], user=["a", "b"], flag='anyof')) def test_5(self): - dnd = draganddrop.DragAndDrop() + dnd = draganddrop.DragAndDrop({'1': 't1'}, '{"draggables": [{"1": "t1"}]}') self.assertFalse(dnd.compare_positions(correct=["a", "b", "c"], user=["a", "c", "b"], flag='exact')) def test_6(self): - dnd = draganddrop.DragAndDrop() + dnd = draganddrop.DragAndDrop({'1': 't1'}, '{"draggables": [{"1": "t1"}]}') self.assertTrue(dnd.compare_positions(correct=["a", "b", "c"], user=["a", "c", "b"], flag='anyof')) def test_7(self): - dnd = draganddrop.DragAndDrop() + dnd = draganddrop.DragAndDrop({'1': 't1'}, '{"draggables": [{"1": "t1"}]}') self.assertFalse(dnd.compare_positions(correct=["a", "b", "b"], user=["a", "c", "b"], flag='anyof'))