diff --git a/common/lib/xmodule/test_files/formularesponse_with_hint.xml b/common/lib/xmodule/test_files/formularesponse_with_hint.xml new file mode 100644 index 0000000000000000000000000000000000000000..e5b3e2870833974f18352202b74b3ce67281d1be --- /dev/null +++ b/common/lib/xmodule/test_files/formularesponse_with_hint.xml @@ -0,0 +1,45 @@ +<problem> +<script type="loncapa/python"> +from loncapa import * +x1 = 4 # lc_random(2,4,1) +y1 = 5 # lc_random(3,7,1) + +x2 = 10 # lc_random(x1+1,9,1) +y2 = 20 # lc_random(y1+1,15,1) + +m = (y2-y1)/(x2-x1) +b = y1 - m*x1 +answer = "%s*x+%s" % (m,b) +answer = answer.replace('+-','-') + +inverted_m = (x2-x1)/(y2-y1) +inverted_b = b +wrongans = "%s*x+%s" % (inverted_m,inverted_b) +wrongans = wrongans.replace('+-','-') +</script> + +<text> +<p>Hints can be provided to students, based on the last response given, as well as the history of responses given. Here is an example of a hint produced by a Formula Response problem.</p> + +<p> +What is the equation of the line which passess through ($x1,$y1) and +($x2,$y2)?</p> + +<p>The correct answer is <tt>$answer</tt>. A common error is to invert the equation for the slope. Enter <tt> +$wrongans</tt> to see a hint.</p> + +</text> + +<formularesponse samples="x@-5:5#11" id="11" answer="$answer"> + <responseparam description="Numerical Tolerance" type="tolerance" default="0.001" name="tol" /> + <text>y = <textline size="25" /></text> + <hintgroup> + <formulahint samples="x@-5:5#11" answer="$wrongans" name="inversegrad"> + </formulahint> + <hintpart on="inversegrad"> + <text>You have inverted the slope in the question.</text> + </hintpart> + </hintgroup> +</formularesponse> +</problem> + diff --git a/common/lib/xmodule/test_files/stringresponse_with_hint.xml b/common/lib/xmodule/test_files/stringresponse_with_hint.xml new file mode 100644 index 0000000000000000000000000000000000000000..86efdf0f18e1b3265211a111f582eb318c18025f --- /dev/null +++ b/common/lib/xmodule/test_files/stringresponse_with_hint.xml @@ -0,0 +1,25 @@ +<problem > + <text><h2>Example: String Response Problem</h2> + <br/> + </text> + + <text>Which US state has Lansing as its capital?</text> + <stringresponse answer="Michigan" type="ci"> + <textline size="20" /> + <hintgroup> + <stringhint answer="wisconsin" type="cs" name="wisc"> + </stringhint> + <stringhint answer="minnesota" type="cs" name="minn"> + </stringhint> + <hintpart on="wisc"> + <text>The state capital of Wisconsin is Madison.</text> + </hintpart> + <hintpart on="minn"> + <text>The state capital of Minnesota is St. Paul.</text> + </hintpart> + <hintpart on="default"> + <text>The state you are looking for is also known as the 'Great Lakes State'</text> + </hintpart> + </hintgroup> + </stringresponse> +</problem> diff --git a/common/lib/xmodule/tests.py b/common/lib/xmodule/tests.py index 6f054b4bfb8c40e9c81266002d7488d2d95d8d8b..370b3befe5d3667072bc3b1f466f10a880743926 100644 --- a/common/lib/xmodule/tests.py +++ b/common/lib/xmodule/tests.py @@ -256,6 +256,20 @@ class FormulaResponseWithHintTest(unittest.TestCase): self.assertEquals(cmap.get_correctness('1_2_1'), 'incorrect') self.assertTrue('You have inverted' in cmap.get_hint('1_2_1')) +class StringResponseWithHintTest(unittest.TestCase): + ''' + Test String response problem with a hint + ''' + def test_or_grade(self): + problem_file = os.path.dirname(__file__)+"/test_files/stringresponse_with_hint.xml" + test_lcp = lcp.LoncapaProblem(open(problem_file), '1', system=i4xs) + correct_answers = {'1_2_1':'Michigan'} + test_answers = {'1_2_1':'Minnesota'} + self.assertEquals(test_lcp.grade_answers(correct_answers).get_correctness('1_2_1'), 'correct') + cmap = test_lcp.grade_answers(test_answers) + self.assertEquals(cmap.get_correctness('1_2_1'), 'incorrect') + self.assertTrue('St. Paul' in cmap.get_hint('1_2_1')) + #----------------------------------------------------------------------------- # Grading tests