Rev 1 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Test helpers for the drag-and-drop words into sentences question type.** @package qtype_ddwtos* @copyright 2010 The Open University* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/defined('MOODLE_INTERNAL') || die();/*** Test helper class for the drag-and-drop words into sentences question type.** @copyright 2010 The Open University* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class qtype_ddwtos_test_helper extends question_test_helper {public function get_test_questions() {return ['fox', 'maths', 'oddgroups', 'missingchoiceno', 'infinite', 'mathjax'];}/*** @return qtype_ddwtos_question*/public function make_ddwtos_question_fox() {question_bank::load_question_definition_classes('ddwtos');$dd = new qtype_ddwtos_question();test_question_maker::initialise_a_question($dd);$dd->name = 'Drag-and-drop words into sentences question';$dd->questiontext = 'The [[1]] brown [[2]] jumped over the [[3]] dog.';$dd->generalfeedback = 'This sentence uses each letter of the alphabet.';$dd->qtype = question_bank::get_qtype('ddwtos');$dd->shufflechoices = true;test_question_maker::set_standard_combined_feedback_fields($dd);$dd->choices = array(1 => array(1 => new qtype_ddwtos_choice('quick', 1),2 => new qtype_ddwtos_choice('slow', 1)),2 => array(1 => new qtype_ddwtos_choice('fox', 2),2 => new qtype_ddwtos_choice('dog', 2)),3 => array(1 => new qtype_ddwtos_choice('lazy', 3),2 => new qtype_ddwtos_choice('assiduous', 3)),);$dd->places = array(1 => 1, 2 => 2, 3 => 3);$dd->rightchoices = array(1 => 1, 2 => 1, 3 => 1);$dd->textfragments = array('The ', ' brown ', ' jumped over the ', ' dog.');return $dd;}/*** This is a simple question with choices in three groups.** @return stdClass data to create a ddwtos question.*/public function get_ddwtos_question_form_data_fox() {$fromform = new stdClass();$fromform->name = 'Drag-and-drop words into sentences question';$fromform->questiontext = array('text' => 'The [[1]] brown [[2]] jumped over the [[3]] dog.', 'format' => FORMAT_HTML);$fromform->defaultmark = 1.0;$fromform->generalfeedback = array('text' => 'This sentence uses each letter of the alphabet.', 'format' => FORMAT_HTML);$fromform->choices = array(array('answer' => 'quick', 'choicegroup' => '1'),array('answer' => 'fox', 'choicegroup' => '2'),array('answer' => 'lazy', 'choicegroup' => '3'),array('answer' => 'slow', 'choicegroup' => '1'),array('answer' => 'dog', 'choicegroup' => '2'),array('answer' => 'assiduous', 'choicegroup' => '3'),);test_question_maker::set_standard_combined_feedback_form_data($fromform);$fromform->shownumcorrect = 0;$fromform->penalty = 0.3333333;$fromform->status = \core_question\local\bank\question_version_status::QUESTION_STATUS_READY;$fromform->hint = [['text' => 'Fast','format' => FORMAT_HTML,],];return $fromform;}/*** Similar to the 'fox' example above, but using different, non-continuous group numbers.** @return stdClass data to create a ddwtos question.*/public function get_ddwtos_question_form_data_oddgroups() {$fromform = new stdClass();$fromform->name = 'Drag-and-drop words with strange groups';$fromform->questiontext = array('text' => 'The [[1]] brown [[2]] jumped over the [[3]] dog.', 'format' => FORMAT_HTML);$fromform->defaultmark = 1.0;$fromform->generalfeedback = array('text' => 'This sentence uses each letter of the alphabet.', 'format' => FORMAT_HTML);$fromform->choices = array(array('answer' => 'quick', 'choicegroup' => '5'),array('answer' => 'fox', 'choicegroup' => '7'),array('answer' => 'lazy', 'choicegroup' => '3'),array('answer' => 'slow', 'choicegroup' => '5'),array('answer' => 'dog', 'choicegroup' => '7'),array('answer' => 'assiduous', 'choicegroup' => '3'),);test_question_maker::set_standard_combined_feedback_form_data($fromform);$fromform->shownumcorrect = 0;$fromform->penalty = 0.3333333;$fromform->status = \core_question\local\bank\question_version_status::QUESTION_STATUS_READY;return $fromform;}/*** Get data required to save a drag-drop into text question where the author* missed out one of the group numbers.** @return stdClass data to create a ddwtos question.*/public function get_ddwtos_question_form_data_missingchoiceno() {$fromform = new stdClass();$fromform->name = 'Drag-drop into text question with one index missing';$fromform->questiontext = ['text' => 'The [[1]] sat on the [[3]].', 'format' => FORMAT_HTML];$fromform->defaultmark = 1.0;$fromform->generalfeedback = array('text' => 'The right answer is: "The cat sat on the mat."', 'format' => FORMAT_HTML);$fromform->choices = array(array('answer' => 'cat', 'choicegroup' => '1'),array('answer' => '', 'choicegroup' => '1'),array('answer' => 'mat', 'choicegroup' => '1'),);test_question_maker::set_standard_combined_feedback_form_data($fromform);$fromform->shownumcorrect = 0;$fromform->penalty = 0.3333333;$fromform->status = \core_question\local\bank\question_version_status::QUESTION_STATUS_READY;return $fromform;}/*** Get data required to save a drag-drop into text question where the the answer contain equation*** @return stdClass data to create a ddwtos question.*/public function get_ddwtos_question_form_data_mathjax() {$fromform = new stdClass();$fromform->name = 'Drag-and-drop words into sentences question with equation';$fromform->questiontext = ['text' => 'Fill in the correct mathjax equation: y = 2, x =4 : [[1]]', 'format' => FORMAT_HTML];$fromform->defaultmark = 1.0;$fromform->generalfeedback = ['text' => 'The right answer is: "y = x^2"', 'format' => FORMAT_HTML];$fromform->choices = [['answer' => '$$ y = x^2 $$', 'choicegroup' => '1'],['answer' => '$$ y = x^5 $$', 'choicegroup' => '1'],];test_question_maker::set_standard_combined_feedback_form_data($fromform);$fromform->shownumcorrect = 0;$fromform->penalty = 0.3333333;$fromform->status = \core_question\local\bank\question_version_status::QUESTION_STATUS_READY;return $fromform;}/*** @return qtype_ddwtos_question*/public function make_ddwtos_question_maths() {question_bank::load_question_definition_classes('ddwtos');$dd = new qtype_ddwtos_question();test_question_maker::initialise_a_question($dd);$dd->name = 'Drag-and-drop words into sentences question';$dd->questiontext = 'Fill in the operators to make this equation work: ' .'7 [[1]] 11 [[2]] 13 [[1]] 17 [[2]] 19 = 3';$dd->generalfeedback = 'This sentence uses each letter of the alphabet.';$dd->qtype = question_bank::get_qtype('ddwtos');$dd->shufflechoices = true;test_question_maker::set_standard_combined_feedback_fields($dd);$dd->choices = array(1 => array(1 => new qtype_ddwtos_choice('+', 1, true),2 => new qtype_ddwtos_choice('-', 1, true),3 => new qtype_ddwtos_choice('*', 1, true),4 => new qtype_ddwtos_choice('/', 1, true),));$dd->places = array(1 => 1, 2 => 1, 3 => 1, 4 => 1);$dd->rightchoices = array(1 => 1, 2 => 2, 3 => 1, 4 => 2);$dd->textfragments = array('7 ', ' 11 ', ' 13 ', ' 17 ', ' 19 = 3');return $dd;}/*** This is a simple question with infinite mode.** @return stdClass data to create a ddwtos question.*/public function get_ddwtos_question_form_data_infinite() {$fromform = new stdClass();$fromform->name = 'Drag-and-drop infinite question';$fromform->questiontext = ['text' => 'One [[1]] Two [[2]] Three [[3]]', 'format' => FORMAT_HTML];$fromform->defaultmark = 1.0;$fromform->generalfeedback = ['text' => 'This is general feedback', 'format' => FORMAT_HTML];$fromform->choices = [['answer' => 'Option1', 'choicegroup' => '1', 'infinite' => true],['answer' => 'Option2', 'choicegroup' => '1', 'infinite' => true],['answer' => 'Option3', 'choicegroup' => '1', 'infinite' => true]];test_question_maker::set_standard_combined_feedback_form_data($fromform);$fromform->shownumcorrect = 0;$fromform->penalty = 0.3333333;$fromform->status = \core_question\local\bank\question_version_status::QUESTION_STATUS_READY;return $fromform;}}