/** * Test "testselectOneLesson()" in Assignments.class.inc. */ public function testselectOneLesson() { // Construct a fake student. Populate with three lessons. // Run about 100 selections and test that a lesson is returned in the // correct ratio. $this->resetMyArray(); // Reset myArray to origninal values. $ac_class_instance = new AssignmentsClass(); $temp_student_id = 'abcdefg'; $ac_class_instance->delRowsByStudentId($temp_student_id); // Insure no previous lessons for this student. $this->myArray['tA_S_ID'] = $temp_student_id; $this->myArray['tA_PercentTime'] = 120; $this->myArray['tG_AssignmentName'] = 'abc'; $ac_class_instance->insertRecord($this->myArray); $this->myArray['tA_PercentTime'] = 137; $this->myArray['tG_AssignmentName'] = 'def'; $ac_class_instance->insertRecord($this->myArray); $this->myArray['tA_PercentTime'] = 20; $this->myArray['tG_AssignmentName'] = 'ghi'; $ac_class_instance->insertRecord($this->myArray); // We should now have 3 assignments for this student. Let's check. $student_assignments_array = $ac_class_instance->getCurrentStudentAssignmentsInAnArray($temp_student_id); $this->assertTrue(count($student_assignments_array) === 3); $this->assertTrue($ac_class_instance->getSumOfAssignedTimeFromArray($student_assignments_array, time()) === 277); $all_lesson_array = $ac_class_instance->getCurrentStudentAssignmentsInAnArray($temp_student_id); $this->assertTrue(is_array($all_lesson_array)); $this->assertTrue(count($all_lesson_array) == 3); $total_abc = 0; $total_def = 0; $total_ghi = 0; for ($i = 0; $i < 100; $i++) { // Trying to select a lesson many times and // Checking for frequency. $last_lesson_id = ''; $selected_lesson = $ac_class_instance->selectOneLesson($all_lesson_array, $last_lesson_id); // Should return array containing one lesson. if (is_array($selected_lesson) === TRUE) { if ($selected_lesson['tG_AssignmentName'] === 'abc') { $total_abc++; } if ($selected_lesson['tG_AssignmentName'] === 'def') { $total_def++; } if ($selected_lesson['tG_AssignmentName'] === 'ghi') { $total_ghi++; } } else { die(__LINE__ . ' acTest should have been an array.'); } } //end for $this->assertTrue($total_abc > 30); $this->assertTrue($total_def > 30); $this->assertTrue($total_abc > 1); // Clean Up. $ac_class_instance->delRowsByStudentId($temp_student_id); $ac_class_instance->delRowsByStudentId($this->myArray['tA_S_ID']); // Insure no previous lessons for this student. $ac_class_instance->delRowsByStudentId('abcdefg'); $this->resetMyArray(); }