diff --git a/question/classes/statistics/responses/analysis_for_class.php b/question/classes/statistics/responses/analysis_for_class.php index 9c83fa13bc2..57ef4745c7e 100644 --- a/question/classes/statistics/responses/analysis_for_class.php +++ b/question/classes/statistics/responses/analysis_for_class.php @@ -107,7 +107,7 @@ class analysis_for_class { return true; } else if (count($this->actualresponses) == 1) { $onlyactualresponse = reset($this->actualresponses); - return !$onlyactualresponse->response_matches($this->modelresponse); + return (string)$onlyactualresponse != $this->modelresponse; } return false; } diff --git a/question/type/numerical/question.php b/question/type/numerical/question.php index 8df2ce93486..c86f2fffc54 100644 --- a/question/type/numerical/question.php +++ b/question/type/numerical/question.php @@ -249,7 +249,7 @@ class qtype_numerical_question extends question_graded_automatically { } public function classify_response(array $response) { - if (empty($response['answer'])) { + if (!$this->is_gradable_response($response)) { return array($this->id => question_classified_response::no_response()); } diff --git a/question/type/numerical/tests/question_test.php b/question/type/numerical/tests/question_test.php index 84fc7d0d7c4..6769864a71f 100644 --- a/question/type/numerical/tests/question_test.php +++ b/question/type/numerical/tests/question_test.php @@ -211,6 +211,9 @@ class qtype_numerical_question_test extends advanced_testcase { $this->assertEquals(array( new question_classified_response(17, '42', 0.0)), $num->classify_response(array('answer' => '42'))); + $this->assertEquals(array( + new question_classified_response(17, '0', 0.0)), + $num->classify_response(array('answer' => '0'))); $this->assertEquals(array( new question_classified_response(13, '3.14', 1.0)), $num->classify_response(array('answer' => '3.14'))); @@ -230,6 +233,9 @@ class qtype_numerical_question_test extends advanced_testcase { $this->assertEquals(array( new question_classified_response(0, '42', 0.0)), $num->classify_response(array('answer' => '42'))); + $this->assertEquals(array( + new question_classified_response(0, '0', 0.0)), + $num->classify_response(array('answer' => '0'))); $this->assertEquals(array( question_classified_response::no_response()), $num->classify_response(array('answer' => ''))); @@ -292,4 +298,4 @@ class qtype_numerical_question_test extends advanced_testcase { new question_classified_response(13, '1 332', 0.8)), $num->classify_response(array('answer' => '1 332'))); } -} \ No newline at end of file +}