ILIAS  release_8 Revision v8.24
assFormulaQuestionTest.php
Go to the documentation of this file.
1<?php
2
19require_once 'libs/composer/vendor/autoload.php';
20
29{
30 protected $backupGlobals = false;
31 protected $backup_dic;
32
33 protected function setUp(): void
34 {
35 parent::setUp();
36 $lng = $this->getMockBuilder(\ilLanguage::class)
37 ->disableOriginalConstructor()
38 ->getMock();
39 $lng->method('txt')
40 ->will($this->returnArgument(0));
41
42 $this->setGlobalVariable('lng', $lng);
43 }
44
45 protected function tearDown(): void
46 {
47 global $DIC;
49 }
50
62 array $variables,
63 array $results,
64 $userResult,
65 $userResultUnit,
66 $expectedResult
67 ): void {
68 $isCorrect = $result->isCorrect($variables, $results, $userResult, $userResultUnit);
69 $this->assertEquals($expectedResult, $isCorrect);
70 }
71
75 public function simpleRatedCalculationsData(): array
76 {
77 global $DIC;
78
79 $this->backup_dic = $DIC;
81 'tpl' => $this->getMockBuilder(ilGlobalTemplateInterface::class)
82 ->getMock()
83 ]);
84 $points = 5;
85 $precision = 2;
86
87 $meter = new assFormulaQuestionUnit();
88 $meter->initFormArray([
89 'unit_id' => 1,
90 'category' => 1,
91 'sequence' => 1,
92 'unit' => 'Meter',
93 'factor' => 1,
94 'baseunit_fi' => -1,
95 'baseunit_title' => ''
96 ]);
97
98 $centimeter = new assFormulaQuestionUnit();
99 $centimeter->initFormArray([
100 'unit_id' => 2,
101 'category' => 1,
102 'sequence' => 2,
103 'unit' => 'Centimeter',
104 'factor' => 0.01,
105 'baseunit_fi' => 1,
106 'baseunit_title' => 'Meter'
107 ]);
108
109 $newtonmetre = new assFormulaQuestionUnit();
110 $newtonmetre->initFormArray([
111 'unit_id' => 3,
112 'category' => 1,
113 'sequence' => 3,
114 'unit' => 'Newton Metre',
115 'factor' => 1,
116 'baseunit_fi' => -1,
117 'baseunit_title' => ''
118 ]);
119
120 $newtoncentimeter = new assFormulaQuestionUnit();
121 $newtoncentimeter->initFormArray([
122 'unit_id' => 4,
123 'category' => 1,
124 'sequence' => 4,
125 'unit' => 'Newton Centimeter',
126 'factor' => 0.01,
127 'baseunit_fi' => 3,
128 'baseunit_title' => 'Newton Metre'
129 ]);
130
131 $v1 = new assFormulaQuestionVariable('$v1', 1, 20, $newtonmetre, 1);
132 $v2 = new assFormulaQuestionVariable('$v2', 1, 10, $centimeter, 1);
133 $v1->setValue(19.6);
134 $v1->setIntprecision(1);
135 $v2->setValue(6.6);
136 $v2->setIntprecision(1);
137
138 $v3 = clone $v1;
139 $v4 = clone $v2;
140 $v3->setUnit(null);
141 $v3->setVariable('$v3');
142 $v4->setUnit(null);
143 $v4->setVariable('$v4');
144
145 $r1 = new assFormulaQuestionResult(
146 '$r1',
147 0,
148 0,
149 0,
150 $newtoncentimeter,
151 '$v1 * $v2',
152 $points,
153 $precision,
154 true,
155 33,
156 34,
157 33,
159 );
160 $r2 = new assFormulaQuestionResult(
161 '$r2',
162 0,
163 0,
164 0,
165 $newtonmetre,
166 '$v1 * $v2',
167 $points,
168 $precision,
169 true,
170 33,
171 34,
172 33,
174 );
175 $r3 = new assFormulaQuestionResult(
176 '$r3',
177 0,
178 0,
179 0,
180 null,
181 '$v1 * $v2',
182 $points,
183 $precision,
184 true,
185 33,
186 34,
187 33,
189 );
190 $r4 = new assFormulaQuestionResult(
191 '$r4',
192 0,
193 0,
194 0,
195 null,
196 '$v1 * $v2',
197 $points,
198 $precision,
199 true,
200 33,
201 34,
202 33,
204 );
205 $r5 = new assFormulaQuestionResult(
206 '$r5',
207 0,
208 0,
209 0,
210 null,
211 '$v1 * $v2',
212 $points,
213 $precision,
214 true,
215 33,
216 34,
217 33,
219 );
220 $r6 = new assFormulaQuestionResult(
221 '$r6',
222 0,
223 0,
224 0,
225 null,
226 '$v3 * $v4',
227 $points,
228 $precision,
229 true,
230 33,
231 34,
232 33,
234 );
235
236 // RESULT_FRAC
237 $v5 = new assFormulaQuestionVariable('$v5', 1, 20, null, 1);
238 $v6 = new assFormulaQuestionVariable('$v6', 1, 10, null, 1);
239 $v5->setValue(1);
240 $v6->setValue(3);
241
242 $v7 = new assFormulaQuestionVariable('$v7', 1, 20, null, 1);
243 $v8 = new assFormulaQuestionVariable('$v8', 1, 10, null, 1);
244 $v7->setValue(2);
245 $v8->setValue(4);
246
247 $r7 = new assFormulaQuestionResult(
248 '$r7',
249 0,
250 0,
251 0,
252 null,
253 '$v5/$v6',
254 $points,
255 $precision,
256 true,
257 33,
258 34,
259 33,
261 );
262
263 $r8 = new assFormulaQuestionResult(
264 '$r8',
265 0,
266 0,
267 0,
268 null,
269 '$v7/$v8',
270 $points,
271 $precision,
272 true,
273 33,
274 34,
275 33,
277 );
278
279 // RESULT_CO_FRAC
280 $v9 = clone $v7;
281 $v9->setVariable('$v9');
282 $v10 = clone $v8;
283 $v10->setVariable('$v10');
284
285 $v11 = clone $v7;
286 $v11->setVariable('$v11');
287 $v12 = clone $v8;
288 $v12->setVariable('$v12');
289
290 $r9 = new assFormulaQuestionResult(
291 '$r9',
292 0,
293 0,
294 0,
295 null,
296 '$v9/$v10',
297 $points,
298 $precision,
299 true,
300 33,
301 34,
302 33,
304 );
305
306 $r10 = new assFormulaQuestionResult(
307 '$r10',
308 0,
309 0,
310 0,
311 null,
312 '$v11/$v12',
313 $points,
314 $precision,
315 true,
316 33,
317 34,
318 33,
320 );
321
322 // RESULT_NO_SELECTION
323 $v13 = new assFormulaQuestionVariable('$v13', 1, 20, null, 1);
324 $v14 = new assFormulaQuestionVariable('$v14', 1, 10, null, 1);
325 $v13->setValue(1);
326 $v14->setValue(3);
327 $r11 = new assFormulaQuestionResult(
328 '$r11',
329 0,
330 0,
331 0,
332 null,
333 '$v13/$v14',
334 $points,
335 $precision,
336 true,
337 33,
338 34,
339 33,
341 );
342
343 $v15 = new assFormulaQuestionVariable('$v15', 200, 800, null, 0);
344 $v16 = new assFormulaQuestionVariable('$v16', 50, 250, null, 0);
345 $v17 = new assFormulaQuestionVariable('$v17', 3, 18, null, 0);
346 $v15->setIntprecision(25);
347 $v16->setIntprecision(5);
348 $v17->setIntprecision(1);
349 $v15->setValue(225);
350 $v16->setValue(85);
351 $v17->setValue(10);
352 $r12 = new assFormulaQuestionResult(
353 '$r12',
354 0,
355 0,
356 0,
357 null,
358 '1/(2*pi)*sqrt($v16*1000/$v15)+$v17-$v17',
359 $points,
360 1,
361 true,
362 33,
363 34,
364 33,
366 );
367 $r13 = new assFormulaQuestionResult(
368 '$r12',
369 0,
370 0,
371 0,
372 null,
373 '1/(2*pi)*sqrt($v16*1000/$v15)+$v17-$v17',
374 $points,
375 2,
376 true,
377 33,
378 34,
379 33,
381 );
382 $r14 = new assFormulaQuestionResult(
383 '$r11',
384 0,
385 0,
386 0,
387 null,
388 '$v7/$v14',
389 $points,
390 $precision,
391 true,
392 33,
393 34,
394 33,
396 );
397
398 $variables = [
399 $v1->getVariable() => $v1,
400 $v2->getVariable() => $v2,
401 $v3->getVariable() => $v3,
402 $v4->getVariable() => $v4,
403 $v5->getVariable() => $v5,
404 $v6->getVariable() => $v6,
405 $v7->getVariable() => $v7,
406 $v8->getVariable() => $v8,
407 $v9->getVariable() => $v9,
408 $v10->getVariable() => $v10,
409 $v11->getVariable() => $v11,
410 $v12->getVariable() => $v12,
411 $v13->getVariable() => $v13,
412 $v14->getVariable() => $v14,
413 $v15->getVariable() => $v15,
414 $v16->getVariable() => $v16,
415 $v17->getVariable() => $v17,
416 ];
417
418 $results = [
419 $r1->getResult() => $r1,
420 $r2->getResult() => $r2,
421 $r3->getResult() => $r3,
422 $r4->getResult() => $r4,
423 $r5->getResult() => $r5,
424 $r6->getResult() => $r6,
425 $r7->getResult() => $r7,
426 $r8->getResult() => $r8,
427 $r9->getResult() => $r9,
428 $r10->getResult() => $r10,
429 $r11->getResult() => $r11,
430 $r12->getResult() => $r12,
431 $r13->getResult() => $r13,
432 $r14->getResult() => $r14,
433 ];
434
435 return [
436 //result, all variables, all results, user solution, unit chosen by user for solution
437 [$r1, $variables, $results, '129.36', $newtoncentimeter, true],
438 [$r2, $variables, $results, '1.29', $newtonmetre, true],
439 [$r3, $variables, $results, '1.29', $newtonmetre, true],
440 [$r4, $variables, $results, '129.36', $newtoncentimeter, true],
441 [$r5, $variables, $results, '1.29', null, true],
442 [$r6, $variables, $results, '129.36', null, true],
443 // RESULT_FRAC
444 [$r7, $variables, $results, '1/3', null, true],
445 [$r8, $variables, $results, '4/8', null, true],
446 // RESULT_CO_FRAC
447 [$r9, $variables, $results, '1/2', null, true],
448 [$r10, $variables, $results, '4/8', null, false],
449 // RESULT_NO_SELECTION
450 [$r11, $variables, $results, '1/3', null, true],
451 [$r14, $variables, $results, '0.67', null, true],
452 [$r14, $variables, $results, '0.66666', null, true],
453 [$r14, $variables, $results, '0.7', null, false],
454 [$r14, $variables, $results, '2/3', null, true],
455 // Test for #22381
456 [$r12, $variables, $results, '3.1', null, true],
457 [$r13, $variables, $results, '3.09', null, true],
458 [$r13, $variables, $results, '3.1', null, false],
459 ];
460 }
461}
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:32
Class assBaseTestCase.
setGlobalVariable(string $name, $value)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
testSimpleRatedFormulaQuestionCalculations(assFormulaQuestionResult $result, array $variables, array $results, $userResult, $userResultUnit, $expectedResult)
@dataProvider simpleRatedCalculationsData
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $DIC
Definition: feed.php:28
$results
$lng