Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/mod/quiz/accessrule/delaybetweenattempts/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/delaybetweenattempts/rule.php');
00030 
00031 
00038 class quizaccess_delaybetweenattempts_test extends UnitTestCase {
00039     public function test_just_first_delay() {
00040         $quiz = new stdClass();
00041         $quiz->attempts = 3;
00042         $quiz->timelimit = 0;
00043         $quiz->delay1 = 1000;
00044         $quiz->delay2 = 0;
00045         $quiz->timeclose = 0;
00046         $quiz->questions = '';
00047         $cm = new stdClass();
00048         $cm->id = 0;
00049         $quizobj = new quiz($quiz, $cm, null);
00050         $attempt = new stdClass();
00051         $attempt->timefinish = 10000;
00052 
00053         $rule = new quizaccess_delaybetweenattempts($quizobj, 10000);
00054         $this->assertFalse($rule->description());
00055         $this->assertFalse($rule->prevent_access());
00056         $this->assertFalse($rule->is_finished(0, $attempt));
00057         $this->assertFalse($rule->time_left($attempt, 0));
00058 
00059         $this->assertFalse($rule->prevent_new_attempt(0, $attempt));
00060         $this->assertFalse($rule->prevent_new_attempt(3, $attempt));
00061         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00062                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11000)));
00063         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00064         $attempt->timefinish = 9000;
00065         $this->assertFalse($rule->prevent_new_attempt(1, $attempt));
00066         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00067         $attempt->timefinish = 9001;
00068         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00069                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00070         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00071     }
00072 
00073     public function test_just_second_delay() {
00074         $quiz = new stdClass();
00075         $quiz->attempts = 5;
00076         $quiz->timelimit = 0;
00077         $quiz->delay1 = 0;
00078         $quiz->delay2 = 1000;
00079         $quiz->timeclose = 0;
00080         $quiz->questions = '';
00081         $cm = new stdClass();
00082         $cm->id = 0;
00083         $quizobj = new quiz($quiz, $cm, null);
00084         $attempt = new stdClass();
00085         $attempt->timefinish = 10000;
00086 
00087         $rule = new quizaccess_delaybetweenattempts($quizobj, 10000);
00088         $this->assertFalse($rule->description());
00089         $this->assertFalse($rule->prevent_access());
00090         $this->assertFalse($rule->is_finished(0, $attempt));
00091         $this->assertFalse($rule->time_left($attempt, 0));
00092 
00093         $this->assertFalse($rule->prevent_new_attempt(0, $attempt));
00094         $this->assertFalse($rule->prevent_new_attempt(5, $attempt));
00095         $this->assertFalse($rule->prevent_new_attempt(1, $attempt));
00096         $this->assertEqual($rule->prevent_new_attempt(2, $attempt),
00097                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11000)));
00098         $this->assertEqual($rule->prevent_new_attempt(3, $attempt),
00099                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11000)));
00100         $attempt->timefinish = 9000;
00101         $this->assertFalse($rule->prevent_new_attempt(1, $attempt));
00102         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00103         $this->assertFalse($rule->prevent_new_attempt(3, $attempt));
00104         $attempt->timefinish = 9001;
00105         $this->assertFalse($rule->prevent_new_attempt(1, $attempt));
00106         $this->assertEqual($rule->prevent_new_attempt(2, $attempt),
00107                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00108         $this->assertEqual($rule->prevent_new_attempt(4, $attempt),
00109                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00110     }
00111 
00112     public function test_just_both_delays() {
00113         $quiz = new stdClass();
00114         $quiz->attempts = 5;
00115         $quiz->timelimit = 0;
00116         $quiz->delay1 = 2000;
00117         $quiz->delay2 = 1000;
00118         $quiz->timeclose = 0;
00119         $quiz->questions = '';
00120         $cm = new stdClass();
00121         $cm->id = 0;
00122         $quizobj = new quiz($quiz, $cm, null);
00123         $attempt = new stdClass();
00124         $attempt->timefinish = 10000;
00125 
00126         $rule = new quizaccess_delaybetweenattempts($quizobj, 10000);
00127         $this->assertFalse($rule->description());
00128         $this->assertFalse($rule->prevent_access());
00129         $this->assertFalse($rule->is_finished(0, $attempt));
00130         $this->assertFalse($rule->time_left($attempt, 0));
00131 
00132         $this->assertFalse($rule->prevent_new_attempt(0, $attempt));
00133         $this->assertFalse($rule->prevent_new_attempt(5, $attempt));
00134         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00135                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(12000)));
00136         $this->assertEqual($rule->prevent_new_attempt(2, $attempt),
00137                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11000)));
00138         $this->assertEqual($rule->prevent_new_attempt(3, $attempt),
00139                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11000)));
00140         $attempt->timefinish = 8000;
00141         $this->assertFalse($rule->prevent_new_attempt(1, $attempt));
00142         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00143         $this->assertFalse($rule->prevent_new_attempt(3, $attempt));
00144         $attempt->timefinish = 8001;
00145         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00146                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00147         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00148         $this->assertFalse($rule->prevent_new_attempt(4, $attempt));
00149         $attempt->timefinish = 9000;
00150         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00151                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11000)));
00152         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00153         $this->assertFalse($rule->prevent_new_attempt(3, $attempt));
00154         $attempt->timefinish = 9001;
00155         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00156                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11001)));
00157         $this->assertEqual($rule->prevent_new_attempt(2, $attempt),
00158                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00159         $this->assertEqual($rule->prevent_new_attempt(4, $attempt),
00160                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00161     }
00162 
00163     public function test_with_close_date() {
00164         $quiz = new stdClass();
00165         $quiz->attempts = 5;
00166         $quiz->timelimit = 0;
00167         $quiz->delay1 = 2000;
00168         $quiz->delay2 = 1000;
00169         $quiz->timeclose = 15000;
00170         $quiz->questions = '';
00171         $cm = new stdClass();
00172         $cm->id = 0;
00173         $quizobj = new quiz($quiz, $cm, null);
00174         $attempt = new stdClass();
00175         $attempt->timefinish = 13000;
00176 
00177         $rule = new quizaccess_delaybetweenattempts($quizobj, 10000);
00178         $this->assertFalse($rule->description());
00179         $this->assertFalse($rule->prevent_access());
00180         $this->assertFalse($rule->is_finished(0, $attempt));
00181         $this->assertFalse($rule->time_left($attempt, 0));
00182 
00183         $attempt->timefinish = 13000;
00184         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00185                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(15000)));
00186         $attempt->timefinish = 13001;
00187         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00188                 get_string('youcannotwait', 'quizaccess_delaybetweenattempts'));
00189         $attempt->timefinish = 14000;
00190         $this->assertEqual($rule->prevent_new_attempt(2, $attempt),
00191                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(15000)));
00192         $attempt->timefinish = 14001;
00193         $this->assertEqual($rule->prevent_new_attempt(2, $attempt),
00194                 get_string('youcannotwait', 'quizaccess_delaybetweenattempts'));
00195 
00196         $rule = new quizaccess_delaybetweenattempts($quizobj, 15000);
00197         $attempt->timefinish = 13000;
00198         $this->assertFalse($rule->prevent_new_attempt(1, $attempt));
00199         $attempt->timefinish = 13001;
00200         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00201                 get_string('youcannotwait', 'quizaccess_delaybetweenattempts'));
00202         $attempt->timefinish = 14000;
00203         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00204         $attempt->timefinish = 14001;
00205         $this->assertEqual($rule->prevent_new_attempt(2, $attempt),
00206                 get_string('youcannotwait', 'quizaccess_delaybetweenattempts'));
00207 
00208         $rule = new quizaccess_delaybetweenattempts($quizobj, 15001);
00209         $attempt->timefinish = 13000;
00210         $this->assertFalse($rule->prevent_new_attempt(1, $attempt));
00211         $attempt->timefinish = 13001;
00212         $this->assertFalse($rule->prevent_new_attempt(1, $attempt));
00213         $attempt->timefinish = 14000;
00214         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00215         $attempt->timefinish = 14001;
00216         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00217     }
00218 
00219     public function test_time_limit_and_overdue() {
00220         $quiz = new stdClass();
00221         $quiz->attempts = 5;
00222         $quiz->timelimit = 100;
00223         $quiz->delay1 = 2000;
00224         $quiz->delay2 = 1000;
00225         $quiz->timeclose = 0;
00226         $quiz->questions = '';
00227         $cm = new stdClass();
00228         $cm->id = 0;
00229         $quizobj = new quiz($quiz, $cm, null);
00230         $attempt = new stdClass();
00231         $attempt->timestart = 9900;
00232         $attempt->timefinish = 10100;
00233 
00234         $rule = new quizaccess_delaybetweenattempts($quizobj, 10000);
00235         $this->assertFalse($rule->description());
00236         $this->assertFalse($rule->prevent_access());
00237         $this->assertFalse($rule->is_finished(0, $attempt));
00238         $this->assertFalse($rule->time_left($attempt, 0));
00239 
00240         $this->assertFalse($rule->prevent_new_attempt(0, $attempt));
00241         $this->assertFalse($rule->prevent_new_attempt(5, $attempt));
00242         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00243                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(12000)));
00244         $this->assertEqual($rule->prevent_new_attempt(2, $attempt),
00245                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11000)));
00246         $this->assertEqual($rule->prevent_new_attempt(3, $attempt),
00247                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11000)));
00248         $attempt->timestart = 7950;
00249         $attempt->timefinish = 8000;
00250         $this->assertFalse($rule->prevent_new_attempt(1, $attempt));
00251         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00252         $this->assertFalse($rule->prevent_new_attempt(3, $attempt));
00253         $attempt->timestart = 7950;
00254         $attempt->timefinish = 8001;
00255         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00256                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00257         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00258         $this->assertFalse($rule->prevent_new_attempt(4, $attempt));
00259         $attempt->timestart = 8950;
00260         $attempt->timefinish = 9000;
00261         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00262                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11000)));
00263         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00264         $this->assertFalse($rule->prevent_new_attempt(3, $attempt));
00265         $attempt->timestart = 8950;
00266         $attempt->timefinish = 9001;
00267         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00268                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11001)));
00269         $this->assertEqual($rule->prevent_new_attempt(2, $attempt),
00270                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00271         $this->assertEqual($rule->prevent_new_attempt(4, $attempt),
00272                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00273         $attempt->timestart = 8900;
00274         $attempt->timefinish = 9100;
00275         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00276                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11000)));
00277         $this->assertFalse($rule->prevent_new_attempt(2, $attempt));
00278         $this->assertFalse($rule->prevent_new_attempt(3, $attempt));
00279         $attempt->timestart = 8901;
00280         $attempt->timefinish = 9100;
00281         $this->assertEqual($rule->prevent_new_attempt(1, $attempt),
00282                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(11001)));
00283         $this->assertEqual($rule->prevent_new_attempt(2, $attempt),
00284                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00285         $this->assertEqual($rule->prevent_new_attempt(4, $attempt),
00286                 get_string('youmustwait', 'quizaccess_delaybetweenattempts', userdate(10001)));
00287     }
00288 }
 All Data Structures Namespaces Files Functions Variables Enumerations