mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 06:18:28 +01:00
MDL-11824 - Literal asterisk (\*) in shortanswer question not handled correctly by get_correct_responses + Unit tests. Merged from MOODLE_18_STABLE.
This commit is contained in:
parent
86f7ba7f8d
commit
9b75adc2e3
@ -227,6 +227,17 @@ class question_shortanswer_qtype extends default_questiontype {
|
||||
return preg_match($regexp, trim($string));
|
||||
}
|
||||
|
||||
/*
|
||||
* Override the parent class method, to remove escaping from asterisks.
|
||||
*/
|
||||
function get_correct_responses(&$question, &$state) {
|
||||
$response = parent::get_correct_responses($question, $state);
|
||||
if (is_array($response)) {
|
||||
$response[''] = addslashes(str_replace('\*', '*', stripslashes($response[''])));
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
/// BACKUP FUNCTIONS ////////////////////////////
|
||||
|
||||
/*
|
||||
|
@ -67,6 +67,40 @@ class question_shortanswer_qtype_test extends UnitTestCase {
|
||||
$this->assertTrue($this->qtype->compare_string_with_wildcard('[a-z]', '[a-z]', false));
|
||||
$this->assertTrue($this->qtype->compare_string_with_wildcard('\{}/', '\{}/', true));
|
||||
}
|
||||
|
||||
function test_get_correct_responses() {
|
||||
$answer1 = new stdClass;
|
||||
$answer1->id = 17;
|
||||
$answer1->answer = "frog";
|
||||
$answer1->fraction = 1;
|
||||
$answer2 = new stdClass;
|
||||
$answer2->id = 23;
|
||||
$answer2->answer = "f*g";
|
||||
$answer2->fraction = 1;
|
||||
$answer3 = new stdClass;
|
||||
$answer3->id = 29;
|
||||
$answer3->answer = "12\*13";
|
||||
$answer3->fraction = 1;
|
||||
$answer4 = new stdClass;
|
||||
$answer4->id = 31;
|
||||
$answer4->answer = "*";
|
||||
$answer4->fraction = 0;
|
||||
$question = new stdClass;
|
||||
$question->options->answers = array(
|
||||
17 => $answer1,
|
||||
23 => $answer2,
|
||||
29 => $answer3,
|
||||
31 => $answer4
|
||||
);
|
||||
$state = new stdClass;
|
||||
$this->assertEqual($this->qtype->get_correct_responses($question, $state), array('' => 'frog'));
|
||||
$question->options->answers[17]->fraction = 0;
|
||||
$this->assertEqual($this->qtype->get_correct_responses($question, $state), array('' => 'f*g'));
|
||||
$question->options->answers[23]->fraction = 0;
|
||||
$this->assertEqual($this->qtype->get_correct_responses($question, $state), array('' => '12*13'));
|
||||
$question->options->answers[29]->fraction = 0;
|
||||
$this->assertNull($this->qtype->get_correct_responses($question, $state));
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
Loading…
x
Reference in New Issue
Block a user