$final_grades_for_aggregation[] = $item->get_standardised_final();
}
}
+
// 3. Aggregate the grades
$aggregated_grades = $this->aggregate_grades($final_grades_for_aggregation);
// If the gradevalue is null, we have a problem
if (empty($aggregated_value)) {
return false;
- }
-
+ }
+
$grade_raw = new grade_grades_raw();
+
$grade_raw->userid = $userid;
$grade_raw->gradevalue = $aggregated_value;
$grade_raw->grademin = $this->grade_item->grademin;
$raw_grade->update($raw_grade->gradevalue, $howmodified, $note);
} else {
$raw_grade->itemid = $this->id;
+ if ($raw_grade->gradevalue > $raw_grade->grademax) {
+ die("raw GRADE EXCEEDED grademax FIRST");
+ }
$raw_grade->insert();
}
$final_grade->gradevalue = $this->adjust_grade($raw_grade);
$final_grade->itemid = $this->id;
$final_grade->userid = $raw_grade->userid;
+ if ($final_grade->gradevalue > $this->grademax) {
+ die("FINAL GRADE EXCEEDED grademax FIRST");
+ }
$success = $success & $final_grade->insert();
$this->grade_grades_final[$final_grade->userid] = $final_grade;
}
$this->assertEqual(3, count($raw_grades));
$this->assertEqual(3, count($final_grades));
+
+ foreach ($raw_grades as $grade) {
+ $this->assertWithinMargin($grade->gradevalue, $grade->grademin, $grade->grademax);
+ }
+
+ foreach ($final_grades as $grade) {
+ $this->assertWithinMargin($grade->gradevalue, 0, 100);
+ }
}
function test_grade_category_aggregate_grades() {
$raw_grade = new grade_grades_raw();
$raw_grade->itemid = $item->id;
$raw_grade->userid = $userid;
- $raw_grade->grademin = $item->grademin;
- $raw_grade->grademax = $item->grademax;
+ $raw_grade->grademin = 0;
+ $raw_grade->grademax = 1;
$valuetype = "grade$item->gradetype";
$raw_grade->gradevalue = rand(0, 1000) / 1000;
$raw_grade->insert();
- return $raw_grade;
+ return $raw_grade->gradevalue;
}
}
?>
$grade_final = new stdClass();
$grade_final->itemid = $this->grade_items[2]->id;
$grade_final->userid = 1;
- $grade_final->gradevalue = 70.5;
+ $grade_final->gradevalue = 6;
$grade_final->timecreated = mktime();
$grade_final->timemodified = mktime();
$grade_final->locked = true;
$grade_final = new stdClass();
$grade_final->itemid = $this->grade_items[2]->id;
$grade_final->userid = 2;
- $grade_final->gradevalue = 80.5;
+ $grade_final->gradevalue = 2;
$grade_final->timecreated = mktime();
$grade_final->timemodified = mktime();
$grade_final->locked = true;
$grade_final = new stdClass();
$grade_final->itemid = $this->grade_items[2]->id;
$grade_final->userid = 3;
- $grade_final->gradevalue = 64.5;
+ $grade_final->gradevalue = 3;
$grade_final->timecreated = mktime();
$grade_final->timemodified = mktime();
$grade_final->locked = false;