ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
assClozeGapTest.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
12{
13 protected $backupGlobals = false;
14
15 protected function setUp()
16 {
17 if (defined('ILIAS_PHPUNIT_CONTEXT')) {
18 include_once("./Services/PHPUnit/classes/class.ilUnitUtil.php");
19 ilUnitUtil::performInitialisation();
20 } else {
21 chdir(dirname(__FILE__));
22 chdir('../../../');
23 }
24 require_once './Services/Utilities/classes/class.ilUtil.php';
25 require_once './Services/Randomization/classes/class.ilArrayElementShuffler.php';
26 $util_mock = $this->createMock('ilUtil', array('stripSlashes'), array(), '', false);
27 $util_mock->expects($this->any())->method('stripSlashes')->will($this->returnArgument(0));
28 global $ilUtils;
29 $ilUtils = $util_mock;
30 }
31
33 {
34 // Arrange
35 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
36
37 // Act
38 $instance = new assClozeGap(0); // 0 - text gap
39
40 $this->assertInstanceOf('assClozeGap', $instance);
41 }
42
44 {
45 // Arrange
46 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
47 $instance = new assClozeGap(0); // 0 - text gap
48 $expected = 1; // 1 - select gap
49
50 // Act
51 $instance->setType($expected);
52 $actual = $instance->getType();
53
54 // Assert
55 $this->assertEquals($expected, $actual);
56 }
57
59 {
60 // Arrange
61 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
62 $instance = new assClozeGap(0); // 0 - text gap
63 $expected = 0; // 0 - text gap
64
65 // Act
66 $instance->setType();
67 $actual = $instance->getType();
68
69 // Assert
70 $this->assertEquals($expected, $actual);
71 }
72
74 {
75 // Arrange
76 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
77 $instance = new assClozeGap(0); // 0 - text gap
78 $expected = true;
79
80 // Act
81 $instance->setShuffle($expected);
82 $actual = $instance->getShuffle();
83
84 // Assert
85 $this->assertEquals($expected, $actual);
86 }
87
89 {
90 // Arrange
91 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
92
93 $instance = new assClozeGap(0); // 0 - text gap
94
95 // Act
96 $the_unexpected = array('Killing', 'Kunkel', 'Luetzenkirchen',
97 'Meyer', 'Jansen', 'Heyser', 'Becker');
98 $instance->items = $the_unexpected;
99 $instance->setShuffle(true);
100
101 $actual = $instance->getItems(new ilArrayElementShuffler);
102
103 // Assert
104 $this->assertNotEquals($the_unexpected, $actual);
105 }
106
108 {
109 // Arrange
110 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
111 $instance = new assClozeGap(0); // 0 - text gap
112 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
113 $expected = new assAnswerCloze('Esther', 1.0, 0);
114
115 // Act
116 $instance->addItem($expected);
117 $actual = $instance->getItem(0);
118
119 // Assert
120 $this->assertEquals($expected, $actual);
121 }
122
124 {
125 // Arrange
126 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
127 $instance = new assClozeGap(0); // 0 - text gap
128 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
129 $answer = new assAnswerCloze('Bert', 1.0, 0);
130 $expected = new assAnswerCloze('Esther', 1.0, 0);
131
132 // Act
133 $instance->addItem($answer);
134 $instance->addItem($expected);
135 $actual = $instance->getItem(0);
136
137 // Assert
138 $this->assertEquals($expected, $actual);
139 }
140
142 {
143 // Arrange
144 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
145 $instance = new assClozeGap(0); // 0 - text gap
146 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
147 $answer1 = new assAnswerCloze('Bert', 1.0, 0);
148 $answer2 = new assAnswerCloze('Esther', 1.0, 1);
149
150 $instance->addItem($answer1);
151 $instance->addItem($answer2);
152
153 $expected = null;
154
155 // Act
156 $actual = $instance->getItem(2);
157
158 // Assert
159 $this->assertEquals($expected, $actual);
160 }
161
163 {
164 // Arrange
165 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
166 $instance = new assClozeGap(0); // 0 - text gap
167
168 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
169 $answer = new assAnswerCloze('Bert', 1.0, 1);
170 $answer2 = new assAnswerCloze('Fred', 1.0, 2);
171 $answer3 = new assAnswerCloze('Karl', 1.0, 3);
172 $expected = new assAnswerCloze('Esther', 1.0, 0);
173
174 // Act
175 $instance->addItem($answer);
176 $instance->addItem($answer2);
177 $instance->addItem($answer3);
178 $instance->addItem($expected);
179 $actual = $instance->getItem(0);
180
181 // Assert
182 $this->assertEquals($expected, $actual);
183 }
184
186 {
187 // Arrange
188 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
189 $instance = new assClozeGap(0); // 0 - text gap
190 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
191 $item1 = new assAnswerCloze('Bert', 1.0, 0);
192 $item2 = new assAnswerCloze('Fred', 1.0, 1);
193 $item3 = new assAnswerCloze('Karl', 1.0, 2);
194 $item4 = new assAnswerCloze('Esther', 1.0, 3);
195 $instance->setShuffle(false);
196 $expected = array($item1, $item2, $item3, $item4);
197 // Act
198 $instance->addItem($item1);
199 $instance->addItem($item2);
200 $instance->addItem($item3);
201 $instance->addItem($item4);
202 $actual = $instance->getItems(new ilArrayElementShuffler);
203
204 // Assert
205 $this->assertEquals($expected, $actual);
206 }
207
209 {
210 // Arrange
211 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
212 $instance = new assClozeGap(0); // 0 - text gap
213 $instance->setShuffle(true);
214 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
215 $item1 = new assAnswerCloze('Bert', 1.0, 0);
216 $item2 = new assAnswerCloze('Fred', 1.0, 1);
217 $item3 = new assAnswerCloze('Karl', 1.0, 2);
218 $item4 = new assAnswerCloze('Esther', 1.0, 3);
219 $item5 = new assAnswerCloze('Herbert', 1.0, 4);
220 $item6 = new assAnswerCloze('Karina', 1.0, 5);
221 $item7 = new assAnswerCloze('Helmut', 1.0, 6);
222 $item8 = new assAnswerCloze('Kerstin', 1.0, 7);
223 $expected = array($item1, $item2, $item3, $item4, $item5, $item6, $item7, $item8);
224
225 // Act
226 $instance->addItem($item1);
227 $instance->addItem($item2);
228 $instance->addItem($item3);
229 $instance->addItem($item4);
230 $instance->addItem($item5);
231 $instance->addItem($item6);
232 $instance->addItem($item7);
233 $instance->addItem($item8);
234 $actual = $instance->getItems(new ilArrayElementShuffler);
235
236 // Assert
237 $this->assertTrue(is_array($actual));
238 $this->assertTrue(in_array($item1, $actual));
239 $this->assertTrue(in_array($item2, $actual));
240 $this->assertTrue(in_array($item3, $actual));
241 $this->assertTrue(in_array($item4, $actual));
242 $this->assertTrue(in_array($item5, $actual));
243 $this->assertTrue(in_array($item6, $actual));
244 $this->assertTrue(in_array($item7, $actual));
245 $this->assertTrue(in_array($item8, $actual));
246 $this->assertNotEquals($expected, $actual);
247 }
248
250 {
251 // Arrange
252 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
253 $instance = new assClozeGap(0); // 0 - text gap
254 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
255 $item1 = new assAnswerCloze('Bert', 1.0, 0);
256 $item2 = new assAnswerCloze('Fred', 1.0, 1);
257 $item3 = new assAnswerCloze('Karl', 1.0, 2);
258 $item4 = new assAnswerCloze('Esther', 1.0, 3);
259 $expected = array($item1, $item2, $item3, $item4);
260
261 // Act
262 $instance->addItem($item1);
263 $instance->addItem($item2);
264 $instance->addItem($item3);
265 $instance->addItem($item4);
266 $actual = $instance->getItemsRaw();
267
268 // Assert
269 $this->assertEquals($expected, $actual);
270 }
271
273 {
274 // Arrange
275 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
276 $instance = new assClozeGap(0); // 0 - text gap
277 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
278 $item1 = new assAnswerCloze('Bert', 1.0, 0);
279 $item2 = new assAnswerCloze('Fred', 1.0, 2);
280 $item3 = new assAnswerCloze('Karl', 1.0, 1);
281 $item4 = new assAnswerCloze('Esther', 1.0, 3);
282 $expected = 4;
283
284 // Act
285 $instance->addItem($item1);
286 $instance->addItem($item2);
287 $instance->addItem($item3);
288 $instance->addItem($item4);
289 $actual = $instance->getItemCount();
290
291 // Assert
292 $this->assertEquals($expected, $actual);
293 }
294
295 public function test_setItemPoints_shouldSetItemPoints()
296 {
297 // Arrange
298 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
299 $instance = new assClozeGap(0); // 0 - text gap
300 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
301 $item1 = new assAnswerCloze('Esther', 1.0, 0);
302 $instance->addItem($item1);
303 $expected = 4;
304
305 // Act
306 $instance->setItemPoints(0, $expected);
308 $item_retrieved = $instance->getItem(0);
309 $actual = $item_retrieved->getPoints();
310
311 // Assert
312 $this->assertEquals($expected, $actual);
313 }
314
316 {
317 // Arrange
318 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
319 $instance = new assClozeGap(0); // 0 - text gap
320 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
321 $item1 = new assAnswerCloze('Bert', 1.0, 0);
322 $item2 = new assAnswerCloze('Fred', 1.0, 1);
323
324 $instance->addItem($item1);
325 $instance->addItem($item2);
326
327 $expected = array('1' => $item2);
328
329 // Act
330 $instance->deleteItem(0);
331
332 $actual = $instance->getItemsRaw();
333
334 // Assert
335 $this->assertEquals($expected, $actual);
336 }
337
339 {
340 // Arrange
341 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
342 $instance = new assClozeGap(0); // 0 - text gap
343 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
344 $item1 = new assAnswerCloze('Bert', 1.0, 0);
345 $item2 = new assAnswerCloze('Fred', 1.0, 2);
346 $item3 = new assAnswerCloze('Karl', 1.0, 1);
347 $item4 = new assAnswerCloze('Esther', 1.0, 3);
348
349 $instance->addItem($item1);
350 $instance->addItem($item2);
351 $instance->addItem($item3);
352 $instance->addItem($item4);
353
354 $expected = 0;
355
356 // Act
357 $instance->clearItems();
358 $actual = $instance->getItemCount();
359
360 // Assert
361 $this->assertEquals($expected, $actual);
362 }
363
365 {
366 // Arrange
367 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
368 $instance = new assClozeGap(0); // 0 - text gap
369 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
370 $item1 = new assAnswerCloze(20, 1.0, 0);
371
372 $instance->addItem($item1);
373
374 $expected = 10;
375
376 // Act
377 $instance->setItemLowerBound(0, $expected);
378 $item_retrieved = $instance->getItem(0);
379 $actual = $item_retrieved->getLowerBound();
380
381 // Assert
382 $this->assertEquals($expected, $actual);
383 }
384
386 {
387 // Arrange
388 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
389 $instance = new assClozeGap(0); // 0 - text gap
390 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
391 $item1 = new assAnswerCloze(20, 1.0, 0);
392
393 $instance->addItem($item1);
394
395 $expected = 40;
396
397 // Act
398 $instance->setItemLowerBound(0, $expected);
399 $item_retrieved = $instance->getItem(0);
400 $actual = $item_retrieved->getLowerBound();
401
402 // Assert
403 $this->assertNotEquals($expected, $actual);
404 $this->assertEquals($item_retrieved->getAnswerText(), $actual);
405 }
406
408 {
409 // Arrange
410 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
411 $instance = new assClozeGap(0); // 0 - text gap
412 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
413 $item1 = new assAnswerCloze(5, 1.0, 0);
414
415 $instance->addItem($item1);
416
417 $expected = 10;
418
419 // Act
420 $instance->setItemUpperBound(0, $expected);
421 $item_retrieved = $instance->getItem(0);
422 $actual = $item_retrieved->getUpperBound();
423
424 // Assert
425 $this->assertEquals($expected, $actual);
426 }
427
429 {
430 // Arrange
431 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
432 $instance = new assClozeGap(0); // 0 - text gap
433 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
434 $item1 = new assAnswerCloze(20, 1.0, 0);
435
436 $instance->addItem($item1);
437
438 $expected = 10;
439
440 // Act
441 $instance->setItemUpperBound(0, $expected);
442 $item_retrieved = $instance->getItem(0);
443 $actual = $item_retrieved->getUpperBound();
444
445 // Assert
446 $this->assertNotEquals($expected, $actual);
447 $this->assertEquals($item_retrieved->getAnswerText(), $actual);
448 }
449
451 {
452 // Arrange
453 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
454 $instance = new assClozeGap(0); // 0 - text gap
455 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
456 $item1 = new assAnswerCloze('Bert', 1.0, 0);
457 $item2 = new assAnswerCloze('Fred', 1.0, 2);
458 $item3 = new assAnswerCloze('Karl', 1.0, 1);
459 $item4 = new assAnswerCloze('Esther', 1.0, 3);
460
461 $instance->addItem($item1);
462 $instance->addItem($item2);
463 $instance->addItem($item3);
464 $instance->addItem($item4);
465
466 $expected = strlen($item4->getAnswertext());
467
468 // Act
469 $actual = $instance->getMaxWidth();
470
471 // Assert
472 $this->assertEquals($expected, $actual);
473 }
474
476 {
477 // Arrange
478 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
479 $instance = new assClozeGap(0); // 0 - text gap
480 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
481 $item1 = new assAnswerCloze('Bert', 1.0, 0);
482 $item2 = new assAnswerCloze('Fred', 2.0, 2);
483 $item3 = new assAnswerCloze('Karl', 3.0, 1);
484 $item4 = new assAnswerCloze('Esther', 4.0, 3);
485
486 $instance->addItem($item1);
487 $instance->addItem($item2);
488 $instance->addItem($item3);
489 $instance->addItem($item4);
490
491 $expected = array( 0 => 3 );
492
493 // Act
494 $actual = $instance->getBestSolutionIndexes();
495
496 // Assert
497 $this->assertEquals($expected, $actual);
498 }
499
501 {
502 // Arrange
503 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
504 $instance = new assClozeGap(0); // 0 - text gap
505 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
506 $item1 = new assAnswerCloze('Bert', 1.0, 0);
507 $item2 = new assAnswerCloze('Fred', 2.0, 2);
508 $item3 = new assAnswerCloze('Karl', 3.0, 1);
509 $item4 = new assAnswerCloze('Esther', 4.0, 3);
510
511 // We need the $lng-mock.
512 require_once './Services/Language/classes/class.ilLanguage.php';
513 $lng_mock = $this->createMock('ilLanguage', array('txt'), array(), '', false);
514 $lng_mock->expects($this->any())->method('txt')->will($this->returnValue('Test'));
515 global $lng;
516 $lng = $lng_mock;
517
518 $instance->addItem($item1);
519 $instance->addItem($item2);
520 $instance->addItem($item3);
521 $instance->addItem($item4);
522
523 $expected = 'Esther';
524
525 // Act
526 $actual = $instance->getBestSolutionOutput(new ilArrayElementShuffler);
527
528 // Assert
529 $this->assertEquals($expected, $actual);
530 }
531
533 {
534 // Arrange
535 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
536 $instance = new assClozeGap(0); // 0 - text gap
537 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
538 $item1 = new assAnswerCloze('Bert', 1.0, 0);
539 $item2 = new assAnswerCloze('Fred', 2.0, 2);
540 $item3 = new assAnswerCloze('Karl', 4, 1);
541 $item4 = new assAnswerCloze('Esther', 4, 3);
542
543 // We need the $lng-mock.
544 require_once './Services/Language/classes/class.ilLanguage.php';
545 $lng_mock = $this->createMock('ilLanguage', array('txt'), array(), '', false);
546 $lng_mock->expects($this->any())->method('txt')->will($this->returnValue('or'));
547 global $lng;
548 $lng = $lng_mock;
549
550 $instance->setShuffle(true);
551 $instance->addItem($item1);
552 $instance->addItem($item2);
553 $instance->addItem($item3);
554 $instance->addItem($item4);
555
556 $expected1 = 'Karl or Esther';
557 $expected2 = 'Esther or Karl';
558
559 // Act
560 $actual = $instance->getBestSolutionOutput(new ilArrayElementShuffler);
561
562 // Assert
563 $this->assertTrue(($actual == $expected1) || ($actual == $expected2));
564 }
565
567 {
568 // Arrange
569 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
570 $instance = new assClozeGap(2); // 0 - text gap
571 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
572 $item1 = new assAnswerCloze(10, 1.0, 0);
573 $item2 = new assAnswerCloze(20, 2.0, 2);
574 $item3 = new assAnswerCloze(30, 3.0, 1);
575 $item4 = new assAnswerCloze(100, 4.0, 3);
576
577 // We need the $lng-mock.
578 require_once './Services/Language/classes/class.ilLanguage.php';
579 $lng_mock = $this->createMock('ilLanguage', array('txt'), array(), '', false);
580 $lng_mock->expects($this->any())->method('txt')->will($this->returnValue('Test'));
581 global $lng;
582 $lng = $lng_mock;
583
584 $instance->addItem($item1);
585 $instance->addItem($item2);
586 $instance->addItem($item3);
587 $instance->addItem($item4);
588
589 $expected = 100;
590
591 // Act
592 $actual = $instance->getBestSolutionOutput(new ilArrayElementShuffler);
593
594 // Assert
595 $this->assertEquals($expected, $actual);
596 }
597
599 {
600 // Arrange
601 require_once './Modules/TestQuestionPool/classes/class.assClozeGap.php';
602 $instance = new assClozeGap(11); // 0 - text gap
603 require_once './Modules/TestQuestionPool/classes/class.assAnswerCloze.php';
604 $item1 = new assAnswerCloze(10, 1.0, 0);
605 $item2 = new assAnswerCloze(20, 2.0, 2);
606 $item3 = new assAnswerCloze(30, 3.0, 1);
607 $item4 = new assAnswerCloze(100, 4.0, 3);
608
609 // We need the $lng-mock.
610 require_once './Services/Language/classes/class.ilLanguage.php';
611 $lng_mock = $this->createMock('ilLanguage', array('txt'), array(), '', false);
612 $lng_mock->expects($this->any())->method('txt')->will($this->returnValue('Test'));
613 global $lng;
614 $lng = $lng_mock;
615
616 $instance->addItem($item1);
617 $instance->addItem($item2);
618 $instance->addItem($item3);
619 $instance->addItem($item4);
620
621 $expected = '';
622
623 // Act
624 $actual = $instance->getBestSolutionOutput(new ilArrayElementShuffler);
625
626 // Assert
627 $this->assertEquals($expected, $actual);
628 }
629}
An exception for terminatinating execution or to throw for unit testing.
Class for cloze question numeric answers.
test_setItemLowerBound_shouldSetItemsAnswerIfBoundTooHigh()
test_addGetItem_shouldReturnValueUnchangedMultiplePlus()
test_addGetItem_shouldReturnValueUnchangedMultiple()
test_getBestSolutionOutput_shouldReturnBestSolutionOutput_CaseTextMulti()
test_setGetType_shouldReturnUnchangedValue()
test_arrayShuffle_shouldNotReturnArrayUnshuffled()
test_setItemUpperBound_shouldSetItemsAnswerIfBoundTooLow()
test_getItem_shouldReturnNullIfNoItemAtGivenIndex()
test_deleteItem_shouldDeleteGivenItem()
test_setType_shouldSetDefaultIfNotPassed()
test_getBestSolutionOutput_shouldReturnBestSolutionOutput_CaseText()
test_getBestSolutionIndexes_shouldReturnBestSolutionIndexes()
test_setGetShuffle_shouldReturnUnchangedValue()
test_instantiateObject_shouldReturnInstance()
test_getItems_shouldReturnItemsAdded()
test_setItemLowerBound_shouldSetItemsLowerBound()
test_getItemsWithShuffle_shouldReturnItemsAddedShuffled()
test_getItemCount_shouldReturnCorrectCount()
test_getBestSolutionOutput_shouldReturnBestSolutionOutput_CaseNumeric()
test_getBestSolutionOutput_shouldReturnEmptyStringOnUnknownType_WhichMakesNoSenseButK()
test_getItemsRaw_shouldReturnItemsAdded()
test_addGetItem_shouldReturnValueUnchanged()
test_setItemUpperBound_shouldSetItemsUpperBound()
test_getMaxWidth_shouldReturnCharacterCountOfLongestAnswertext()
Class for cloze question gaps.
defined( 'APPLICATION_ENV')||define( 'APPLICATION_ENV'
Definition: bootstrap.php:27
global $lng
Definition: privfeed.php:17