assertExecutionMatchesMATLAB
Class: matlabtest.coder.TestCase
Namespace: matlabtest.coder
Assert that generated C/C++ code execution results match MATLAB results
Since R2023a
Syntax
Description
assertExecutionMatchesMATLAB(
asserts that the execution results specified by testCase
,executionResults
)executionResults
for
the C/C++ code generated by MATLAB®
Coder™ match the execution of the MATLAB source code in the equivalence test case testCase
.
assertExecutionMatchesMATLAB(
returns diagnostic information specified by testCase
,executionResults
,diagnostic
)diagnostic
.
assertExecutionMatchesMATLAB(___,
specifies options using one or more name-value arguments in addition to the input arguments
in previous syntaxes.Name=Value
)
Input Arguments
testCase
— Test case
matlabtest.coder.TestCase
object
Test case, specified as a matlabtest.coder.TestCase
object.
executionResults
— Execution results for generated C/C++ code in equivalence tests
matlabtest.coder.results.ExecutionResults
object
Execution results for the generated C/C++ code in the equivalence tests, specified as a matlabtest.coder.results.ExecutionResults
object.
diagnostic
— Failure diagnostic information
string scalar | character vector | function handle | matlab.unittest.diagnostics.Diagnostic
object
Failure diagnostic information, specified as a:
String scalar or character vector
Function handle
matlab.automation.diagnostics.Diagnostic
object or object of one of its subclasses
Example: verifyExecutionMatchesMATLAB(testCase,executionResults,"Equivalence
test failed")
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Example: AbsTol=0.01
AbsTol
— Absolute tolerance
numeric array
Absolute tolerance, specified as a numeric array. The sizes of AbsTol
and
expected
, where expected
is the output of the
MATLAB execution of the function, must be the same or compatible. See Compatible Array Sizes for Basic Operations for more information about compatible arrays.
The tolerance is applied only to values of the same data type. For an absolute tolerance to be
satisfied, abs(expected-actual) <= AbsTol
must be
true
, where actual
is ExecutableOutput
.
RelTol
— Relative tolerance
numeric array
Relative tolerance, specified as a numeric array. The sizes of RelTol
and
expected
, where expected
is the output of the
MATLAB execution of the function, must be the same or compatible. See Compatible Array Sizes for Basic Operations for more information about compatible arrays.
The tolerance is applied only to values of the same data type. For a relative tolerance to be
satisfied, abs(expected-actual) <= RelTol.*abs(expected)
must be
true
, where actual
is ExecutableOutput
.
Examples
Generate C Code and Assert Equivalence
This example shows how to generate C code from a MATLAB function by using MATLAB Coder and assert equivalence.
The function myAdd
takes two numbers as inputs, adds them together, and outputs the result.
function y = myAdd(a,b) %#codegen y = a+b; end
This class definition file defines an equivalence test case that inherits from
matlabtest.coder.TestCase
. The test case in the
methods
block defines a test case that:
Builds C code from the
myAdd
function with inputs set to(0,0)
Executes the C code with inputs set to
(1,2)
Asserts that the execution of the C code matches the execution of the MATLAB function
myAdd
with the same inputs
classdef tEquivalence< matlabtest.coder.TestCase methods (Test) function tMyAdd(testCase) buildResults = build(testCase,"myAdd", ... Inputs={0,0}); executionResults = execute(testCase,buildResults, ... Inputs={1,2}); assertExecutionMatchesMATLAB(testCase,executionResults) end end end
Run the tMyAdd
test.
runtests("tEquivalence", ... procedureName="tMyAdd")
Running tMyAdd .. Done tMyAdd __________ ans = TestResult with properties: Name: 'tEquivalence/tMyAdd' Passed: 1 Failed: 0 Incomplete: 0 Duration: 2.6670 Details: [1×1 struct] Totals: 1 Passed, 0 Failed, 0 Incomplete. 2.667 seconds testing time.
Generate C Code, Assert Equivalence, and Return Custom Diagnostic Result
This example shows how to generate C code from a MATLAB function by using MATLAB Coder, assert equivalence, and return a custom diagnostic result.
The function myAdd
takes two numbers as inputs, adds them together, and outputs the result.
function y = myAdd(a,b) %#codegen y = a+b; end
This class definition file defines an equivalence test case that inherits from
matlabtest.coder.TestCase
. The test case in the
methods
block defines a test case that:
Builds C code from the
myAdd
function with inputs set to(0,0)
Executes the C code with inputs set to
(1,2)
Asserts that the execution of the C code matches the execution of the MATLAB function
myAdd
with the same inputs and returns a string if the test fails
classdef tEquivalence< matlabtest.coder.TestCase methods (Test) function tMyAdd(testCase) buildResults = build(testCase,"myAdd", ... Inputs={0,0}); executionResults = execute(testCase,buildResults, ... Inputs={1,2}); d = "Equivalence test failed."; assertExecutionMatchesMATLAB(testCase,executionResults,d) end end end
Run the tMyAdd
test.
runtests("tEquivalence", ... procedureName="tMyAdd")
Running tMyAdd .. Done tMyAdd __________ ans = TestResult with properties: Name: 'tEquivalence/tMyAdd' Passed: 1 Failed: 0 Incomplete: 0 Duration: 2.6670 Details: [1×1 struct] Totals: 1 Passed, 0 Failed, 0 Incomplete. 2.667 seconds testing time.
Generate C Code and Assert Equivalence Within Tolerances
This example shows how to generate C code from a MATLAB function by using MATLAB Coder and assert equivalence within tolerances.
The function myAdd
takes two numbers as inputs, adds them together, and outputs the result.
function y = myAdd(a,b) %#codegen y = a+b; end
This class definition file defines an equivalence test case that inherits from
matlabtest.coder.TestCase
. The test case in the
methods
block defines a test case that:
Builds C code from the
myAdd
function with inputs set to(0,0)
Executes the C code with inputs set to
(1,2)
Asserts that the execution of the C code matches the execution of the MATLAB function
myAdd
with the same inputs and within an absolute tolerance of0.01
classdef tEquivalence< matlabtest.coder.TestCase methods (Test) function tMyAdd(testCase) buildResults = build(testCase,"myAdd", ... Inputs={0,0}); executionResults = execute(testCase,buildResults, ... Inputs={1,2}); assertExecutionMatchesMATLAB(testCase,executionResults, ... AbsTol=0.01) end end end
Run the tMyAdd
test.
runtests("tEquivalence", ... procedureName="tMyAdd")
Running tMyAdd .. Done tMyAdd __________ ans = TestResult with properties: Name: 'tEquivalence/tMyAdd' Passed: 1 Failed: 0 Incomplete: 0 Duration: 2.6670 Details: [1×1 struct] Totals: 1 Passed, 0 Failed, 0 Incomplete. 2.667 seconds testing time.
Version History
Introduced in R2023a
See Also
Classes
matlabtest.coder.TestCase
|matlabtest.coder.results.ExecutionResults
|matlab.unittest.qualifications.Assertable
Functions
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)