mirror of
https://github.com/moodle/moodle.git
synced 2025-04-20 07:56:06 +02:00
MDL-75757 phpunit: Add some tolerance to a few failing assertions
Recently, PHPUnit (all versions) did some changes about how the comparators worked and this has caused some float comparisons to stop working. We need to move them to assertEqualsWithDelta(), allowing a small tolerance to workaround the floats comparison problem. 0.00001 has been decided. And applied to all the similar assertions within the unittest function, so if more cases are added to them better be copied with the agreed tolerance.
This commit is contained in:
parent
b077af7e89
commit
6be384ee8f
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user