Test - Maple Help

CodeTools

 Test
 facilitate the creation of Maple code test suites

 Calling Sequence Test( input, expected) Test( input, expected, verification)

Parameters

 input - expression to be evaluated for correctness expected - expected result of evaluation of input verification - expression of type verification, or one of the names testerror or testnoerror, or a procedure which returns type/verify similar to the verify command.

Options

 • label = string or posint
 A label for the test used in the pass/fail message printed. It is "Test i" by default, where i is replaced by a number that counts how many times Test has been called in this session. These labels are important because they are used by the TestFailures command to indicate which test cases have failed.
 • quiet = truefalse
 If true, no pass/fail messages will be printed.
 • boolout = truefalse
 If true, true will be returned if the test passed, and false otherwise.  If false, the default, NULL will be returned if the test passed, and an exception will be thrown if it fails.

Description

 • The CodeTools[Test] command is a front-end utility used for the creation and verification of a suite of Maple test projects.  By default it returns a NULL result if the test succeeds and an error if the test fails.
 • If only input and expected are given, the input is evaluated using verify and compared against the expected result.
 • If input is a string, it will be parsed using parse.
 • If the expected output is an expression sequence, then input and expected should each be enclosed in a list.
 • If the third argument type is a verification expression then it is passed as a third verify argument for testing.
 • The CodeTools[Test] command knows about two special verifications:
 – testnoerror ignores the expected parameter and causes the test to fail when there is an exception during the evaluation of input.
 – testerror is nearly the opposite of testnoerror and causes the test to pass only if there is an exception during the evaluation, and expected is a string that matches the error message prefix.
 • If the third argument is not a verification  type or not one of above mentioned special verifiers, then it must be a procedure with a type/verify return.
 • If more than three parameters are passed to "Test" , the others are passed as addition arguments to the specified verifier.

Examples

 > $\mathrm{with}\left(\mathrm{CodeTools}\right)$
 $\left[{\mathrm{CPUTime}}{,}{\mathrm{DecodeName}}{,}{\mathrm{EncodeName}}{,}{\mathrm{GCTime}}{,}{\mathrm{Profiling}}{,}{\mathrm{ProgramAnalysis}}{,}{\mathrm{RealTime}}{,}{\mathrm{RecursiveMembers}}{,}{\mathrm{Test}}{,}{\mathrm{TestFailures}}{,}{\mathrm{ThreadSafetyCheck}}{,}{\mathrm{Usage}}\right]$ (1)

Tests that pass.

 > $\mathrm{Test}\left(\mathrm{int}\left(x,{x}^{2}\right),"integration range or variable must",'\mathrm{testerror}',\mathrm{label}="Test Pass 1"\right)$
 Test Pass 1 passed
 > $\mathrm{Test}\left(\mathrm{int}\left(x,{x}^{2}\right),"",'\mathrm{testerror}',\mathrm{label}="Test Pass 2"\right)$
 Test Pass 2 passed
 > $\mathrm{Test}\left(\mathrm{int}\left({x}^{2},x\right),"",'\mathrm{testnoerror}',\mathrm{label}="Test Pass 3"\right)$
 Test Pass 3 passed
 > $\mathrm{Test}\left(\mathrm{int}\left(x,x\right),\frac{{x}^{2}}{2},\mathrm{label}="Test Pass 4"\right)$
 Test Pass 4 passed
 > $\mathrm{Test}\left(\mathrm{int}\left(x,x\right),{\left(\frac{x}{\mathrm{sqrt}\left(2\right)}\right)}^{2},'\mathrm{simplify}',\mathrm{label}="Test Pass 5",'\mathrm{boolout}'\right)$
 Test Pass 5 passed
 ${\mathrm{true}}$ (2)
 > $A≔\mathrm{Matrix}\left(\left[\left[1,2\right],\left[3,4\right]\right]\right)$
 ${A}{≔}\left[\begin{array}{cc}{1}& {2}\\ {3}& {4}\end{array}\right]$ (3)
 > $\mathrm{Test}\left(A,A,'\mathrm{label}'="Test Pass 6",'\mathrm{boolout}','\mathrm{quiet}'\right)$
 ${\mathrm{true}}$ (4)
 > $A≔⟨⟨1|2⟩,⟨3|4⟩⟩$
 ${A}{≔}\left[\begin{array}{cc}{1}& {2}\\ {3}& {4}\end{array}\right]$ (5)
 > $B≔⟨⟨1|2.001⟩,⟨2.999|4⟩⟩$
 ${B}{≔}\left[\begin{array}{cc}{1}& {2.001}\\ {2.999}& {4}\end{array}\right]$ (6)
 > $\mathrm{CodeTools}:-\mathrm{Test}\left(A,B,'\mathrm{float}\left(1,\mathrm{digits}=4\right)','\mathrm{label}'="Test Pass 7",'\mathrm{boolout}','\mathrm{quiet}'\right)$
 ${\mathrm{true}}$ (7)

Tests that fail.

 > $\mathrm{Test}\left(\mathrm{int}\left({x}^{2},x\right),"integration range or variable must",\mathrm{testerror},\mathrm{label}="Test Fail 1"\right)$
 Test Fail 1 failed  Expected error but did not receive one
 > $\mathrm{Test}\left(\mathrm{int}\left(x,{x}^{2}\right),"",'\mathrm{testnoerror}',\mathrm{label}="Test Fail 2"\right)$
 Test Fail 2 failed  Expected no errors, but got:  Error, integration range or variable must be specified in the second argument, got x^2
 > $\mathrm{Test}\left(\mathrm{int}\left(x,x\right),\frac{{x}^{2}}{4},'\mathrm{simplify}',\mathrm{label}="Test Fail 3"\right)$
 Test Fail 3 failed  Expected result : 1/4*x^2  Evaluated result: 1/2*x^2
 > $\mathrm{Test}\left(\mathrm{int}\left(x,x\right),{\left(\frac{x}{\mathrm{sqrt}\left(2\right)}\right)}^{2},\mathrm{label}="Test Fail 4",'\mathrm{boolout}'\right)$
 Test Fail 4 failed  Expected result : x^2/sqrt(2)^2  Evaluated result: 1/2*x^2
 ${\mathrm{false}}$ (8)

The boolout and quiet options work well together.

 > $\mathrm{Test}\left(\mathrm{int}\left(x,{x}^{2}\right),"",'\mathrm{testerror}','\mathrm{boolout}','\mathrm{quiet}'\right)$
 ${\mathrm{true}}$ (9)
 > $\mathrm{Test}\left(\mathrm{int}\left({x}^{2},x\right),"",'\mathrm{testerror}','\mathrm{boolout}','\mathrm{quiet}'\right)$
 ${\mathrm{false}}$ (10)

Compatibility

 • The CodeTools[Test] command was introduced in Maple 15.