Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/mod/quiz/accessrule/openclosedate/simpletest/testrule.php
Go to the documentation of this file.
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 }
 All Data Structures Namespaces Files Functions Variables Enumerations