ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
assFormulaQuestionTest Class Reference

Unit tests. More...

+ Inheritance diagram for assFormulaQuestionTest:
+ Collaboration diagram for assFormulaQuestionTest:

Public Member Functions

 testSimpleRatedFormulaQuestionCalculations (assFormulaQuestionResult $result, array $variables, array $results, $userResult, $userResultUnit, $expectedResult)
 simpleRatedCalculationsData More...
 
 simpleRatedCalculationsData ()
 

Protected Member Functions

 setUp ()
 
- Protected Member Functions inherited from assBaseTestCase
 setUp ()
 
 setGlobalVariable ($name, $value)
 
 getGlobalTemplateMock ()
 
 getHttpMock ()
 
 getDatabaseMock ()
 
 getIliasMock ()
 

Protected Attributes

 $backupGlobals = false
 

Detailed Description

Unit tests.

Author
Maximilian Becker mbeck.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de

Definition at line 13 of file assFormulaQuestionTest.php.

Member Function Documentation

◆ setUp()

assFormulaQuestionTest::setUp ( )
protected

Definition at line 17 of file assFormulaQuestionTest.php.

References $lng, and assBaseTestCase\setGlobalVariable().

17  : void
18  {
19  parent::setUp();
20 
21  $lng = $this->getMockBuilder(\ilLanguage::class)
22  ->disableOriginalConstructor()
23  ->getMock();
24  $lng->method('txt')
25  ->will($this->returnArgument(0));
26 
27  $this->setGlobalVariable('lng', $lng);
28  }
setGlobalVariable($name, $value)
$lng
+ Here is the call graph for this function:

◆ simpleRatedCalculationsData()

assFormulaQuestionTest::simpleRatedCalculationsData ( )

Definition at line 55 of file assFormulaQuestionTest.php.

References $results, assFormulaQuestionResult\RESULT_CO_FRAC, assFormulaQuestionResult\RESULT_DEC, assFormulaQuestionResult\RESULT_FRAC, and assFormulaQuestionResult\RESULT_NO_SELECTION.

