MDL-51476 questions: manual grading validation for ungraded Qs

The change in MDL-51090 broke manually commenting on questions for which
no mark is given (max mark == 0). This fixes it, with unit tests.

Thanks to Nick Phillips for the original suggestion of the fix.
This commit is contained in:
Tim Hunt
2015-09-25 14:01:33 +01:00
parent fd57d685c7
commit ddc016830d
3 changed files with 94 additions and 2 deletions
+35 -1
View File
@@ -96,4 +96,38 @@ class question_engine_test extends advanced_testcase {
// Ignore unknown input in the disabled argument.
$this->assertSame($in, question_engine::sort_behaviours($in, '', 'unknown', ''));
}
}
public function test_is_manual_grade_in_range() {
$_POST[] = array('q1:2_-mark' => 0.5, 'q1:2_-maxmark' => 1.0,
'q1:2_:minfraction' => 0, 'q1:2_:maxfraction' => 1);
$this->assertTrue(question_engine::is_manual_grade_in_range(1, 2));
}
public function test_is_manual_grade_in_range_bottom_end() {
$_POST[] = array('q1:2_-mark' => -1.0, 'q1:2_-maxmark' => 2.0,
'q1:2_:minfraction' => -0.5, 'q1:2_:maxfraction' => 1);
$this->assertTrue(question_engine::is_manual_grade_in_range(1, 2));
}
public function test_is_manual_grade_in_range_too_low() {
$_POST[] = array('q1:2_-mark' => -1.1, 'q1:2_-maxmark' => 2.0,
'q1:2_:minfraction' => -0.5, 'q1:2_:maxfraction' => 1);
$this->assertTrue(question_engine::is_manual_grade_in_range(1, 2));
}
public function test_is_manual_grade_in_range_top_end() {
$_POST[] = array('q1:2_-mark' => 3.0, 'q1:2_-maxmark' => 1.0,
'q1:2_:minfraction' => -6.0, 'q1:2_:maxfraction' => 3.0);
$this->assertTrue(question_engine::is_manual_grade_in_range(1, 2));
}
public function test_is_manual_grade_in_range_too_high() {
$_POST[] = array('q1:2_-mark' => 3.1, 'q1:2_-maxmark' => 1.0,
'q1:2_:minfraction' => -6.0, 'q1:2_:maxfraction' => 3.0);
$this->assertTrue(question_engine::is_manual_grade_in_range(1, 2));
}
public function test_is_manual_grade_in_range_ungraded() {
$this->assertTrue(question_engine::is_manual_grade_in_range(1, 2));
}
}