mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 12:40:01 +01:00
Merge branch 'MDL-70574' of https://github.com/timhunt/moodle
This commit is contained in:
commit
d0ff6939bb
@ -257,7 +257,7 @@ class qtype_multianswer extends question_type {
|
||||
|
||||
// ANSWER_ALTERNATIVE regexes.
|
||||
define('ANSWER_ALTERNATIVE_FRACTION_REGEX',
|
||||
'=|%(-?[0-9]+)%');
|
||||
'=|%(-?[0-9]+(?:[.,][0-9]*)?)%');
|
||||
// For the syntax '(?<!' see http://www.perl.com/doc/manual/html/pod/perlre.html#item_C.
|
||||
define('ANSWER_ALTERNATIVE_ANSWER_REGEX',
|
||||
'.+?(?<!\\\\|&|&)(?=[~#}]|$)');
|
||||
@ -444,7 +444,8 @@ function qtype_multianswer_extract_question($text) {
|
||||
if ('=' == $altregs[ANSWER_ALTERNATIVE_REGEX_FRACTION]) {
|
||||
$wrapped->fraction["{$answerindex}"] = '1';
|
||||
} else if ($percentile = $altregs[ANSWER_ALTERNATIVE_REGEX_PERCENTILE_FRACTION]) {
|
||||
$wrapped->fraction["{$answerindex}"] = .01 * $percentile;
|
||||
// Accept either decimal place character.
|
||||
$wrapped->fraction["{$answerindex}"] = .01 * str_replace(',', '.', $percentile);
|
||||
$hasspecificfraction = true;
|
||||
} else {
|
||||
$wrapped->fraction["{$answerindex}"] = '0';
|
||||
|
@ -298,11 +298,10 @@ class qtype_multianswer_test extends advanced_testcase {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify that the multiplechoice variants parameters are correctly interpreted from
|
||||
* the question text
|
||||
*
|
||||
*
|
||||
*/
|
||||
public function test_questiontext_extraction_of_multiplechoice_subquestions_variants() {
|
||||
$questiontext = array();
|
||||
@ -310,18 +309,18 @@ class qtype_multianswer_test extends advanced_testcase {
|
||||
$questiontext['itemid'] = '';
|
||||
$questiontext['text'] = '<p>Match the following cities with the correct state:</p>
|
||||
<ul>
|
||||
<li>1 San Francisco:{1:MULTICHOICE:=California#OK~Arizona#Wrong}</li>
|
||||
<li>2 Tucson:{1:MC:%0%California#Wrong~=Arizona#OK}</li>
|
||||
<li>3 Los Angeles:{1:MULTICHOICE_S:=California#OK~Arizona#Wrong}</li>
|
||||
<li>4 Phoenix:{1:MCS:%0%California#Wrong~=Arizona#OK}</li>
|
||||
<li>5 San Francisco:{1:MULTICHOICE_H:=California#OK~Arizona#Wrong}</li>
|
||||
<li>6 Tucson:{1:MCH:%0%California#Wrong~=Arizona#OK}</li>
|
||||
<li>7 Los Angeles:{1:MULTICHOICE_HS:=California#OK~Arizona#Wrong}</li>
|
||||
<li>8 Phoenix:{1:MCHS:%0%California#Wrong~=Arizona#OK}</li>
|
||||
<li>9 San Francisco:{1:MULTICHOICE_V:=California#OK~Arizona#Wrong}</li>
|
||||
<li>10 Tucson:{1:MCV:%0%California#Wrong~=Arizona#OK}</li>
|
||||
<li>11 Los Angeles:{1:MULTICHOICE_VS:=California#OK~Arizona#Wrong}</li>
|
||||
<li>12 Phoenix:{1:MCVS:%0%California#Wrong~=Arizona#OK}</li>
|
||||
<li>1 San Francisco:{1:MULTICHOICE:=California#OK~%33.33333%Ohio#Not really~Arizona#Wrong}</li>
|
||||
<li>2 Tucson:{1:MC:%0%California#Wrong~%33,33333%Ohio#Not really~=Arizona#OK}</li>
|
||||
<li>3 Los Angeles:{1:MULTICHOICE_S:=California#OK~%33.33333%Ohio#Not really~Arizona#Wrong}</li>
|
||||
<li>4 Phoenix:{1:MCS:%0%California#Wrong~%33,33333%Ohio#Not really~=Arizona#OK}</li>
|
||||
<li>5 San Francisco:{1:MULTICHOICE_H:=California#OK~%33.33333%Ohio#Not really~Arizona#Wrong}</li>
|
||||
<li>6 Tucson:{1:MCH:%0%California#Wrong~%33,33333%Ohio#Not really~=Arizona#OK}</li>
|
||||
<li>7 Los Angeles:{1:MULTICHOICE_HS:=California#OK~%33.33333%Ohio#Not really~Arizona#Wrong}</li>
|
||||
<li>8 Phoenix:{1:MCHS:%0%California#Wrong~%33,33333%Ohio#Not really~=Arizona#OK}</li>
|
||||
<li>9 San Francisco:{1:MULTICHOICE_V:=California#OK~%33.33333%Ohio#Not really~Arizona#Wrong}</li>
|
||||
<li>10 Tucson:{1:MCV:%0%California#Wrong~%33,33333%Ohio#Not really~=Arizona#OK}</li>
|
||||
<li>11 Los Angeles:{1:MULTICHOICE_VS:=California#OK~%33.33333%Ohio#Not really~Arizona#Wrong}</li>
|
||||
<li>12 Phoenix:{1:MCVS:%0%California#Wrong~%33,33333%Ohio#Not really~=Arizona#OK}</li>
|
||||
</ul>';
|
||||
|
||||
$q = qtype_multianswer_extract_question($questiontext);
|
||||
@ -339,6 +338,16 @@ class qtype_multianswer_test extends advanced_testcase {
|
||||
} else if ($key == 9 || $key == 10 || $key == 11 || $key == 12) {
|
||||
$this->assertSame($sub->layout, qtype_multichoice_base::LAYOUT_VERTICAL);
|
||||
}
|
||||
foreach ($sub->feedback as $key => $feedback) {
|
||||
if ($feedback['text'] === 'OK') {
|
||||
$this->assertEquals(1, $sub->fraction[$key]);
|
||||
} else if ($feedback['text'] === 'Wrong') {
|
||||
$this->assertEquals(0, $sub->fraction[$key]);
|
||||
} else {
|
||||
$this->assertEquals('Not really', $feedback['text']);
|
||||
$this->assertEquals(0.3333333, $sub->fraction[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user