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 }
Class for cloze question numeric answers.
test_addGetItem_shouldReturnValueUnchanged()
test_getItemsWithShuffle_shouldReturnItemsAddedShuffled()
test_getMaxWidth_shouldReturnCharacterCountOfLongestAnswertext()
test_getBestSolutionOutput_shouldReturnBestSolutionOutput_CaseNumeric()
test_getBestSolutionOutput_shouldReturnBestSolutionOutput_CaseTextMulti()
test_instantiateObject_shouldReturnInstance()
test_setType_shouldSetDefaultIfNotPassed()
Class for cloze question gaps.
test_getItemsRaw_shouldReturnItemsAdded()
test_addGetItem_shouldReturnValueUnchangedMultiplePlus()
test_setItemUpperBound_shouldSetItemsAnswerIfBoundTooLow()
test_deleteItem_shouldDeleteGivenItem()
test_setItemLowerBound_shouldSetItemsLowerBound()
test_getItemCount_shouldReturnCorrectCount()
test_getBestSolutionIndexes_shouldReturnBestSolutionIndexes()
test_setItemUpperBound_shouldSetItemsUpperBound()
Create styles array
The data for the language used.
test_arrayShuffle_shouldNotReturnArrayUnshuffled()
test_getBestSolutionOutput_shouldReturnBestSolutionOutput_CaseText()
test_getItem_shouldReturnNullIfNoItemAtGivenIndex()
test_getItems_shouldReturnItemsAdded()
global $lng
Definition: privfeed.php:17
test_getBestSolutionOutput_shouldReturnEmptyStringOnUnknownType_WhichMakesNoSenseButK()
defined( 'APPLICATION_ENV')||define( 'APPLICATION_ENV'
Definition: bootstrap.php:27
test_addGetItem_shouldReturnValueUnchangedMultiple()
test_setItemLowerBound_shouldSetItemsAnswerIfBoundTooHigh()
test_setGetType_shouldReturnUnchangedValue()
test_setGetShuffle_shouldReturnUnchangedValue()