ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
assFormulaQuestionTest.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  {
19  include_once("./Services/PHPUnit/classes/class.ilUnitUtil.php");
20  ilUnitUtil::performInitialisation();
21  }
22  else
23  {
24  chdir( dirname( __FILE__ ) );
25  chdir('../../../');
26 
27  require_once './Services/UICore/classes/class.ilCtrl.php';
28  $ilCtrl_mock = $this->getMock('ilCtrl');
29  $ilCtrl_mock->expects( $this->any() )->method( 'saveParameter' );
30  $ilCtrl_mock->expects( $this->any() )->method( 'saveParameterByClass' );
31  global $ilCtrl;
32  $ilCtrl = $ilCtrl_mock;
33 
34  require_once './Services/Language/classes/class.ilLanguage.php';
35  $lng_mock = $this->getMock('ilLanguage', array('txt'), array(), '', false);
36  //$lng_mock->expects( $this->once() )->method( 'txt' )->will( $this->returnValue('Test') );
37  global $lng;
38  $lng = $lng_mock;
39 
40  $ilias_mock = new stdClass();
41  $ilias_mock->account = new stdClass();
42  $ilias_mock->account->id = 6;
43  $ilias_mock->account->fullname = 'Esther Tester';
44  global $ilias;
45  $ilias = $ilias_mock;
46  }
47  }
48 
50  {
51  // Arrange
52  require_once './Modules/TestQuestionPool/classes/class.assFormulaQuestion.php';
53 
54  // Act
55  $instance = new assFormulaQuestion();
56 
57  $this->assertInstanceOf('assFormulaQuestion', $instance);
58  }
59 
70  assFormulaQuestionResult $result, array $variables, array $results, $userResult, $userResultUnit, $expectedResult
71  )
72  {
73  $isCorrect = $result->isCorrect($variables, $results, $userResult, $userResultUnit);
74  $this->assertEquals($expectedResult, $isCorrect);
75  }
76 
80  public function simpleRatedCalculationsData()
81  {
82  $points = 5;
83  $precision = 2;
84 
85  $meter = new assFormulaQuestionUnit();
86  $meter->initFormArray([
87  'unit_id' => 1,
88  'category' => 1,
89  'sequence' => 1,
90  'unit' => 'Meter',
91  'factor' => 1,
92  'baseunit_fi' => -1,
93  'baseunit_title' => ''
94  ]);
95 
96  $centimeter = new assFormulaQuestionUnit();
97  $centimeter->initFormArray([
98  'unit_id' => 2,
99  'category' => 1,
100  'sequence' => 2,
101  'unit' => 'Centimeter',
102  'factor' => 0.01,
103  'baseunit_fi' => 1,
104  'baseunit_title' => 'Meter'
105  ]);
106 
107  $newtonmetre = new assFormulaQuestionUnit();
108  $newtonmetre->initFormArray([
109  'unit_id' => 3,
110  'category' => 1,
111  'sequence' => 3,
112  'unit' => 'Newton Metre',
113  'factor' => 1,
114  'baseunit_fi' => -1,
115  'baseunit_title' => ''
116  ]);
117 
118  $newtoncentimeter = new assFormulaQuestionUnit();
119  $newtoncentimeter->initFormArray([
120  'unit_id' => 4,
121  'category' => 1,
122  'sequence' => 4,
123  'unit' => 'Newton Centimeter',
124  'factor' => 0.01,
125  'baseunit_fi' => 3,
126  'baseunit_title' => 'Newton Metre'
127  ]);
128 
129  $v1 = new assFormulaQuestionVariable('$v1', 1, 20, $newtonmetre, 1);
130  $v2 = new assFormulaQuestionVariable('$v2', 1, 10, $centimeter, 1);
131  $v1->setValue(19.6);
132  $v1->setIntprecision(1);
133  $v2->setValue(6.6);
134  $v2->setIntprecision(1);
135 
136  $v3 = clone $v1;
137  $v4 = clone $v2;
138  $v3->setUnit(null);
139  $v3->setVariable('$v3');
140  $v4->setUnit(null);
141  $v4->setVariable('$v4');
142 
143  $r1 = new assFormulaQuestionResult(
144  '$r1', 0, 0, 0, $newtoncentimeter, '$v1 * $v2', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_DEC
145  );
146  $r2 = new assFormulaQuestionResult(
147  '$r2', 0, 0, 0, $newtonmetre, '$v1 * $v2', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_DEC
148  );
149  $r3 = new assFormulaQuestionResult(
150  '$r3', 0, 0, 0, null, '$v1 * $v2', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_DEC
151  );
152  $r4 = new assFormulaQuestionResult(
153  '$r4', 0, 0, 0, null, '$v1 * $v2', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_DEC
154  );
155  $r5 = new assFormulaQuestionResult(
156  '$r5', 0, 0, 0, null, '$v1 * $v2', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_DEC
157  );
158  $r6 = new assFormulaQuestionResult(
159  '$r6', 0, 0, 0, null, '$v3 * $v4', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_DEC
160  );
161 
162  // RESULT_FRAC
163  $v5 = new assFormulaQuestionVariable('$v5', 1, 20, null, 1);
164  $v6 = new assFormulaQuestionVariable('$v6', 1, 10, null, 1);
165  $v5->setValue(1);
166  $v6->setValue(3);
167 
168  $v7 = new assFormulaQuestionVariable('$v7', 1, 20, null, 1);
169  $v8 = new assFormulaQuestionVariable('$v8', 1, 10, null, 1);
170  $v7->setValue(2);
171  $v8->setValue(4);
172 
173  $r7 = new assFormulaQuestionResult(
174  '$r7', 0, 0, 0, null, '$v5/$v6', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_FRAC
175  );
176 
177  $r8 = new assFormulaQuestionResult(
178  '$r8', 0, 0, 0, null, '$v7/$v8', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_FRAC
179  );
180 
181  // RESULT_CO_FRAC
182  $v9 = clone $v7;
183  $v9->setVariable('$v9');
184  $v10 = clone $v8;
185  $v10->setVariable('$v10');
186 
187  $v11 = clone $v7;
188  $v11->setVariable('$v11');
189  $v12 = clone $v8;
190  $v12->setVariable('$v12');
191 
192  $r9 = new assFormulaQuestionResult(
193  '$r9', 0, 0, 0, null, '$v9/$v10', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_CO_FRAC
194  );
195 
196  $r10 = new assFormulaQuestionResult(
197  '$r10', 0, 0, 0, null, '$v11/$v12', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_CO_FRAC
198  );
199 
200  // RESULT_NO_SELECTION
201  $v13 = new assFormulaQuestionVariable('$v13', 1, 20, null, 1);
202  $v14 = new assFormulaQuestionVariable('$v14', 1, 10, null, 1);
203  $v13->setValue(1);
204  $v14->setValue(3);
205  $r11 = new assFormulaQuestionResult(
206  '$r11', 0, 0, 0, null, '$v13/$v14', $points, $precision, true, 33, 34, 33, assFormulaQuestionResult::RESULT_NO_SELECTION);
207 
208  $v15 = new assFormulaQuestionVariable('$v15', 200, 800, null, 0);
209  $v16 = new assFormulaQuestionVariable('$v16', 50, 250, null, 0);
210  $v17 = new assFormulaQuestionVariable('$v17', 3, 18, null, 0);
211  $v15->setIntprecision(25);
212  $v16->setIntprecision(5);
213  $v17->setIntprecision(1);
214  $v15->setValue(225);
215  $v16->setValue(85);
216  $v17->setValue(10);
217  $r12 = new assFormulaQuestionResult(
218  '$r12', 0, 0, 0, null, '1/(2*pi)*sqrt($v16*1000/$v15)+$v17-$v17', $points, 1, true, 33, 34, 33, assFormulaQuestionResult::RESULT_NO_SELECTION
219  );
220 
221  $variables = [
222  $v1->getVariable() => $v1,
223  $v2->getVariable() => $v2,
224  $v3->getVariable() => $v3,
225  $v4->getVariable() => $v4,
226  $v5->getVariable() => $v5,
227  $v6->getVariable() => $v6,
228  $v7->getVariable() => $v7,
229  $v8->getVariable() => $v8,
230  $v9->getVariable() => $v9,
231  $v10->getVariable() => $v10,
232  $v11->getVariable() => $v11,
233  $v12->getVariable() => $v12,
234  $v13->getVariable() => $v13,
235  $v14->getVariable() => $v14,
236  $v15->getVariable() => $v15,
237  $v16->getVariable() => $v16,
238  $v17->getVariable() => $v17,
239  ];
240 
241  $results = [
242  $r1->getResult() => $r1,
243  $r2->getResult() => $r2,
244  $r3->getResult() => $r3,
245  $r4->getResult() => $r4,
246  $r5->getResult() => $r5,
247  $r6->getResult() => $r6,
248  $r7->getResult() => $r7,
249  $r8->getResult() => $r8,
250  $r9->getResult() => $r9,
251  $r10->getResult() => $r10,
252  $r11->getResult() => $r11,
253  $r12->getResult() => $r12,
254  ];
255 
256  return [
257  //result, all variables, all results, user solution, unit chosen by user for solution
258  [$r1, $variables, $results, '129.36', $newtoncentimeter, true],
259  [$r2, $variables, $results, '1.29', $newtonmetre, true],
260  [$r3, $variables, $results, '1.29', $newtonmetre, true],
261  [$r4, $variables, $results, '129.36', $newtoncentimeter, true],
262  [$r5, $variables, $results, '1.29', null, true],
263  [$r6, $variables, $results, '129.36', null, true],
264  // RESULT_FRAC
265  [$r7, $variables, $results, '1/3', null, true],
266  [$r8, $variables, $results, '4/8', null, true],
267  // RESULT_CO_FRAC
268  [$r9, $variables, $results, '1/2', null, true],
269  [$r10, $variables, $results, '4/8', null, false],
270  // RESULT_NO_SELECTION
271  [$r11, $variables, $results, '1/3', null, true],
272  // Test for #22381
273  [$r12, $variables, $results, '3.1', null, true],
274  ];
275  }
276 }
$result
Class for single choice questions assFormulaQuestion is a class for single choice questions...
global $ilCtrl
Definition: ilias.php:18
isCorrect($variables, $results, $value, $unit=NULL)
$results
Create styles array
The data for the language used.
testSimpleRatedFormulaQuestionCalculations(assFormulaQuestionResult $result, array $variables, array $results, $userResult, $userResultUnit, $expectedResult)
simpleRatedCalculationsData
global $lng
Definition: privfeed.php:17
defined( 'APPLICATION_ENV')||define( 'APPLICATION_ENV'
Definition: bootstrap.php:27