ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
assClozeGapTest.php
Go to the documentation of this file.
1<?php
2
20
29{
30 protected $backupGlobals = false;
31
32 protected function setUp(): void
33 {
34 chdir(__DIR__ . '/../../../../');
35
36 parent::setUp();
37
38 $util_mock = $this->createMock('ilUtil', ['stripSlashes'], [], '', false);
39 $util_mock->expects($this->any())->method('stripSlashes')->willReturnArgument(0);
40 $this->setGlobalVariable('ilUtils', $util_mock);
41 }
42
44 {
45 $instance = new assClozeGap(0); // 0 - text gap
46
47 $this->assertInstanceOf(assClozeGap::class, $instance);
48 }
49
51 {
52 $instance = new assClozeGap(0); // 0 - text gap
53 $expected = 1; // 1 - select gap
54
55 $instance->setType($expected);
56 $actual = $instance->getType();
57
58 $this->assertEquals($expected, $actual);
59 }
60
62 {
63 $instance = new assClozeGap(0); // 0 - text gap
64 $expected = 0; // 0 - text gap
65
66 $instance->setType();
67 $actual = $instance->getType();
68
69 $this->assertEquals($expected, $actual);
70 }
71
73 {
74 $instance = new assClozeGap(0); // 0 - text gap
75 $expected = true;
76
77 $instance->setShuffle($expected);
78 $actual = $instance->getShuffle();
79
80 $this->assertEquals($expected, $actual);
81 }
82
84 {
85 $instance = new assClozeGap(0); // 0 - text gap
86
87 $the_unexpected = ['Killing', 'Kunkel', 'Luetzenkirchen',
88 'Meyer', 'Jansen', 'Heyser', 'Becker'];
89 $instance->items = $the_unexpected;
90 $instance->setShuffle(true);
91 $theExpected = ['hua', 'haaa', 'some random values'];
92
93 $transformationMock = $this->getMockBuilder(Transformation::class)->getMock();
94 $transformationMock->expects(self::once())->method('transform')->with($the_unexpected)->willReturn($theExpected);
95 $actual = $instance->getItems($transformationMock);
96
97 $this->assertEquals($theExpected, $actual);
98 }
99
101 {
102 $instance = new assClozeGap(0); // 0 - text gap
103 $expected = new assAnswerCloze('Esther', 1.0, 0);
104
105 $instance->addItem($expected);
106 $actual = $instance->getItem(0);
107
108 $this->assertEquals($expected, $actual);
109 }
110
112 {
113 $instance = new assClozeGap(0); // 0 - text gap
114 $answer = new assAnswerCloze('Bert', 1.0, 0);
115 $expected = new assAnswerCloze('Esther', 1.0, 0);
116
117 $instance->addItem($answer);
118 $instance->addItem($expected);
119 $actual = $instance->getItem(0);
120
121 $this->assertEquals($expected, $actual);
122 }
123
125 {
126 $instance = new assClozeGap(0); // 0 - text gap
127 $answer1 = new assAnswerCloze('Bert', 1.0, 0);
128 $answer2 = new assAnswerCloze('Esther', 1.0, 1);
129
130 $instance->addItem($answer1);
131 $instance->addItem($answer2);
132
133 $expected = null;
134
135 $actual = $instance->getItem(2);
136
137 $this->assertEquals($expected, $actual);
138 }
139
141 {
142 $instance = new assClozeGap(0); // 0 - text gap
143 $answer = new assAnswerCloze('Bert', 1.0, 1);
144 $answer2 = new assAnswerCloze('Fred', 1.0, 2);
145 $answer3 = new assAnswerCloze('Karl', 1.0, 3);
146 $expected = new assAnswerCloze('Esther', 1.0, 0);
147
148 $instance->addItem($answer);
149 $instance->addItem($answer2);
150 $instance->addItem($answer3);
151 $instance->addItem($expected);
152 $actual = $instance->getItem(0);
153
154 $this->assertEquals($expected, $actual);
155 }
156
158 {
159 $instance = new assClozeGap(0); // 0 - text gap
160 $item1 = new assAnswerCloze('Bert', 1.0, 0);
161 $item2 = new assAnswerCloze('Fred', 1.0, 1);
162 $item3 = new assAnswerCloze('Karl', 1.0, 2);
163 $item4 = new assAnswerCloze('Esther', 1.0, 3);
164 $instance->setShuffle(false);
165 $expected = [$item1, $item2, $item3, $item4];
166 $instance->addItem($item1);
167 $instance->addItem($item2);
168 $instance->addItem($item3);
169 $instance->addItem($item4);
170 $transformationMock = $this->getMockBuilder(Transformation::class)->getMock();
171 $transformationMock->expects(self::never())->method('transform');
172 $actual = $instance->getItems($transformationMock);
173
174 $this->assertEquals($expected, $actual);
175 }
176
178 {
179 $instance = new assClozeGap(0); // 0 - text gap
180 $instance->setShuffle(true);
181 $expected = [
182 new assAnswerCloze('Bert', 1.0, 0),
183 new assAnswerCloze('Fred', 1.0, 1),
184 new assAnswerCloze('Karl', 1.0, 2),
185 new assAnswerCloze('Esther', 1.0, 3),
186 new assAnswerCloze('Herbert', 1.0, 4),
187 new assAnswerCloze('Karina', 1.0, 5),
188 new assAnswerCloze('Helmut', 1.0, 6),
189 new assAnswerCloze('Kerstin', 1.0, 7),
190 ];
191
192 $shuffledArray = ['some shuffled array', 'these values dont matter'];
193
194 foreach ($expected as $item) {
195 $instance->addItem($item);
196 }
197
198 $transformationMock = $this->getMockBuilder(Transformation::class)->getMock();
199 $transformationMock->expects(self::once())->method('transform')->with($expected)->willReturn($shuffledArray);
200 $actual = $instance->getItems($transformationMock);
201
202 $this->assertEquals($shuffledArray, $actual);
203 }
204
206 {
207 $instance = new assClozeGap(0); // 0 - text gap
208 $item1 = new assAnswerCloze('Bert', 1.0, 0);
209 $item2 = new assAnswerCloze('Fred', 1.0, 1);
210 $item3 = new assAnswerCloze('Karl', 1.0, 2);
211 $item4 = new assAnswerCloze('Esther', 1.0, 3);
212 $expected = [$item1, $item2, $item3, $item4];
213
214 $instance->addItem($item1);
215 $instance->addItem($item2);
216 $instance->addItem($item3);
217 $instance->addItem($item4);
218 $actual = $instance->getItemsRaw();
219
220 $this->assertEquals($expected, $actual);
221 }
222
224 {
225 $instance = new assClozeGap(0); // 0 - text gap
226 $item1 = new assAnswerCloze('Bert', 1.0, 0);
227 $item2 = new assAnswerCloze('Fred', 1.0, 2);
228 $item3 = new assAnswerCloze('Karl', 1.0, 1);
229 $item4 = new assAnswerCloze('Esther', 1.0, 3);
230 $expected = 4;
231
232 $instance->addItem($item1);
233 $instance->addItem($item2);
234 $instance->addItem($item3);
235 $instance->addItem($item4);
236 $actual = $instance->getItemCount();
237
238 $this->assertEquals($expected, $actual);
239 }
240
241 public function test_setItemPoints_shouldSetItemPoints(): void
242 {
243 $instance = new assClozeGap(0); // 0 - text gap
244 $item1 = new assAnswerCloze('Esther', 1.0, 0);
245 $instance->addItem($item1);
246 $expected = 4;
247
248 $instance->setItemPoints(0, $expected);
250 $item_retrieved = $instance->getItem(0);
251 $actual = $item_retrieved->getPoints();
252
253 $this->assertEquals($expected, $actual);
254 }
255
257 {
258 $instance = new assClozeGap(0); // 0 - text gap
259 $item1 = new assAnswerCloze('Bert', 1.0, 0);
260 $item2 = new assAnswerCloze('Fred', 1.0, 1);
261
262 $instance->addItem($item1);
263 $instance->addItem($item2);
264
265 $expected = ['1' => $item2];
266
267 $instance->deleteItem(0);
268
269 $actual = $instance->getItemsRaw();
270
271 $this->assertEquals($expected, $actual);
272 }
273
274 public function test_clearItems_shouldClearItems(): void
275 {
276 $instance = new assClozeGap(0); // 0 - text gap
277 $item1 = new assAnswerCloze('Bert', 1.0, 0);
278 $item2 = new assAnswerCloze('Fred', 1.0, 2);
279 $item3 = new assAnswerCloze('Karl', 1.0, 1);
280 $item4 = new assAnswerCloze('Esther', 1.0, 3);
281
282 $instance->addItem($item1);
283 $instance->addItem($item2);
284 $instance->addItem($item3);
285 $instance->addItem($item4);
286
287 $expected = 0;
288
289 $instance->clearItems();
290 $actual = $instance->getItemCount();
291
292 $this->assertEquals($expected, $actual);
293 }
294
296 {
297 $instance = new assClozeGap(0); // 0 - text gap
298 $item1 = new assAnswerCloze(20, 1.0, 0);
299
300 $instance->addItem($item1);
301
302 $expected = 10;
303
304 $instance->setItemLowerBound(0, $expected);
305 $item_retrieved = $instance->getItem(0);
306 $actual = $item_retrieved->getLowerBound();
307
308 $this->assertEquals($expected, $actual);
309 }
310
312 {
313 $instance = new assClozeGap(0); // 0 - text gap
314 $item1 = new assAnswerCloze(20, 1.0, 0);
315
316 $instance->addItem($item1);
317
318 $expected = 40;
319
320 $instance->setItemLowerBound(0, $expected);
321 $item_retrieved = $instance->getItem(0);
322 $actual = $item_retrieved->getLowerBound();
323
324 $this->assertNotEquals($expected, $actual);
325 $this->assertEquals($item_retrieved->getAnswerText(), $actual);
326 }
327
329 {
330 $instance = new assClozeGap(0); // 0 - text gap
331 $item1 = new assAnswerCloze(5, 1.0, 0);
332
333 $instance->addItem($item1);
334
335 $expected = 10;
336
337 $instance->setItemUpperBound(0, $expected);
338 $item_retrieved = $instance->getItem(0);
339 $actual = $item_retrieved->getUpperBound();
340
341 $this->assertEquals($expected, $actual);
342 }
343
345 {
346 $instance = new assClozeGap(0); // 0 - text gap
347 $item1 = new assAnswerCloze(20, 1.0, 0);
348
349 $instance->addItem($item1);
350
351 $expected = 10;
352
353 $instance->setItemUpperBound(0, $expected);
354 $item_retrieved = $instance->getItem(0);
355 $actual = $item_retrieved->getUpperBound();
356
357 $this->assertNotEquals($expected, $actual);
358 $this->assertEquals($item_retrieved->getAnswerText(), $actual);
359 }
360
362 {
363 $instance = new assClozeGap(0); // 0 - text gap
364 $item1 = new assAnswerCloze('Bert', 1.0, 0);
365 $item2 = new assAnswerCloze('Fred', 1.0, 2);
366 $item3 = new assAnswerCloze('Karl', 1.0, 1);
367 $item4 = new assAnswerCloze('Esther', 1.0, 3);
368
369 $instance->addItem($item1);
370 $instance->addItem($item2);
371 $instance->addItem($item3);
372 $instance->addItem($item4);
373
374 $expected = strlen($item4->getAnswertext());
375
376 $actual = $instance->getMaxWidth();
377
378 $this->assertEquals($expected, $actual);
379 }
380
382 {
383 $instance = new assClozeGap(0); // 0 - text gap
384 $item1 = new assAnswerCloze('Bert', 1.0, 0);
385 $item2 = new assAnswerCloze('Fred', 2.0, 2);
386 $item3 = new assAnswerCloze('Karl', 3.0, 1);
387 $item4 = new assAnswerCloze('Esther', 4.0, 3);
388
389 $instance->addItem($item1);
390 $instance->addItem($item2);
391 $instance->addItem($item3);
392 $instance->addItem($item4);
393
394 $expected = [ 0 => 3 ];
395
396 $actual = $instance->getBestSolutionIndexes();
397
398 $this->assertEquals($expected, $actual);
399 }
400
402 {
403 $instance = new assClozeGap(0); // 0 - text gap
404 $item1 = new assAnswerCloze('Bert', 1.0, 0);
405 $item2 = new assAnswerCloze('Fred', 2.0, 2);
406 $item3 = new assAnswerCloze('Karl', 3.0, 1);
407 $item4 = new assAnswerCloze('Esther', 4.0, 3);
408
409 $lng_mock = $this->createMock('ilLanguage', ['txt'], [], '', false);
410 $lng_mock->expects($this->any())->method('txt')->willReturn('Test');
411 global $DIC;
412 unset($DIC['lng']);
413 $DIC['lng'] = $lng_mock;
414 $GLOBALS['lng'] = $DIC['lng'];
415
416 $instance->addItem($item1);
417 $instance->addItem($item2);
418 $instance->addItem($item3);
419 $instance->addItem($item4);
420
421 $expected = 'Esther';
422
423 $actual = $instance->getBestSolutionOutput($this->getDummyTransformationMock());
424
425 $this->assertEquals($expected, $actual);
426 }
427
429 {
430 $instance = new assClozeGap(0); // 0 - text gap
431 $item1 = new assAnswerCloze('Bert', 1.0, 0);
432 $item2 = new assAnswerCloze('Fred', 2.0, 2);
433 $item3 = new assAnswerCloze('Karl', 4, 1);
434 $item4 = new assAnswerCloze('Esther', 4, 3);
435
436 $lng_mock = $this->createMock('ilLanguage', ['txt'], [], '', false);
437 $lng_mock->expects($this->any())->method('txt')->willReturn('or');
438 global $DIC;
439 unset($DIC['lng']);
440 $DIC['lng'] = $lng_mock;
441 $GLOBALS['lng'] = $DIC['lng'];
442
443 $instance->setShuffle(true);
444 $instance->addItem($item1);
445 $instance->addItem($item2);
446 $instance->addItem($item3);
447 $instance->addItem($item4);
448
449 $expected1 = 'Karl or Esther';
450 $expected2 = 'Esther or Karl';
451
452 $actual = $instance->getBestSolutionOutput($this->getDummyTransformationMock());
453
454 $this->assertTrue(($actual == $expected1) || ($actual == $expected2));
455 }
456
458 {
459 $instance = new assClozeGap(2); // 0 - text gap
460 $item1 = new assAnswerCloze(10, 1.0, 0);
461 $item2 = new assAnswerCloze(20, 2.0, 2);
462 $item3 = new assAnswerCloze(30, 3.0, 1);
463 $item4 = new assAnswerCloze(100, 4.0, 3);
464
465 $lng_mock = $this->createMock('ilLanguage', ['txt'], [], '', false);
466 $lng_mock->expects($this->any())->method('txt')->willReturn('Test');
467 global $DIC;
468 unset($DIC['lng']);
469 $DIC['lng'] = $lng_mock;
470 $GLOBALS['lng'] = $DIC['lng'];
471
472 $instance->addItem($item1);
473 $instance->addItem($item2);
474 $instance->addItem($item3);
475 $instance->addItem($item4);
476
477 $expected = 100;
478
479 $actual = $instance->getBestSolutionOutput($this->getDummyTransformationMock());
480
481 $this->assertEquals($expected, $actual);
482 }
483
485 {
486 $instance = new assClozeGap(11); // 0 - text gap
487 $item1 = new assAnswerCloze(10, 1.0, 0);
488 $item2 = new assAnswerCloze(20, 2.0, 2);
489 $item3 = new assAnswerCloze(30, 3.0, 1);
490 $item4 = new assAnswerCloze(100, 4.0, 3);
491
492 $lng_mock = $this->createMock('ilLanguage', ['txt'], [], '', false);
493 $lng_mock->expects($this->any())->method('txt')->willReturn('Test');
494 global $DIC;
495 unset($DIC['lng']);
496 $DIC['lng'] = $lng_mock;
497 $GLOBALS['lng'] = $DIC['lng'];
498
499 $instance->addItem($item1);
500 $instance->addItem($item2);
501 $instance->addItem($item3);
502 $instance->addItem($item4);
503
504 $expected = '';
505
506 $actual = $instance->getBestSolutionOutput($this->getDummyTransformationMock());
507
508 $this->assertEquals($expected, $actual);
509 }
510
512 {
513 $transformationMock = $this->getMockBuilder(Transformation::class)->getMock();
514 $transformationMock->expects(self::any())->method('transform')->willReturnCallback(static function (array $array) {
515 return $array;
516 });
517
518 return $transformationMock;
519 }
520}
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class assBaseTestCase.
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.
setGlobalVariable(string $name, mixed $value)
A transformation is a function from one datatype to another.
global $DIC
Definition: shib_login.php:26
$GLOBALS["DIC"]
Definition: wac.php:54