Merge branch 'MDL-75757_400' of https://github.com/stronk7/moodle into MOODLE_400_STABLE

This commit is contained in:
Jun Pataleta
2022-09-19 13:01:57 +08:00
3 changed files with 15 additions and 8 deletions
@@ -18,6 +18,7 @@ namespace qbehaviour_deferredcbm;
use question_display_options;
use question_engine;
use question_testcase;
defined('MOODLE_INTERNAL') || die();
@@ -134,8 +135,8 @@ class behaviour_type_test extends \qbehaviour_walkthrough_test_base {
}
public function test_calculate_bonus() {
$this->assertEquals(0.05, $this->behaviourtype->calculate_bonus(1, 1/2));
$this->assertEquals(-0.01, $this->behaviourtype->calculate_bonus(2, 9/10));
$this->assertEquals(0, $this->behaviourtype->calculate_bonus(3, 1));
$this->assertEqualsWithDelta(0.05, $this->behaviourtype->calculate_bonus(1, 1 / 2), question_testcase::GRADE_DELTA);
$this->assertEqualsWithDelta(-0.01, $this->behaviourtype->calculate_bonus(2, 9 / 10), question_testcase::GRADE_DELTA);
$this->assertEqualsWithDelta(0, $this->behaviourtype->calculate_bonus(3, 1), question_testcase::GRADE_DELTA);
}
}
+5
View File
@@ -480,6 +480,11 @@ abstract class data_loading_method_test_base extends advanced_testcase {
abstract class question_testcase extends advanced_testcase {
/**
* Tolerance accepted in some unit tests when float operations are involved.
*/
const GRADE_DELTA = 0.00000005;
public function assert($expectation, $compare, $notused = '') {
if (get_class($expectation) === 'question_pattern_expectation') {
@@ -19,6 +19,7 @@ namespace qtype_multianswer;
use question_attempt_step;
use question_display_options;
use question_state;
use question_testcase;
defined('MOODLE_INTERNAL') || die();
@@ -199,7 +200,7 @@ class question_test extends \advanced_testcase {
2 => array('sub1_answer' => 'Owl', 'sub2_answer' => $right),
);
$finalgrade = $question->compute_final_grade($responses, 1);
$this->assertEquals(1 / 3 * (1 - 0.2) + 2 / 3 * (1 - 2 * 0.2), $finalgrade);
$this->assertEqualsWithDelta(1 / 3 * (1 - 0.2) + 2 / 3 * (1 - 2 * 0.2), $finalgrade, question_testcase::GRADE_DELTA);
// Get subquestion 1 right at 3rd try and subquestion 2 right at 2nd try.
$responses = array(0 => array('sub1_answer' => 'Dog', 'sub2_answer' => $wrong),
@@ -208,7 +209,7 @@ class question_test extends \advanced_testcase {
3 => array('sub1_answer' => 'Owl', 'sub2_answer' => $right),
);
$finalgrade = $question->compute_final_grade($responses, 1);
$this->assertEquals(1 / 3 * (1 - 2 * 0.2) + 2 / 3 * (1 - 0.2), $finalgrade);
$this->assertEqualsWithDelta(1 / 3 * (1 - 2 * 0.2) + 2 / 3 * (1 - 0.2), $finalgrade, question_testcase::GRADE_DELTA);
// Get subquestion 1 right at 4th try and subquestion 2 right at 1st try.
$responses = array(0 => array('sub1_answer' => 'Dog', 'sub2_answer' => $right),
@@ -217,7 +218,7 @@ class question_test extends \advanced_testcase {
3 => array('sub1_answer' => 'Owl', 'sub2_answer' => $right),
);
$finalgrade = $question->compute_final_grade($responses, 1);
$this->assertEquals(1 / 3 * (1 - 3 * 0.2) + 2 / 3, $finalgrade);
$this->assertEqualsWithDelta(1 / 3 * (1 - 3 * 0.2) + 2 / 3, $finalgrade, question_testcase::GRADE_DELTA);
// Get subquestion 1 right at 4th try and subquestion 2 right 3rd try.
// Subquestion 2 was right at 1st try, but last change is at 3rd try.
@@ -227,7 +228,7 @@ class question_test extends \advanced_testcase {
3 => array('sub1_answer' => 'Owl', 'sub2_answer' => $right),
);
$finalgrade = $question->compute_final_grade($responses, 1);
$this->assertEquals(1 / 3 * (1 - 3 * 0.2) + 2 / 3 * (1 - 2 * 0.2), $finalgrade);
$this->assertEqualsWithDelta(1 / 3 * (1 - 3 * 0.2) + 2 / 3 * (1 - 2 * 0.2), $finalgrade, question_testcase::GRADE_DELTA);
// Incomplete responses. Subquestion 1 is right at 4th try and subquestion 2 at 3rd try.
$responses = array(0 => array('sub1_answer' => 'Dog'),
@@ -236,7 +237,7 @@ class question_test extends \advanced_testcase {
3 => array('sub1_answer' => 'Owl', 'sub2_answer' => $right),
);
$finalgrade = $question->compute_final_grade($responses, 1);
$this->assertEquals(1 / 3 * (1 - 3 * 0.2) + 2 / 3 * (1 - 2 * 0.2), $finalgrade);
$this->assertEqualsWithDelta(1 / 3 * (1 - 3 * 0.2) + 2 / 3 * (1 - 2 * 0.2), $finalgrade, question_testcase::GRADE_DELTA);
}
/**