56  {
57  $points = 5;
58  $precision = 2;
59 
60  $meter = new assFormulaQuestionUnit();
61  $meter->initFormArray([
62  'unit_id' => 1,
63  'category' => 1,
64  'sequence' => 1,
65  'unit' => 'Meter',
66  'factor' => 1,
67  'baseunit_fi' => -1,
68  'baseunit_title' => ''
69  ]);
70 
71  $centimeter = new assFormulaQuestionUnit();
72  $centimeter->initFormArray([
73  'unit_id' => 2,
74  'category' => 1,
75  'sequence' => 2,
76  'unit' => 'Centimeter',
77  'factor' => 0.01,
78  'baseunit_fi' => 1,
79  'baseunit_title' => 'Meter'
80  ]);
81 
82  $newtonmetre = new assFormulaQuestionUnit();
83  $newtonmetre->initFormArray([
84  'unit_id' => 3,
85  'category' => 1,
86  'sequence' => 3,
87  'unit' => 'Newton Metre',
88  'factor' => 1,
89  'baseunit_fi' => -1,
90  'baseunit_title' => ''
91  ]);
92 
93  $newtoncentimeter = new assFormulaQuestionUnit();
94  $newtoncentimeter->initFormArray([
95  'unit_id' => 4,
96  'category' => 1,
97  'sequence' => 4,
98  'unit' => 'Newton Centimeter',
99  'factor' => 0.01,
100  'baseunit_fi' => 3,
101  'baseunit_title' => 'Newton Metre'
102  ]);
103 
104  $v1 = new assFormulaQuestionVariable('$v1', 1, 20, $newtonmetre, 1);
105  $v2 = new assFormulaQuestionVariable('$v2', 1, 10, $centimeter, 1);
106  $v1->setValue(19.6);
107  $v1->setIntprecision(1);
108  $v2->setValue(6.6);
109  $v2->setIntprecision(1);
110 
111  $v3 = clone $v1;
112  $v4 = clone $v2;
113  $v3->setUnit(null);
114  $v3->setVariable('$v3');
115  $v4->setUnit(null);
116  $v4->setVariable('$v4');
117 
118  $r1 = new assFormulaQuestionResult(
119  '$r1',
120  0,
121  0,
122  0,
123  $newtoncentimeter,
124  '$v1 * $v2',
125  $points,
126  $precision,
127  true,
128  33,
129  34,
130  33,
132  );
133  $r2 = new assFormulaQuestionResult(
134  '$r2',
135  0,
136  0,
137  0,
138  $newtonmetre,
139  '$v1 * $v2',
140  $points,
141  $precision,
142  true,
143  33,
144  34,
145  33,
147  );
148  $r3 = new assFormulaQuestionResult(
149  '$r3',
150  0,
151  0,
152  0,
153  null,
154  '$v1 * $v2',
155  $points,
156  $precision,
157  true,
158  33,
159  34,
160  33,
162  );
163  $r4 = new assFormulaQuestionResult(
164  '$r4',
165  0,
166  0,
167  0,
168  null,
169  '$v1 * $v2',
170  $points,
171  $precision,
172  true,
173  33,
174  34,
175  33,
177  );
178  $r5 = new assFormulaQuestionResult(
179  '$r5',
180  0,
181  0,
182  0,
183  null,
184  '$v1 * $v2',
185  $points,
186  $precision,
187  true,
188  33,
189  34,
190  33,
192  );
193  $r6 = new assFormulaQuestionResult(
194  '$r6',
195  0,
196  0,
197  0,
198  null,
199  '$v3 * $v4',
200  $points,
201  $precision,
202  true,
203  33,
204  34,
205  33,
207  );
208 
209  // RESULT_FRAC
210  $v5 = new assFormulaQuestionVariable('$v5', 1, 20, null, 1);
211  $v6 = new assFormulaQuestionVariable('$v6', 1, 10, null, 1);
212  $v5->setValue(1);
213  $v6->setValue(3);
214 
215  $v7 = new assFormulaQuestionVariable('$v7', 1, 20, null, 1);
216  $v8 = new assFormulaQuestionVariable('$v8', 1, 10, null, 1);
217  $v7->setValue(2);
218  $v8->setValue(4);
219 
220  $r7 = new assFormulaQuestionResult(
221  '$r7',
222  0,
223  0,
224  0,
225  null,
226  '$v5/$v6',
227  $points,
228  $precision,
229  true,
230  33,
231  34,
232  33,
234  );
235 
236  $r8 = new assFormulaQuestionResult(
237  '$r8',
238  0,
239  0,
240  0,
241  null,
242  '$v7/$v8',
243  $points,
244  $precision,
245  true,
246  33,
247  34,
248  33,
250  );
251 
252  // RESULT_CO_FRAC
253  $v9 = clone $v7;
254  $v9->setVariable('$v9');
255  $v10 = clone $v8;
256  $v10->setVariable('$v10');
257 
258  $v11 = clone $v7;
259  $v11->setVariable('$v11');
260  $v12 = clone $v8;
261  $v12->setVariable('$v12');
262 
263  $r9 = new assFormulaQuestionResult(
264  '$r9',
265  0,
266  0,
267  0,
268  null,
269  '$v9/$v10',
270  $points,
271  $precision,
272  true,
273  33,
274  34,
275  33,
277  );
278 
279  $r10 = new assFormulaQuestionResult(
280  '$r10',
281  0,
282  0,
283  0,
284  null,
285  '$v11/$v12',
286  $points,
287  $precision,
288  true,
289  33,
290  34,
291  33,
293  );
294 
295  // RESULT_NO_SELECTION
296  $v13 = new assFormulaQuestionVariable('$v13', 1, 20, null, 1);
297  $v14 = new assFormulaQuestionVariable('$v14', 1, 10, null, 1);
298  $v13->setValue(1);
299  $v14->setValue(3);
300  $r11 = new assFormulaQuestionResult(
301  '$r11',
302  0,
303  0,
304  0,
305  null,
306  '$v13/$v14',
307  $points,
308  $precision,
309  true,
310  33,
311  34,
312  33,
314  );
315 
316  $v15 = new assFormulaQuestionVariable('$v15', 200, 800, null, 0);
317  $v16 = new assFormulaQuestionVariable('$v16', 50, 250, null, 0);
318  $v17 = new assFormulaQuestionVariable('$v17', 3, 18, null, 0);
319  $v15->setIntprecision(25);
320  $v16->setIntprecision(5);
321  $v17->setIntprecision(1);
322  $v15->setValue(225);
323  $v16->setValue(85);
324  $v17->setValue(10);
325  $r12 = new assFormulaQuestionResult(
326  '$r12',
327  0,
328  0,
329  0,
330  null,
331  '1/(2*pi)*sqrt($v16*1000/$v15)+$v17-$v17',
332  $points,
333  1,
334  true,
335  33,
336  34,
337  33,
339  );
340  $r13 = new assFormulaQuestionResult(
341  '$r12',
342  0,
343  0,
344  0,
345  null,
346  '1/(2*pi)*sqrt($v16*1000/$v15)+$v17-$v17',
347  $points,
348  2,
349  true,
350  33,
351  34,
352  33,
354  );
355  $r14 = new assFormulaQuestionResult(
356  '$r11',
357  0,
358  0,
359  0,
360  null,
361  '$v7/$v14',
362  $points,
363  $precision,
364  true,
365  33,
366  34,
367  33,
369  );
370 
371  $variables = [
372  $v1->getVariable() => $v1,
373  $v2->getVariable() => $v2,
374  $v3->getVariable() => $v3,
375  $v4->getVariable() => $v4,
376  $v5->getVariable() => $v5,
377  $v6->getVariable() => $v6,
378  $v7->getVariable() => $v7,
379  $v8->getVariable() => $v8,
380  $v9->getVariable() => $v9,
381  $v10->getVariable() => $v10,
382  $v11->getVariable() => $v11,
383  $v12->getVariable() => $v12,
384  $v13->getVariable() => $v13,
385  $v14->getVariable() => $v14,
386  $v15->getVariable() => $v15,
387  $v16->getVariable() => $v16,
388  $v17->getVariable() => $v17,
389  ];
390 
391  $results = [
392  $r1->getResult() => $r1,
393  $r2->getResult() => $r2,
394  $r3->getResult() => $r3,
395  $r4->getResult() => $r4,
396  $r5->getResult() => $r5,
397  $r6->getResult() => $r6,
398  $r7->getResult() => $r7,
399  $r8->getResult() => $r8,
400  $r9->getResult() => $r9,
401  $r10->getResult() => $r10,
402  $r11->getResult() => $r11,
403  $r12->getResult() => $r12,
404  $r13->getResult() => $r13,
405  $r14->getResult() => $r14,
406  ];
407 
408  return [
409  //result, all variables, all results, user solution, unit chosen by user for solution
410  [$r1, $variables, $results, '129.36', $newtoncentimeter, true],
411  [$r2, $variables, $results, '1.29', $newtonmetre, true],
412  [$r3, $variables, $results, '1.29', $newtonmetre, true],
413  [$r4, $variables, $results, '129.36', $newtoncentimeter, true],
414  [$r5, $variables, $results, '1.29', null, true],
415  [$r6, $variables, $results, '129.36', null, true],
416  // RESULT_FRAC
417  [$r7, $variables, $results, '1/3', null, true],
418  [$r8, $variables, $results, '4/8', null, true],
419  // RESULT_CO_FRAC
420  [$r9, $variables, $results, '1/2', null, true],
421  [$r10, $variables, $results, '4/8', null, false],
422  // RESULT_NO_SELECTION
423  [$r11, $variables, $results, '1/3', null, true],
424  [$r14, $variables, $results, '0.67', null, true],
425  [$r14, $variables, $results, '0.66666', null, true],
426  [$r14, $variables, $results, '0.7', null, false],
427  [$r14, $variables, $results, '2/3', null, true],
428  // Test for #22381
429  [$r12, $variables, $results, '3.1', null, true],
430  [$r13, $variables, $results, '3.09', null, true],
431  [$r13, $variables, $results, '3.1', null, false],
432  ];
433  }
$results

◆ testSimpleRatedFormulaQuestionCalculations()

assFormulaQuestionTest::testSimpleRatedFormulaQuestionCalculations ( assFormulaQuestionResult  $result,
array  $variables,
array  $results,
  $userResult,
  $userResultUnit,
  $expectedResult 
)

simpleRatedCalculationsData

Parameters
assFormulaQuestionResult$result
assFormulaQuestionVariable[]$variables
assFormulaQuestionUnit[]$results
string$userResult
assFormulaQuestionUnit | null$userResultUnit
bool$expectedResult

Definition at line 40 of file assFormulaQuestionTest.php.

References assFormulaQuestionResult\isCorrect().

47  {
48  $isCorrect = $result->isCorrect($variables, $results, $userResult, $userResultUnit);
49  $this->assertEquals($expectedResult, $isCorrect);
50  }
isCorrect($variables, $results, $value, $unit=null)
$results
+ Here is the call graph for this function:

Field Documentation

◆ $backupGlobals

assFormulaQuestionTest::$backupGlobals = false
protected

Definition at line 15 of file assFormulaQuestionTest.php.


The documentation for this class was generated from the following file: