From: dpvc v. a. <we...@ma...> - 2008-09-23 22:01:41
|
Log Message: ----------- Fix the check for equivalent answers so that it uses the limits and other settings from the answer checker and the original formula object. Modified Files: -------------- pg/lib/Value: AnswerChecker.pm Revision Data ------------- Index: AnswerChecker.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value/AnswerChecker.pm,v retrieving revision 1.120 retrieving revision 1.121 diff -Llib/Value/AnswerChecker.pm -Llib/Value/AnswerChecker.pm -u -r1.120 -r1.121 --- lib/Value/AnswerChecker.pm +++ lib/Value/AnswerChecker.pm @@ -1646,10 +1646,14 @@ my $self = shift; my $ans = shift; $ans->{_filter_name} = "produce_equivalence_message"; return $ans if $ans->{ans_message}; # don't overwrite other messages - $ans->{prev_formula} = Parser::Formula($self->{context},$ans->{prev_ans}); + my $context = $self->context; + $ans->{prev_formula} = Parser::Formula($context,$ans->{prev_ans}); if (defined($ans->{prev_formula}) && defined($ans->{student_formula})) { - my $prev = eval {$self->promote($ans->{prev_formula})}; break unless defined($prev); - $ans->{prev_equals_current} = Value::cmp_compare($prev,$ans->{student_formula},{}); + my $prev = eval {$self->promote($ans->{prev_formula})->inherit($self)}; # inherit limits, etc. + break unless defined($prev); + $context->{answerHash} = $ans; # values here can override context flags + $ans->{prev_equals_current} = Value::cmp_compare($prev,$ans->{student_formula},$ans); + $context->{answerHash} = undef; if ( !$ans->{isPreview} # not preview mode and $ans->{prev_equals_current} # equivalent and $ans->{prev_ans} ne $ans->{original_student_ans}) # but not identical |