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