ILIAS  trunk Revision v11.0_alpha-2638-g80c1d007f79
ilTestEvaluationUserDataTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
26 {
28 
29  protected function setUp(): void
30  {
31  parent::setUp();
32 
33  $this->testObj = new ilTestEvaluationUserData(0);
34  }
35 
37  {
38  $this->assertInstanceOf(ilTestEvaluationUserData::class, $this->testObj);
39  }
40 
41  public function test__sleep(): void
42  {
43  $expected = [
44  'questions',
45  'passes',
46  'passed',
47  'lastVisit',
48  'firstVisit',
49  'timeOfWork',
50  'numberOfQuestions',
51  'questionsWorkedThrough',
52  'mark_official',
53  'mark',
54  'maxpoints',
55  'reached',
56  'user_id',
57  'login',
58  'name',
59  'passScoring'
60  ];
61 
62  $this->assertEquals($expected, $this->testObj->__sleep());
63  }
64 
65  public function testPassScoring(): void
66  {
67  $passScoring = 1;
68  $this->testObj->setPassScoring($passScoring);
69  $this->assertEquals($passScoring, $this->testObj->getPassScoring());
70  }
71 
72  public function testName(): void
73  {
74  $name = 'testName';
75  $this->testObj->setName($name);
76  $this->assertEquals($name, $this->testObj->getName());
77  }
78 
79  public function testLogin(): void
80  {
81  $login = 'testLogin';
82  $this->testObj->setLogin($login);
83  $this->assertEquals($login, $this->testObj->getLogin());
84  }
85 
86  public function testSubmitted(): void
87  {
88  $this->testObj->setSubmitted(true);
89  $this->assertTrue($this->testObj->isSubmitted());
90 
91  $this->testObj->setSubmitted(false);
92  $this->assertFalse($this->testObj->isSubmitted());
93  }
94 
95  public function testGetReached(): void
96  {
97  $reachedPoints = 20;
98  $testEvaluationPassData = new ilTestEvaluationPassData();
99  $testEvaluationPassData->setReachedPoints($reachedPoints);
100 
101  $this->testObj->addPass(0, $testEvaluationPassData);
102 
103  $this->assertEquals($reachedPoints, $this->testObj->getReached());
104  }
105 
106  public function testGetMaxpoints(): void
107  {
108  $maxpoints = 20;
109  $testEvaluationPassData = new ilTestEvaluationPassData();
110  $testEvaluationPassData->setMaxPoints($maxpoints);
111 
112  $this->testObj->addPass(0, $testEvaluationPassData);
113 
114  $this->assertEquals($maxpoints, $this->testObj->getMaxpoints());
115  }
116 
117  public function testGetReachedPointsInPercent(): void
118  {
119  $reachedpoints = 15;
120  $maxpoints = 20;
121  $testEvaluationPassData = new ilTestEvaluationPassData();
122  $testEvaluationPassData->setReachedPoints($reachedpoints);
123  $testEvaluationPassData->setMaxPoints($maxpoints);
124 
125  $this->testObj->addPass(0, $testEvaluationPassData);
126 
127  $this->assertEquals(($reachedpoints / $maxpoints) * 100, $this->testObj->getReachedPointsInPercent());
128  }
129 
130  public function testMark(): void
131  {
132  $a_mark = new \ILIAS\Test\Scoring\Marks\Mark('testMark');
133  $this->testObj->setMark($a_mark);
134  $this->assertEquals($a_mark, $this->testObj->getMark());
135  }
136 
137  public function testGetQuestionsWorkedThrough(): void
138  {
139  $reachedpoints = 15;
140  $maxpoints = 20;
141  $nrOfAnsweredQuestions = 5;
142  $testEvaluationPassData = new ilTestEvaluationPassData();
143  $testEvaluationPassData->setReachedPoints($reachedpoints);
144  $testEvaluationPassData->setMaxPoints($maxpoints);
145  $testEvaluationPassData->setNrOfAnsweredQuestions($nrOfAnsweredQuestions);
146 
147  $this->testObj->addPass(0, $testEvaluationPassData);
148 
149  $this->assertEquals($nrOfAnsweredQuestions, $this->testObj->getQuestionsWorkedThrough());
150  }
151 
152  public function testGetNumberOfQuestions(): void
153  {
154  $questioncount = 5;
155  $testEvaluationPassData = new ilTestEvaluationPassData();
156  $testEvaluationPassData->setQuestionCount($questioncount);
157 
158  $this->testObj->addPass(0, $testEvaluationPassData);
159 
160  $this->assertEquals($questioncount, $this->testObj->getNumberOfQuestions());
161  }
162 
164  {
165  $questioncount = 5;
166  $nrOfAnsweredQuestions = 3;
167  $testEvaluationPassData = new ilTestEvaluationPassData();
168  $testEvaluationPassData->setQuestionCount($questioncount);
169  $testEvaluationPassData->setNrOfAnsweredQuestions($nrOfAnsweredQuestions);
170 
171  $this->testObj->addPass(0, $testEvaluationPassData);
172 
173  $this->assertEquals(($nrOfAnsweredQuestions / $questioncount) * 100, $this->testObj->getQuestionsWorkedThroughInPercent());
174  }
175 
176  public function testGetTimeOnTask(): void
177  {
178  $workingtime1 = 5;
179  $data1 = new ilTestEvaluationPassData();
180  $data1->setWorkingTime($workingtime1);
181 
182  $workingtime2 = 7;
183  $data2 = new ilTestEvaluationPassData();
184  $data2->setWorkingTime($workingtime2);
185 
186  $this->testObj->addPass(0, $data1);
187  $this->testObj->addPass(1, $data2);
188 
189  $this->assertEquals($workingtime1 + $workingtime2, $this->testObj->getTimeOnTask());
190  }
191 
192  public function testFirstVisit(): void
193  {
194  $time = new \DateTimeImmutable();
195  $this->testObj->setFirstVisit($time);
196 
197  $this->assertEquals($time, $this->testObj->getFirstVisit());
198  }
199 
200  public function testLastVisit(): void
201  {
202  $time = new \DateTimeImmutable();
203  $this->testObj->setLastVisit($time);
204 
205  $this->assertEquals($time, $this->testObj->getLastVisit());
206  }
207 
208  public function testGetPasses(): void
209  {
210  $workingtime1 = 5;
211  $data1 = new ilTestEvaluationPassData();
212  $data1->setWorkingTime($workingtime1);
213 
214  $workingtime2 = 7;
215  $data2 = new ilTestEvaluationPassData();
216  $data2->setWorkingTime($workingtime2);
217 
218  $this->testObj->addPass(0, $data1);
219  $this->testObj->addPass(1, $data2);
220 
221  $this->assertEquals([$data1, $data2], $this->testObj->getPasses());
222  }
223 
224  public function testAddPasses(): void
225  {
226  $this->assertEquals(0, $this->testObj->getPassCount());
227 
228  $data = [
229  0,
230  0,
231  1,
232  1
233  ];
234 
235  foreach ($data as $value) {
236  $this->testObj->addPass($value, new ilTestEvaluationPassData());
237  }
238 
239  $this->assertEquals(count(array_unique($data)), $this->testObj->getPassCount());
240  }
241 
242  public function testGetPass(): void
243  {
244  $this->assertEquals(0, $this->testObj->getPassCount());
245 
246  $data = [
247  0 => $expected = new ilTestEvaluationPassData(),
248  1 => new ilTestEvaluationPassData(),
249  2 => new ilTestEvaluationPassData()
250  ];
251 
252  foreach ($data as $key => $value) {
253  $this->testObj->addPass($key, $value);
254  }
255 
256  $this->assertEquals($expected, $this->testObj->getPass(0));
257  }
258 
259  public function testGetPassCount(): void
260  {
261  $this->assertEquals(0, $this->testObj->getPassCount());
262 
263  $data = [
264  0,
265  0,
266  1,
267  1
268  ];
269 
270  foreach ($data as $value) {
271  $this->testObj->addPass($value, new ilTestEvaluationPassData());
272  }
273 
274  $this->assertEquals(count(array_unique($data)), $this->testObj->getPassCount());
275  }
276 
277  public function testAddQuestionTitle(): void
278  {
279  $question_title = 'testString';
280  $question_id = 0;
281  $this->testObj->addQuestionTitle($question_id, $question_title);
282 
283  $this->assertEquals($question_title, $this->testObj->getQuestionTitles()[$question_id]);
284  }
285 
286  public function testGetQuestions(): void
287  {
288  $this->assertNull($this->testObj->getQuestions());
289 
290  $expected = [
291  'id' => $question_id = 22,
292  'o_id' => $original_id = 20,
293  'points' => $max_points = 15,
294  'sequence' => $sequence = null
295  ];
296 
297  $this->testObj->addQuestion($original_id, $question_id, $max_points, $sequence, 0);
298 
299  $this->assertEquals([$expected], $this->testObj->getQuestions());
300  }
301 
302  public function testGetQuestion(): void
303  {
304  $expected = [
305  'id' => $question_id = 22,
306  'o_id' => $original_id = 20,
307  'points' => $max_points = 15.0,
308  'sequence' => $sequence = null
309  ];
310 
311  $pass = 0;
312 
313  $this->testObj->addQuestion($original_id, $question_id, $max_points, $sequence, $pass);
314 
315  $this->assertEquals($expected, $this->testObj->getQuestion($pass));
316  }
317 
318  public function testGetQuestionCount(): void
319  {
320  $questioncount = 5;
321  $pass = new ilTestEvaluationPassData();
322  $pass->setQuestionCount($questioncount);
323  $this->testObj->addPass(0, $pass);
324 
325  $this->assertEquals($questioncount, $this->testObj->getQuestionCount());
326  }
327 
328  public function testReachedPoints(): void
329  {
330  $reachedpoints = 25;
331  $pass = new ilTestEvaluationPassData();
332  $pass->setReachedPoints($reachedpoints);
333  $this->testObj->addPass(0, $pass);
334 
335  $this->assertEquals($reachedpoints, $this->testObj->getReachedPoints());
336  }
337 
338  public function testGetAvailablePoints(): void
339  {
340  $maxpoints = 25;
341  $pass = new ilTestEvaluationPassData();
342  $pass->setMaxPoints($maxpoints);
343  $this->testObj->addPass(0, $pass);
344 
345  $this->assertEquals($maxpoints, $this->testObj->getAvailablePoints());
346  }
347 
348  public function testGetReachedPointsInPercentForPass(): void
349  {
350  $reachedpoints = 25;
351  $maxpoints = 50;
352  $pass = new ilTestEvaluationPassData();
353  $pass->setReachedPoints($reachedpoints);
354  $pass->setMaxPoints($maxpoints);
355  $pass_nr = 0;
356  $this->testObj->addPass($pass_nr, $pass);
357 
358  $this->assertEquals($reachedpoints / $maxpoints, $this->testObj->getReachedPointsInPercentForPass($pass_nr));
359  }
360 
361  public function testUserID(): void
362  {
363  $user_id = 120;
364  $this->testObj->setUserID($user_id);
365  $this->assertEquals($user_id, $this->testObj->getUserID());
366  }
367 }
Class ilTestEvaluationUserDataTest.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null