Merge branch 'MDL-70148-310' of git://github.com/andrewnicols/moodle into MOODLE_310_...
[moodle.git] / question / type / calculatedmulti / tests / helper.php
CommitLineData
603bd001
PS
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 calculated question type.
19 *
20 * @package qtype
21 * @subpackage calculatedmulti
22 * @copyright 2011 The Open University
23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 */
25
26
27defined('MOODLE_INTERNAL') || die();
28
29global $CFG;
1e8374c3
TH
30require_once($CFG->dirroot . '/question/type/calculatedmulti/question.php');
31require_once($CFG->dirroot . '/question/type/calculated/tests/helper.php');
603bd001
PS
32
33/**
34 * Test helper class for the calculated multiple-choice question type.
35 *
36 * @copyright 2011 The Open University
37 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
38 */
39class qtype_calculatedmulti_test_helper extends question_test_helper {
40 public function get_test_questions() {
1e8374c3 41 return array('singleresponse', 'multiresponse');
603bd001
PS
42 }
43
44 /**
45 * Makes a calculated multiple-choice question about summing two numbers.
1e8374c3 46 * @return qtype_calculatedmulti_single_question
603bd001 47 */
1e8374c3 48 public function make_calculatedmulti_question_singleresponse() {
603bd001 49 question_bank::load_question_definition_classes('calculated');
1e8374c3 50 $q = new qtype_calculatedmulti_single_question();
603bd001
PS
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.';
1e8374c3
TH
55 $q->shuffleanswers = 0;
56 $q->answernumbering = 'abc';
57 $q->layout = 1;
58 $q->correctfeedback = test_question_maker::STANDARD_OVERALL_CORRECT_FEEDBACK;
59 $q->correctfeedbackformat = FORMAT_HTML;
60 $q->partiallycorrectfeedback = test_question_maker::STANDARD_OVERALL_PARTIALLYCORRECT_FEEDBACK;
61 $q->partiallycorrectfeedbackformat = FORMAT_HTML;
62 $q->shownumcorrect = 1;
63 $q->incorrectfeedback = test_question_maker::STANDARD_OVERALL_INCORRECT_FEEDBACK;
64 $q->incorrectfeedbackformat = FORMAT_HTML;
65 $q->shownumcorrect = 1;
603bd001 66 $q->answers = array(
1e8374c3
TH
67 13 => new question_answer(13, '{={a} + {b}}', 1.0, 'Very good.', FORMAT_HTML),
68 14 => new question_answer(14, '{={a} - {b}}', 0.0, 'Add. not subtract!', FORMAT_HTML),
69 17 => new question_answer(17, '{={a} + 2 * {b}}', 0.0, 'Just add.', FORMAT_HTML),
603bd001 70 );
1e8374c3
TH
71 $q->answers[13]->correctanswerlength = 2;
72 $q->answers[13]->correctanswerformat = 1;
73 $q->answers[14]->correctanswerlength = 2;
74 $q->answers[14]->correctanswerformat = 1;
75 $q->answers[17]->correctanswerlength = 2;
76 $q->answers[17]->correctanswerformat = 1;
77 $q->qtype = question_bank::get_qtype('calculatedmulti');
603bd001
PS
78
79 $q->datasetloader = new qtype_calculated_test_dataset_loader(0, array(
80 array('a' => 1, 'b' => 5),
81 array('a' => 3, 'b' => 4),
82 ));
83
84 return $q;
85 }
1e8374c3
TH
86
87 /**
88 * Makes a calculated multiple-choice question with multiple right answers.
89 * @return qtype_calculatedmulti_multi_question
90 */
91 public function make_calculatedmulti_question_multiresponse() {
92 question_bank::load_question_definition_classes('calculated');
93 $q = new qtype_calculatedmulti_multi_question();
94 test_question_maker::initialise_a_question($q);
95 $q->name = 'Simple sum';
96 $q->questiontext = 'What is {a} + {b}?';
97 $q->generalfeedback = 'Generalfeedback: {={a} + {b}} is the right answer.';
98 $q->shuffleanswers = 0;
99 $q->answernumbering = 'abc';
100 $q->layout = 1;
101 $q->correctfeedback = test_question_maker::STANDARD_OVERALL_CORRECT_FEEDBACK;
102 $q->correctfeedbackformat = FORMAT_HTML;
103 $q->partiallycorrectfeedback = test_question_maker::STANDARD_OVERALL_PARTIALLYCORRECT_FEEDBACK;
104 $q->partiallycorrectfeedbackformat = FORMAT_HTML;
105 $q->shownumcorrect = 1;
106 $q->incorrectfeedback = test_question_maker::STANDARD_OVERALL_INCORRECT_FEEDBACK;
107 $q->incorrectfeedbackformat = FORMAT_HTML;
108 $q->shownumcorrect = 1;
109 $q->answers = array(
110 13 => new qtype_numerical_answer(13, '{a} + {b}!', 0.5, 'Good', FORMAT_HTML, 0),
111 14 => new qtype_numerical_answer(14, '{={a} + {b}}', 0.5, 'Good',
112 FORMAT_HTML, 0),
113 17 => new qtype_numerical_answer(17, '{={a} - {b}}', -0.5, 'Wrong.', FORMAT_HTML, 0),
114 );
115 $q->answers[13]->correctanswerlength = 2;
116 $q->answers[13]->correctanswerformat = 1;
117 $q->answers[14]->correctanswerlength = 2;
118 $q->answers[14]->correctanswerformat = 1;
119 $q->answers[17]->correctanswerlength = 2;
120 $q->answers[17]->correctanswerformat = 1;
121 $q->qtype = question_bank::get_qtype('calculatedmulti');
122
123 $q->datasetloader = new qtype_calculated_test_dataset_loader(0, array(
124 array('a' => 1, 'b' => 5),
125 array('a' => 3, 'b' => 4),
126 ));
127
128 return $q;
129 }
603bd001 130}