Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
/**
18
 * Test helpers for the simple calculated question type.
19
 *
20
 * @package    qtype
21
 * @subpackage calculatedsimple
22
 * @copyright  2011 The Open University
23
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24
 */
25
 
26
 
27
defined('MOODLE_INTERNAL') || die();
28
 
29
global $CFG;
30
require_once($CFG->dirroot . '/question/type/calculated/tests/helper.php');
31
 
32
 
33
/**
34
 * Test helper class for the simple calculated question type.
35
 *
36
 * @copyright  2011 The Open University
37
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
38
 */
39
class qtype_calculatedsimple_test_helper extends question_test_helper {
40
    public function get_test_questions() {
41
        return array('sum', 'sumwithvariants');
42
    }
43
 
44
    /**
45
     * Makes a simple calculated question about summing two numbers.
46
     * @return qtype_calculatedsimple_question
47
     */
48
    public function make_calculatedsimple_question_sum() {
49
        question_bank::load_question_definition_classes('calculatedsimple');
50
        $q = new qtype_calculatedsimple_question();
51
        test_question_maker::initialise_a_question($q);
52
        $q->name = 'Simple sum';
53
        $q->questiontext = 'What is {a} + {b}?';
54
        $q->generalfeedback = 'Generalfeedback: {={a} + {b}} is the right answer.';
55
 
56
        $q->answers = array(
57
            13 => new \qtype_calculated\qtype_calculated_answer(13, '{a} + {b}', 1.0, 'Very good.', FORMAT_HTML, 0),
58
            14 => new \qtype_calculated\qtype_calculated_answer(14, '{a} - {b}', 0.0, 'Add. not subtract!.',
59
                    FORMAT_HTML, 0),
60
            17 => new \qtype_calculated\qtype_calculated_answer(17, '*', 0.0, 'Completely wrong.', FORMAT_HTML, 0),
61
        );
62
        foreach ($q->answers as $answer) {
63
            $answer->correctanswerlength = 2;
64
            $answer->correctanswerformat = 1;
65
        }
66
 
67
        $q->qtype = question_bank::get_qtype('calculated');
68
        $q->unitdisplay = qtype_numerical::UNITNONE;
69
        $q->unitgradingtype = 0;
70
        $q->unitpenalty = 0;
71
        $q->ap = new qtype_numerical_answer_processor(array());
72
 
73
        $q->datasetloader = new qtype_calculated_test_dataset_loader(0, array(
74
            array('a' => 1, 'b' => 5),
75
            array('a' => 3, 'b' => 4),
76
        ));
77
 
78
        return $q;
79
    }
80
 
81
 
82
    public function get_calculatedsimple_question_form_data_sumwithvariants() {
83
        $form = new stdClass();
84
 
85
        $form->name = 'Calculated simple';
86
 
87
        $form->qtype = 'calculatedsimple';
88
 
89
        $form->questiontext = array();
90
        $form->questiontext['text'] = '<p>This is a simple sum of two variables.</p>';
91
        $form->questiontext['format'] = '1';
92
 
93
        $form->defaultmark = 1;
94
        $form->generalfeedback = array();
95
        $form->generalfeedback['text'] = '<p>The answer is  {a} + {b}</p>';
96
        $form->generalfeedback['format'] = '1';
97
 
98
        $form->synchronize = 0;
99
        $form->initialcategory = 1;
100
        $form->reload = 1;
101
        $form->mform_isexpanded_id_answerhdr = 1;
102
        $form->noanswers = 1;
103
        $form->answer = array('{a} + {b}');
104
 
105
        $form->fraction = array('1.0');
106
 
107
        $form->tolerance = array(0.01);
108
        $form->tolerancetype = array('1');
109
 
110
        $form->correctanswerlength = array('2');
111
        $form->correctanswerformat = array('1');
112
 
113
        $form->feedback = array();
114
        $form->feedback[0] = array();
115
        $form->feedback[0]['text'] = '';
116
        $form->feedback[0]['format'] = '1';
117
 
118
        $form->unitrole = '3';
119
        $form->unitpenalty = 0.1;
120
        $form->unitgradingtypes = '1';
121
        $form->unitsleft = '0';
122
        $form->nounits = 1;
123
        $form->multiplier = array('1.0');
124
 
125
        $form->penalty = '0.3333333';
126
        $form->numhints = 2;
127
        $form->hint = array();
128
        $form->hint[0] = array();
129
        $form->hint[0]['text'] = '';
130
        $form->hint[0]['format'] = '1';
131
 
132
        $form->hint[1] = array();
133
        $form->hint[1]['text'] = '';
134
        $form->hint[1]['format'] = '1';
135
 
136
        $form->calcmin = array();
137
        $form->calcmin[1] = 1;
138
        $form->calcmin[2] = 1;
139
 
140
        $form->calcmax = array();
141
        $form->calcmax[1] = 10;
142
        $form->calcmax[2] = 10;
143
 
144
        $form->calclength = array();
145
        $form->calclength[1] = '1';
146
        $form->calclength[2] = '1';
147
 
148
        $form->calcdistribution = array();
149
        $form->calcdistribution[1] = 0;
150
        $form->calcdistribution[2] = 0;
151
 
152
        $form->datasetdef = array();
153
        $form->datasetdef[1] = '1-0-a';
154
        $form->datasetdef[2] = '1-0-b';
155
 
156
        $form->defoptions = array();
157
        $form->defoptions[1] = '';
158
        $form->defoptions[2] = '';
159
 
160
        $form->selectadd = '10';
161
        $form->selectshow = '10';
162
        $form->number = array();
163
        $form->number[1] = '2.3';
164
        $form->number[2] = '7.6';
165
        $form->number[3] = '2.1';
166
        $form->number[4] = '6.4';
167
        $form->number[5] = '1.4';
168
        $form->number[6] = '1.9';
169
        $form->number[7] = '9.9';
170
        $form->number[8] = '9.5';
171
        $form->number[9] = '9.0';
172
        $form->number[10] = '5.2';
173
        $form->number[11] = '2.1';
174
        $form->number[12] = '7.3';
175
        $form->number[13] = '7.9';
176
        $form->number[14] = '1.2';
177
        $form->number[15] = '2.3';
178
        $form->number[16] = '3.4';
179
        $form->number[17] = '1.9';
180
        $form->number[18] = '5.2';
181
        $form->number[19] = '3.4';
182
        $form->number[20] = '3.4';
183
 
184
        $form->itemid = array_fill(1, 20, 0);
185
 
186
        $form->definition = array();
187
        $form->definition[1] = '1-0-b';
188
        $form->definition[2] = '1-0-a';
189
        $form->definition[3] = '1-0-b';
190
        $form->definition[4] = '1-0-a';
191
        $form->definition[5] = '1-0-b';
192
        $form->definition[6] = '1-0-a';
193
        $form->definition[7] = '1-0-b';
194
        $form->definition[8] = '1-0-a';
195
        $form->definition[9] = '1-0-b';
196
        $form->definition[10] = '1-0-a';
197
        $form->definition[11] = '1-0-b';
198
        $form->definition[12] = '1-0-a';
199
        $form->definition[13] = '1-0-b';
200
        $form->definition[14] = '1-0-a';
201
        $form->definition[15] = '1-0-b';
202
        $form->definition[16] = '1-0-a';
203
        $form->definition[17] = '1-0-b';
204
        $form->definition[18] = '1-0-a';
205
        $form->definition[19] = '1-0-b';
206
        $form->definition[20] = '1-0-a';
207
 
208
        $form->status = \core_question\local\bank\question_version_status::QUESTION_STATUS_READY;
209
 
210
        return $form;
211
    }
212
 
213
    public function get_calculatedsimple_question_data_sumwithvariants() {
214
        global $USER;
215
        $q = new stdClass();
216
 
217
        $q->name = 'Calculated simple';
218
        $q->createdby = $USER->id;
219
        $q->questiontext = '<p>This is a simple sum of two variables.</p>';
220
        $q->questiontextformat = '1';
221
        $q->generalfeedback = '<p>The answer is  {a} + {b}</p>';
222
        $q->generalfeedbackformat = '1';
223
        $q->defaultmark = 1;
224
        $q->penalty = 0.3333333;
225
        $q->qtype = 'calculatedsimple';
226
        $q->length = '1';
227
        $q->status = \core_question\local\bank\question_version_status::QUESTION_STATUS_READY;
228
        $q->version = 1;
229
        $q->options = new stdClass();
230
        $q->options->synchronize = 0;
231
        $q->options->single = 0;
232
        $q->options->answernumbering = 'abc';
233
        $q->options->shuffleanswers = 0;
234
        $q->options->correctfeedback = '';
235
        $q->options->partiallycorrectfeedback = '';
236
        $q->options->incorrectfeedback = '';
237
        $q->options->correctfeedbackformat = 0;
238
        $q->options->partiallycorrectfeedbackformat = 0;
239
        $q->options->incorrectfeedbackformat = 0;
240
        $q->options->answers = array();
241
        $q->options->answers[0] = new stdClass();
242
        $q->options->answers[0]->id = '6977';
243
        $q->options->answers[0]->question = '3379';
244
        $q->options->answers[0]->answer = '{a} + {b}';
245
        $q->options->answers[0]->answerformat = '0';
246
        $q->options->answers[0]->fraction = 1.0;
247
        $q->options->answers[0]->feedback = '';
248
        $q->options->answers[0]->feedbackformat = '1';
249
        $q->options->answers[0]->tolerance = '0.01';
250
        $q->options->answers[0]->tolerancetype = '1';
251
        $q->options->answers[0]->correctanswerlength = '2';
252
        $q->options->answers[0]->correctanswerformat = '1';
253
 
254
        $q->options->units = array();
255
 
256
        $q->options->unitgradingtype = '0';
257
        $q->options->unitpenalty = 0.1;
258
        $q->options->showunits = '3';
259
        $q->options->unitsleft = '0';
260
 
261
        $q->hints = array();
262
 
263
        return $q;
264
    }
265
}