public function test_matrix_eigenvalues() { $cs = array('A:matrix([7,1,3],[5,-3,4],[5,3,-4])', 'E:first(eigenvalues(A))', 'dt:determinant(A)'); foreach ($cs as $s) { $s1[] = new stack_cas_casstring($s); } $options = new stack_options(); $options->set_option('matrixparens', '('); $at1 = new stack_cas_session($s1, $options, 0); $this->assertEquals('[1-sqrt(66),sqrt(66)+1,-2]', $at1->get_value_key('E')); $this->assertEquals('130', $at1->get_value_key('dt')); $this->assertEquals('\\left(\\begin{array}{ccc} 7 & 1 & 3 \\\\ 5 & -3 & 4 \\\\ 5 & 3 & -4 \\end{array}\\right)', $at1->get_display_key('A')); }
public function test_assignmatrixelements_p2() { // Assign a value to matrix entries. $cs = array('A:matrix([1,2],[1,1])', 'A[1,2]:3'); foreach ($cs as $s) { $cs = new stack_cas_casstring($s); $cs->get_valid('t'); $s1[] = $cs; } $options = new stack_options(); $options->set_option('matrixparens', ''); $at1 = new stack_cas_session($s1, $options, 0); $at1 = new stack_cas_text("@A@", $at1, 0); $at1->get_display_castext(); $this->assertEquals('\\(\\begin{array}{cc} 1 & 3 \\\\ 1 & 1 \\end{array}\\)', $at1->get_display_castext()); }
// Very useful for converting existing text for use elswhere in Moodle, such as in pages of text. $string = stack_maths::replace_dollars($string); // Sort out simplification. if ('on' == $simp) { $simp = true; } else { $simp = false; } // Initially simplification should be on. if (!$vars and !$string) { $simp = true; } if ($string) { $options = new stack_options(); $options->set_site_defaults(); $options->set_option('simplify', $simp); $session = new stack_cas_session(null, $options); if ($vars) { $keyvals = new stack_cas_keyval($vars, $options, 0, 't'); $session = $keyvals->get_session(); $varerrs = $keyvals->get_errors(); } if (!$varerrs) { $ct = new stack_cas_text($string, $session, 0, 't'); $displaytext = $ct->get_display_castext(); $errs = $ct->get_errors(); $debuginfo = $ct->get_debuginfo(); } } echo $OUTPUT->header(); echo $OUTPUT->heading($title);
public static function run_test($test) { // Note: What we would really like to do is the following. // $el = stack_input_factory::make('algebraic', 'sans1', 'x'); // $el->set_parameter('insertStars', 1); // $el->set_parameter('strictSyntax', false); // $el->set_parameter('sameType', false); // $cs = $el->validate_student_response($test->rawstring); // However, we want to pull apart the bits to expose where the various errors occur. $cs = new stack_cas_casstring($test->rawstring); $cs->get_valid('s', false, 1); $cs->set_cas_validation_casstring('sans1', true, true, false, null); $phpvalid = $cs->get_valid(); if ($phpvalid) { // Trim off stack_validate_typeless([..], true, true). $phpcasstring = $cs->get_casstring(); $phpcasstring = substr($phpcasstring, 25); $phpcasstring = substr($phpcasstring, 0, strlen($phpcasstring) - 12); $outputphpcasstring = $phpcasstring; } else { $phpcasstring = ''; $outputphpcasstring = 'N/A...'; } $errors = $cs->get_errors(); $passed = true; if ('php_true' === $test->phpvalid) { $expected = true; } else { $expected = false; } if ($phpvalid != $expected) { $passed = false; $errors .= ' ' . stack_string('phpvalidatemismatch'); } if ($phpvalid && $phpcasstring != $test->phpcasstring) { $passed = false; $errors .= ' ' . stack_maxima_format_casstring($phpcasstring) . ' \\(\\neq \\) ' . stack_maxima_format_casstring($test->phpcasstring); } $casvalid = ''; $caserrors = ''; $casvalue = ''; $casdisplay = ''; if ($cs->get_valid()) { $options = new stack_options(); $options->set_option('simplify', false); $session = new stack_cas_session(array($cs), $options, 0); $session->instantiate(); $session = $session->get_session(); $cs = $session[0]; $caserrors = stack_maxima_translate($cs->get_errors()); $casvalue = stack_maxima_format_casstring($cs->get_value()); if ('cas_true' == $test->casvalid) { $casexpected = true; } else { $casexpected = false; } if ('' == $cs->get_value()) { $casvalid = false; } else { $casvalid = true; } if ($casexpected != $casvalid) { $passed = false; $caserrors .= ' ' . stack_string('casvalidatemismatch'); } $casdisplay = $cs->get_display(); } $answernote = $cs->get_answernote(); if ($answernote != $test->ansnotes) { $passed = false; $errors .= ' ' . stack_string('ansnotemismatch'); } return array($passed, $phpvalid, $phpcasstring, $errors, $casvalid, $caserrors, $casdisplay, $casvalue, $answernote); }
public function test_set_exception_5() { $opts = new stack_options(); $this->setExpectedException('stack_exception'); $opts->set_option('display', 'latex'); }