|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 // This file is part of Moodle - http://moodle.org/ 00003 // 00004 // Moodle is free software: you can redistribute it and/or modify 00005 // it under the terms of the GNU General Public License as published by 00006 // the Free Software Foundation, either version 3 of the License, or 00007 // (at your option) any later version. 00008 // 00009 // Moodle is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 // GNU General Public License for more details. 00013 // 00014 // You should have received a copy of the GNU General Public License 00015 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 00016 00027 defined('MOODLE_INTERNAL') || die(); 00028 00029 require_once($CFG->dirroot . '/mod/quiz/accessrule/openclosedate/rule.php'); 00030 00031 00038 class quizaccess_openclosedate_test extends UnitTestCase { 00039 public static $includecoverage = array('mod/quiz/accessrule/openclosedate/rule.php'); 00040 00041 public function test_no_dates() { 00042 $quiz = new stdClass(); 00043 $quiz->timeopen = 0; 00044 $quiz->timeclose = 0; 00045 $quiz->questions = ''; 00046 $cm = new stdClass(); 00047 $cm->id = 0; 00048 $quizobj = new quiz($quiz, $cm, null); 00049 $attempt = new stdClass(); 00050 $attempt->preview = 0; 00051 00052 $rule = new quizaccess_openclosedate($quizobj, 10000); 00053 $this->assertFalse($rule->description()); 00054 $this->assertFalse($rule->prevent_access()); 00055 $this->assertFalse($rule->prevent_new_attempt(0, $attempt)); 00056 $this->assertFalse($rule->is_finished(0, $attempt)); 00057 $this->assertFalse($rule->time_left($attempt, 10000)); 00058 $this->assertFalse($rule->time_left($attempt, 0)); 00059 00060 $rule = new quizaccess_openclosedate($quizobj, 0); 00061 $this->assertFalse($rule->description()); 00062 $this->assertFalse($rule->prevent_access()); 00063 $this->assertFalse($rule->prevent_new_attempt(0, $attempt)); 00064 $this->assertFalse($rule->is_finished(0, $attempt)); 00065 $this->assertFalse($rule->time_left($attempt, 0)); 00066 } 00067 00068 public function test_start_date() { 00069 $quiz = new stdClass(); 00070 $quiz->timeopen = 10000; 00071 $quiz->timeclose = 0; 00072 $quiz->questions = ''; 00073 $cm = new stdClass(); 00074 $cm->id = 0; 00075 $quizobj = new quiz($quiz, $cm, null); 00076 $attempt = new stdClass(); 00077 $attempt->preview = 0; 00078 00079 $rule = new quizaccess_openclosedate($quizobj, 9999); 00080 $this->assertEqual($rule->description(), 00081 array(get_string('quiznotavailable', 'quizaccess_openclosedate', userdate(10000)))); 00082 $this->assertEqual($rule->prevent_access(), 00083 get_string('notavailable', 'quizaccess_openclosedate')); 00084 $this->assertFalse($rule->prevent_new_attempt(0, $attempt)); 00085 $this->assertFalse($rule->is_finished(0, $attempt)); 00086 $this->assertFalse($rule->time_left($attempt, 0)); 00087 00088 $rule = new quizaccess_openclosedate($quizobj, 10000); 00089 $this->assertEqual($rule->description(), 00090 array(get_string('quizopenedon', 'quiz', userdate(10000)))); 00091 $this->assertFalse($rule->prevent_access()); 00092 $this->assertFalse($rule->prevent_new_attempt(0, $attempt)); 00093 $this->assertFalse($rule->is_finished(0, $attempt)); 00094 $this->assertFalse($rule->time_left($attempt, 0)); 00095 } 00096 00097 public function test_close_date() { 00098 $quiz = new stdClass(); 00099 $quiz->timeopen = 0; 00100 $quiz->timeclose = 20000; 00101 $quiz->questions = ''; 00102 $cm = new stdClass(); 00103 $cm->id = 0; 00104 $quizobj = new quiz($quiz, $cm, null); 00105 $attempt = new stdClass(); 00106 $attempt->preview = 0; 00107 00108 $rule = new quizaccess_openclosedate($quizobj, 20000); 00109 $this->assertEqual($rule->description(), 00110 array(get_string('quizcloseson', 'quiz', userdate(20000)))); 00111 $this->assertFalse($rule->prevent_access()); 00112 $this->assertFalse($rule->prevent_new_attempt(0, $attempt)); 00113 $this->assertFalse($rule->is_finished(0, $attempt)); 00114 $this->assertFalse($rule->time_left($attempt, 20000 - QUIZ_SHOW_TIME_BEFORE_DEADLINE)); 00115 $this->assertEqual($rule->time_left($attempt, 19900), 100); 00116 $this->assertEqual($rule->time_left($attempt, 20000), 0); 00117 $this->assertEqual($rule->time_left($attempt, 20100), -100); 00118 00119 $rule = new quizaccess_openclosedate($quizobj, 20001); 00120 $this->assertEqual($rule->description(), 00121 array(get_string('quizclosed', 'quiz', userdate(20000)))); 00122 $this->assertEqual($rule->prevent_access(), 00123 get_string('notavailable', 'quizaccess_openclosedate')); 00124 $this->assertFalse($rule->prevent_new_attempt(0, $attempt)); 00125 $this->assertTrue($rule->is_finished(0, $attempt)); 00126 $this->assertFalse($rule->time_left($attempt, 20000 - QUIZ_SHOW_TIME_BEFORE_DEADLINE)); 00127 $this->assertEqual($rule->time_left($attempt, 19900), 100); 00128 $this->assertEqual($rule->time_left($attempt, 20000), 0); 00129 $this->assertEqual($rule->time_left($attempt, 20100), -100); 00130 } 00131 00132 public function test_both_dates() { 00133 $quiz = new stdClass(); 00134 $quiz->timeopen = 10000; 00135 $quiz->timeclose = 20000; 00136 $quiz->questions = ''; 00137 $cm = new stdClass(); 00138 $cm->id = 0; 00139 $quizobj = new quiz($quiz, $cm, null); 00140 $attempt = new stdClass(); 00141 $attempt->preview = 0; 00142 00143 $rule = new quizaccess_openclosedate($quizobj, 9999); 00144 $this->assertEqual($rule->description(), 00145 array(get_string('quiznotavailable', 'quizaccess_openclosedate', userdate(10000)))); 00146 $this->assertEqual($rule->prevent_access(), 00147 get_string('notavailable', 'quizaccess_openclosedate')); 00148 $this->assertFalse($rule->prevent_new_attempt(0, $attempt)); 00149 $this->assertFalse($rule->is_finished(0, $attempt)); 00150 00151 $rule = new quizaccess_openclosedate($quizobj, 10000); 00152 $this->assertEqual($rule->description(), 00153 array(get_string('quizopenedon', 'quiz', userdate(10000)), 00154 get_string('quizcloseson', 'quiz', userdate(20000)))); 00155 $this->assertFalse($rule->prevent_access()); 00156 $this->assertFalse($rule->prevent_new_attempt(0, $attempt)); 00157 $this->assertFalse($rule->is_finished(0, $attempt)); 00158 00159 $rule = new quizaccess_openclosedate($quizobj, 20000); 00160 $this->assertEqual($rule->description(), 00161 array(get_string('quizopenedon', 'quiz', userdate(10000)), 00162 get_string('quizcloseson', 'quiz', userdate(20000)))); 00163 $this->assertFalse($rule->prevent_access()); 00164 $this->assertFalse($rule->prevent_new_attempt(0, $attempt)); 00165 $this->assertFalse($rule->is_finished(0, $attempt)); 00166 00167 $rule = new quizaccess_openclosedate($quizobj, 20001); 00168 $this->assertEqual($rule->description(), 00169 array(get_string('quizclosed', 'quiz', userdate(20000)))); 00170 $this->assertEqual($rule->prevent_access(), 00171 get_string('notavailable', 'quizaccess_openclosedate')); 00172 $this->assertFalse($rule->prevent_new_attempt(0, $attempt)); 00173 $this->assertTrue($rule->is_finished(0, $attempt)); 00174 00175 $this->assertFalse($rule->time_left($attempt, 20000 - QUIZ_SHOW_TIME_BEFORE_DEADLINE)); 00176 $this->assertEqual($rule->time_left($attempt, 19900), 100); 00177 $this->assertEqual($rule->time_left($attempt, 20000), 0); 00178 $this->assertEqual($rule->time_left($attempt, 20100), -100); 00179 } 00180 }