From dd9cdc1c2f49c0c45338546fb8856f477c510d5a Mon Sep 17 00:00:00 2001 From: Alexander Kryklia Date: Wed, 26 Dec 2012 17:17:12 +0200 Subject: [PATCH] tests for drag and drop --- common/lib/capa/capa/graders/tests.py | 66 ++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/common/lib/capa/capa/graders/tests.py b/common/lib/capa/capa/graders/tests.py index be37c49679..70208ab327 100644 --- a/common/lib/capa/capa/graders/tests.py +++ b/common/lib/capa/capa/graders/tests.py @@ -6,17 +6,71 @@ import draganddrop class Test_DragAndDrop(unittest.TestCase): def test_targets_true(self): - user_input = '{"use_targets": "true", "draggables": \ - ["1": "t1", "name_with_icon": "t2"]}' + user_input = '{"use_targets": true, "draggables": [{"1": "t1"}, \ + {"name_with_icon": "t2"}]}' correct_answer = {'1': 't1', 'name_with_icon': 't2'} self.assertTrue(draganddrop.grade(user_input, correct_answer)) - def test_targets_true(self): - user_input = '{"use_targets": "true", "draggables": \ - ["1": "t1", "name_with_icon": "t2"]}' - correct_answer = {'1': 't1', 'name_with_icon': 't2'} + def test_targets_false(self): + user_input = '{"use_targets": true, "draggables": [{"1": "t1"}, \ + {"name_with_icon": "t2"}]}' + correct_answer = {'1': 't3', 'name_with_icon': 't2'} + self.assertFalse(draganddrop.grade(user_input, correct_answer)) + + def test_multiple_images_per_target_true(self): + user_input = '{"use_targets": true, \ + "draggables": [{"1": "t1"}, {"name_with_icon": "t1"}]}' + correct_answer = {'1': 't1', 'name_with_icon': 't1'} self.assertTrue(draganddrop.grade(user_input, correct_answer)) + def test_multiple_images_per_target_false(self): + user_input = '{"use_targets": true, \ + "draggables": [{"1": "t1"}, {"name_with_icon": "t1"}]}' + correct_answer = {'1': 't2', 'name_with_icon': 't1'} + self.assertFalse(draganddrop.grade(user_input, correct_answer)) + + def test_targets_and_positions(self): + user_input = '{"use_targets": true, "draggables": [{"1": [10,10]}, \ + {"name_with_icon": [[10,10],4]}]}' + correct_answer = {'1': [10, 10], 'name_with_icon': [[10, 10], 4]} + self.assertFalse(draganddrop.grade(user_input, correct_answer)) + + def test_position_and_targets(self): + user_input = '{"use_targets": false, \ + "draggables": [{"1": "t1"}, {"name_with_icon": "t2"}]}' + correct_answer = {'1': 't1', 'name_with_icon': 't2'} + self.assertFalse(draganddrop.grade(user_input, correct_answer)) + + def test_positions_exact(self): + user_input = '{"use_targets": false, "draggables": \ + [{"1": [10, 10]}, {"name_with_icon": [20, 20]}]}' + correct_answer = {'1': [10, 10], 'name_with_icon': [20, 20]} + self.assertTrue(draganddrop.grade(user_input, correct_answer)) + + def test_positions_false(self): + user_input = '{"use_targets": false, "draggables": \ + [{"1": [10, 10]}, {"name_with_icon": [20, 20]}]}' + correct_answer = {'1': [25, 25], 'name_with_icon': [20, 20]} + self.assertFalse(draganddrop.grade(user_input, correct_answer)) + + def test_positions_true_in_radius(self): + user_input = '{"use_targets": false, "draggables": \ + [{"1": [10, 10]}, {"name_with_icon": [20, 20]}]}' + correct_answer = {'1': [14, 14], 'name_with_icon': [20, 20]} + self.assertTrue(draganddrop.grade(user_input, correct_answer)) + + def test_positions_true_in_manual_radius(self): + user_input = '{"use_targets": false, "draggables": \ + [{"1": [10, 10]}, {"name_with_icon": [20, 20]}]}' + correct_answer = {'1': [[40, 10], 30], 'name_with_icon': [20, 20]} + self.assertTrue(draganddrop.grade(user_input, correct_answer)) + + def test_positions_false_in_manual_radius(self): + user_input = '{"use_targets": false, "draggables": \ + [{"1": [10, 10]}, {"name_with_icon": [20, 20]}]}' + correct_answer = {'1': [[40, 10], 29], 'name_with_icon': [20, 20]} + self.assertFalse(draganddrop.grade(user_input, correct_answer)) + def suite():