Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3/**
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; under version 2
7 * of the License (non-upgradable).
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17 *
18 * Copyright (c) 2016 (original work) Open Assessment Technologies SA ;
19 */
20
21/**
22 * @author Jean-Sébastien Conan <jean-sebastien.conan@vesperiagroup.com>
23 */
24
25namespace oat\taoQtiTest\models\runner;
26
27use oat\taoQtiTest\models\runner\config\RunnerConfig;
28use qtism\data\AssessmentItemRef;
29use oat\taoDelivery\model\execution\Delete\DeliveryExecutionDelete;
30
31/**
32 * Interface RunnerService
33 *
34 * Describes a test runner dedicated service
35 *
36 * @package oat\taoQtiTest\models
37 */
38interface RunnerService extends DeliveryExecutionDelete
39{
40    public const INSTANCE_TEST_RUNNER_SERVICE = 'http://www.tao.lu/Ontologies/TAODelivery.rdf#ServiceQtiTestRunner';
41
42    // phpcs:disable Generic.Files.LineLength
43    public const INSTANCE_TEST_ITEM_RUNNER_SERVICE = 'http://www.tao.lu/Ontologies/TAODelivery.rdf#ServiceQtiTestItemRunner';
44    // phpcs:enable Generic.Files.LineLength
45
46    // phpcs:disable Generic.Files.LineLength
47    public const INSTANCE_FORMAL_PARAM_TEST_ITEM_RUNNER_PARENT_CALL_ID = 'http://www.tao.lu/Ontologies/TAOTest.rdf#FormalParamQtiTestParentServiceCallId';
48    // phpcs:enable Generic.Files.LineLength
49
50    /**
51     * Initializes the delivery execution session
52     * @param RunnerServiceContext $context
53     * @return boolean
54     * @throws \common_Exception
55     */
56    public function init(RunnerServiceContext $context);
57
58    /**
59     * Gets the test runner config
60     * @return RunnerConfig
61     * @throws \common_ext_ExtensionException
62     */
63    public function getTestConfig();
64
65    /**
66     * Gets the test definition data
67     *
68     * @deprecated the testData is not necessary anymore
69     * if the config is given directly to the test runner configuration
70     *
71     * @param RunnerServiceContext $context
72     * @return array
73     * @throws \common_Exception
74     */
75    public function getTestData(RunnerServiceContext $context);
76
77    /**
78     * Gets the test context object
79     * @param RunnerServiceContext $context
80     * @return array
81     * @throws \common_Exception
82     */
83    public function getTestContext(RunnerServiceContext $context);
84
85    /**
86     * Gets the map of the test items
87     * @param RunnerServiceContext $context
88     * @param bool $partial the full testMap or only the current section
89     * @return array
90     * @throws \common_Exception
91     */
92    public function getTestMap(RunnerServiceContext $context, $partial = false);
93
94    /**
95     * Gets the rubrics related to the current session state
96     * @param RunnerServiceContext $context
97     * @param AssessmentItemRef $itemRef (optional) otherwise use the current
98     * @return mixed
99     * @throws \common_Exception
100     */
101    public function getRubrics(RunnerServiceContext $context, AssessmentItemRef $itemRef = null);
102
103    /**
104     * Gets definition data of a particular item
105     * @param RunnerServiceContext $context
106     * @param $itemRef
107     * @return mixed
108     * @throws \common_Exception
109     */
110    public function getItemData(RunnerServiceContext $context, $itemRef);
111
112    /**
113     * Gets the state of a particular item
114     * @param RunnerServiceContext $context
115     * @param $itemRef
116     * @return array|null
117     * @throws \common_Exception
118     */
119    public function getItemState(RunnerServiceContext $context, $itemRef);
120
121    /**
122     * Sets the state of a particular item
123     * @param RunnerServiceContext $context
124     * @param $itemRef
125     * @param $state
126     * @return boolean
127     * @throws \common_Exception
128     */
129    public function setItemState(RunnerServiceContext $context, $itemRef, $state);
130
131    /**
132     * Parses the responses provided for a particular item
133     * @param RunnerServiceContext $context
134     * @param $itemRef
135     * @param $response
136     * @return mixed
137     * @throws \common_Exception
138     */
139    public function parsesItemResponse(RunnerServiceContext $context, $itemRef, $response);
140
141    /**
142     * Checks if the provided responses are empty
143     * @param RunnerServiceContext $context
144     * @param $responses
145     * @return mixed
146     * @throws \common_Exception
147     */
148    public function emptyResponse(RunnerServiceContext $context, $responses);
149
150    /**
151     * Stores the responses of a particular item
152     * @param RunnerServiceContext $context
153     * @param $itemRef
154     * @param $responses
155     * @return boolean
156     * @throws \common_Exception
157     */
158    public function storeItemResponse(RunnerServiceContext $context, $itemRef, $responses);
159
160    /**
161     * Should we display feedbacks
162     * @param RunnerServiceContext $context
163     * @return boolean
164     * @throws \common_Exception
165     */
166    public function displayFeedbacks(RunnerServiceContext $context);
167
168    /**
169     * Get feedback definition
170     * @param RunnerServiceContext $context
171     * @param string $itemRef  the item reference
172     * @return array the feedbacks data
173     * @throws \common_exception_InvalidArgumentType
174     */
175    public function getFeedbacks(RunnerServiceContext $context, $itemRef);
176
177    /**
178     * Does the given item has feedbacks
179     * @param RunnerServiceContext $context
180     * @param string $itemRef  the item reference
181     * @return boolean
182     * @throws \common_Exception
183     */
184    public function hasFeedbacks(RunnerServiceContext $context, $itemRef);
185
186    /**
187     * Get the current item session
188     * @param RunnerServiceContext $context
189     * @throws \common_Exception
190     */
191    public function getItemSession(RunnerServiceContext $context);
192
193    /**
194     * Moves the current position to the provided scoped reference.
195     * @param RunnerServiceContext $context
196     * @param $direction
197     * @param $scope
198     * @param $ref
199     * @return boolean
200     * @throws \common_Exception
201     */
202    public function move(RunnerServiceContext $context, $direction, $scope, $ref);
203
204    /**
205     * Skips the current position to the provided scoped reference
206     * @param RunnerServiceContext $context
207     * @param $scope
208     * @param $ref
209     * @return boolean
210     * @throws \common_Exception
211     */
212    public function skip(RunnerServiceContext $context, $scope, $ref);
213
214    /**
215     * Handles a test timeout
216     * @param RunnerServiceContext $context
217     * @param $scope
218     * @param $ref
219     * @return boolean
220     * @throws \common_Exception
221     */
222    public function timeout(RunnerServiceContext $context, $scope, $ref);
223
224    /**
225     * Exits the test before its end
226     * @param RunnerServiceContext $context
227     * @return boolean
228     * @throws \common_Exception
229     */
230    public function exitTest(RunnerServiceContext $context);
231
232    /**
233     * Finishes the test
234     * @param RunnerServiceContext $context
235     * @return boolean
236     * @throws \common_Exception
237     */
238    public function finish(RunnerServiceContext $context);
239
240    /**
241     * Sets the test to paused state
242     * @param RunnerServiceContext $context
243     * @return boolean
244     * @throws \common_Exception
245     */
246    public function pause(RunnerServiceContext $context);
247
248    /**
249     * Resumes the test from paused state
250     * @param RunnerServiceContext $context
251     * @return boolean
252     * @throws \common_Exception
253     */
254    public function resume(RunnerServiceContext $context);
255
256    /**
257     * Checks if the test is still valid
258     * @param RunnerServiceContext $context
259     * @return boolean
260     * @throws \common_Exception
261     */
262    public function check(RunnerServiceContext $context);
263
264    /**
265     * Checks if the test is in paused state
266     * @param RunnerServiceContext $context
267     * @return boolean
268     */
269    public function isPaused(RunnerServiceContext $context);
270
271    /**
272     * Checks if the test is in terminated state
273     * @param RunnerServiceContext $context
274     * @return boolean
275     */
276    public function isTerminated(RunnerServiceContext $context);
277
278    /**
279     * Get the list of portable elements used in the item
280     * @param RunnerServiceContext $context
281     * @param $itemRef
282     * @return mixed
283     */
284    public function getItemPortableElements(RunnerServiceContext $context, $itemRef);
285
286    /**
287     * Get the list of metadata elements used in the item
288     * @param $itemRef
289     * @return mixed
290     */
291    public function getItemMetadataElements($itemRef);
292
293    /**
294     * Gets AssessmentItemRef's Href by AssessmentItemRef Identifier.
295     * @param RunnerServiceContext $context
296     * @param string $itemRef
297     * @return string
298     */
299    public function getItemHref(RunnerServiceContext $context, string $itemRef): string;
300
301    /**
302     * Get the base url to the item public directory
303     * @param RunnerServiceContext $context
304     * @param string $itemRef
305     * @return string
306     */
307    public function getItemPublicUrl(RunnerServiceContext $context, string $itemRef): string;
308
309    /**
310     * Starts the timer for the current item in the TestSession
311     * @param RunnerServiceContext $context
312     * @param float|null $timestamp allow to start the timer at a specific time, or use current when it's null
313     * @return bool
314     * @throws \common_exception_InvalidArgumentType
315     */
316    public function startTimer(RunnerServiceContext $context, ?float $timestamp = null): bool;
317
318    /**
319     * Ends the timer for the current item in the TestSession
320     * @param RunnerServiceContext $context
321     * @param float|null $duration The client side duration to adjust the timer
322     * @param float|null $timestamp allow to end the timer at a specific time, or use current when it's null
323     * @return bool
324     * @throws \common_exception_InvalidArgumentType
325     */
326    public function endTimer(RunnerServiceContext $context, ?float $duration = null, ?float $timestamp = null): bool;
327
328    /**
329     * Stores trace variable related to an item, a test or a section
330     *
331     * @param RunnerServiceContext $context
332     * @param string|null $itemUri
333     * @param string $variableIdentifier
334     * @param mixed $variableValue
335     * @return boolean
336     * @throws \common_Exception
337     */
338    public function storeTraceVariable(
339        RunnerServiceContext $context,
340        ?string $itemUri,
341        string $variableIdentifier,
342        $variableValue
343    ): bool;
344}