|
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(dirname(__FILE__) . '/../lib.php'); 00030 require_once($CFG->libdir . '/questionlib.php'); 00031 00032 00039 class question_state_test extends UnitTestCase { 00040 public function test_is_active() { 00041 $this->assertFalse(question_state::$notstarted->is_active()); 00042 $this->assertFalse(question_state::$unprocessed->is_active()); 00043 $this->assertTrue(question_state::$todo->is_active()); 00044 $this->assertTrue(question_state::$invalid->is_active()); 00045 $this->assertTrue(question_state::$complete->is_active()); 00046 $this->assertFalse(question_state::$needsgrading->is_active()); 00047 $this->assertFalse(question_state::$finished->is_active()); 00048 $this->assertFalse(question_state::$gaveup->is_active()); 00049 $this->assertFalse(question_state::$gradedwrong->is_active()); 00050 $this->assertFalse(question_state::$gradedpartial->is_active()); 00051 $this->assertFalse(question_state::$gradedright->is_active()); 00052 $this->assertFalse(question_state::$manfinished->is_active()); 00053 $this->assertFalse(question_state::$mangaveup->is_active()); 00054 $this->assertFalse(question_state::$mangrwrong->is_active()); 00055 $this->assertFalse(question_state::$mangrpartial->is_active()); 00056 $this->assertFalse(question_state::$mangrright->is_active()); 00057 } 00058 00059 public function test_is_finished() { 00060 $this->assertFalse(question_state::$notstarted->is_finished()); 00061 $this->assertFalse(question_state::$unprocessed->is_finished()); 00062 $this->assertFalse(question_state::$todo->is_finished()); 00063 $this->assertFalse(question_state::$invalid->is_finished()); 00064 $this->assertFalse(question_state::$complete->is_finished()); 00065 $this->assertTrue(question_state::$needsgrading->is_finished()); 00066 $this->assertTrue(question_state::$finished->is_finished()); 00067 $this->assertTrue(question_state::$gaveup->is_finished()); 00068 $this->assertTrue(question_state::$gradedwrong->is_finished()); 00069 $this->assertTrue(question_state::$gradedpartial->is_finished()); 00070 $this->assertTrue(question_state::$gradedright->is_finished()); 00071 $this->assertTrue(question_state::$manfinished->is_finished()); 00072 $this->assertTrue(question_state::$mangaveup->is_finished()); 00073 $this->assertTrue(question_state::$mangrwrong->is_finished()); 00074 $this->assertTrue(question_state::$mangrpartial->is_finished()); 00075 $this->assertTrue(question_state::$mangrright->is_finished()); 00076 } 00077 00078 public function test_is_graded() { 00079 $this->assertFalse(question_state::$notstarted->is_graded()); 00080 $this->assertFalse(question_state::$unprocessed->is_graded()); 00081 $this->assertFalse(question_state::$todo->is_graded()); 00082 $this->assertFalse(question_state::$invalid->is_graded()); 00083 $this->assertFalse(question_state::$complete->is_graded()); 00084 $this->assertFalse(question_state::$needsgrading->is_graded()); 00085 $this->assertFalse(question_state::$finished->is_graded()); 00086 $this->assertFalse(question_state::$gaveup->is_graded()); 00087 $this->assertTrue(question_state::$gradedwrong->is_graded()); 00088 $this->assertTrue(question_state::$gradedpartial->is_graded()); 00089 $this->assertTrue(question_state::$gradedright->is_graded()); 00090 $this->assertFalse(question_state::$manfinished->is_graded()); 00091 $this->assertFalse(question_state::$mangaveup->is_graded()); 00092 $this->assertTrue(question_state::$mangrwrong->is_graded()); 00093 $this->assertTrue(question_state::$mangrpartial->is_graded()); 00094 $this->assertTrue(question_state::$mangrright->is_graded()); 00095 } 00096 00097 public function test_is_commented() { 00098 $this->assertFalse(question_state::$notstarted->is_commented()); 00099 $this->assertFalse(question_state::$unprocessed->is_commented()); 00100 $this->assertFalse(question_state::$todo->is_commented()); 00101 $this->assertFalse(question_state::$invalid->is_commented()); 00102 $this->assertFalse(question_state::$complete->is_commented()); 00103 $this->assertFalse(question_state::$needsgrading->is_commented()); 00104 $this->assertFalse(question_state::$finished->is_commented()); 00105 $this->assertFalse(question_state::$gaveup->is_commented()); 00106 $this->assertFalse(question_state::$gradedwrong->is_commented()); 00107 $this->assertFalse(question_state::$gradedpartial->is_commented()); 00108 $this->assertFalse(question_state::$gradedright->is_commented()); 00109 $this->assertTrue(question_state::$manfinished->is_commented()); 00110 $this->assertTrue(question_state::$mangaveup->is_commented()); 00111 $this->assertTrue(question_state::$mangrwrong->is_commented()); 00112 $this->assertTrue(question_state::$mangrpartial->is_commented()); 00113 $this->assertTrue(question_state::$mangrright->is_commented()); 00114 } 00115 00116 public function test_graded_state_for_fraction() { 00117 $this->assertEqual(question_state::$gradedwrong, question_state::graded_state_for_fraction(-1)); 00118 $this->assertEqual(question_state::$gradedwrong, question_state::graded_state_for_fraction(0)); 00119 $this->assertEqual(question_state::$gradedpartial, question_state::graded_state_for_fraction(0.000001)); 00120 $this->assertEqual(question_state::$gradedpartial, question_state::graded_state_for_fraction(0.999999)); 00121 $this->assertEqual(question_state::$gradedright, question_state::graded_state_for_fraction(1)); 00122 } 00123 00124 public function test_manually_graded_state_for_other_state() { 00125 $this->assertEqual(question_state::$manfinished, 00126 question_state::$finished->corresponding_commented_state(null)); 00127 $this->assertEqual(question_state::$mangaveup, 00128 question_state::$gaveup->corresponding_commented_state(null)); 00129 $this->assertEqual(question_state::$manfinished, 00130 question_state::$manfinished->corresponding_commented_state(null)); 00131 $this->assertEqual(question_state::$mangaveup, 00132 question_state::$mangaveup->corresponding_commented_state(null)); 00133 $this->assertEqual(question_state::$needsgrading, 00134 question_state::$mangrright->corresponding_commented_state(null)); 00135 $this->assertEqual(question_state::$needsgrading, 00136 question_state::$mangrright->corresponding_commented_state(null)); 00137 00138 $this->assertEqual(question_state::$mangrwrong, 00139 question_state::$gaveup->corresponding_commented_state(0)); 00140 $this->assertEqual(question_state::$mangrwrong, 00141 question_state::$needsgrading->corresponding_commented_state(0)); 00142 $this->assertEqual(question_state::$mangrwrong, 00143 question_state::$gradedwrong->corresponding_commented_state(0)); 00144 $this->assertEqual(question_state::$mangrwrong, 00145 question_state::$gradedpartial->corresponding_commented_state(0)); 00146 $this->assertEqual(question_state::$mangrwrong, 00147 question_state::$gradedright->corresponding_commented_state(0)); 00148 $this->assertEqual(question_state::$mangrwrong, 00149 question_state::$mangrright->corresponding_commented_state(0)); 00150 $this->assertEqual(question_state::$mangrwrong, 00151 question_state::$mangrpartial->corresponding_commented_state(0)); 00152 $this->assertEqual(question_state::$mangrwrong, 00153 question_state::$mangrright->corresponding_commented_state(0)); 00154 00155 $this->assertEqual(question_state::$mangrpartial, 00156 question_state::$gradedpartial->corresponding_commented_state(0.5)); 00157 00158 $this->assertEqual(question_state::$mangrright, 00159 question_state::$gradedpartial->corresponding_commented_state(1)); 00160 } 00161 }