matlabtest.coder.TestCase.assertExecutionMatchesMATLAB - Assert that generated C/C++ code execution results match MATLAB results - MATLAB (original) (raw)

Class: matlabtest.coder.TestCase
Namespace: matlabtest.coder

Assert that generated C/C++ code execution results match MATLAB results

Since R2023a

Syntax

Description

assertExecutionMatchesMATLAB([testCase](#mw%5F7b562602-e201-469a-af2d-0658bcda0e2a%5Fsep%5Fmw%5Fcc46feec-90aa-472c-a090-245972d4db9a),[executionResults](#mw%5F7b562602-e201-469a-af2d-0658bcda0e2a%5Fsep%5Fmw%5Fdf4d6c59-6b73-4584-a191-fa2fe4e79c51)) asserts that the execution results specified by executionResults for the C/C++ code generated by MATLAB® Coder™ match the execution of the MATLAB source code in the equivalence test case testCase.

example

assertExecutionMatchesMATLAB([testCase](#mw%5F7b562602-e201-469a-af2d-0658bcda0e2a%5Fsep%5Fmw%5Fcc46feec-90aa-472c-a090-245972d4db9a),[executionResults](#mw%5F7b562602-e201-469a-af2d-0658bcda0e2a%5Fsep%5Fmw%5Fdf4d6c59-6b73-4584-a191-fa2fe4e79c51),[diagnostic](#mw%5F7b562602-e201-469a-af2d-0658bcda0e2a%5Fsep%5Fmw%5F2675f0f8-07e5-4f3b-9263-aa2d6a68c126)) returns diagnostic information specified by diagnostic.

example

assertExecutionMatchesMATLAB(___,[Name=Value](#namevaluepairarguments)) specifies options using one or more name-value arguments in addition to the input arguments in previous syntaxes.

example

Input Arguments

expand all

Failure diagnostic information, specified as a:

Example: verifyExecutionMatchesMATLAB(testCase,executionResults,"Equivalence test failed")

Name-Value Arguments

expand all

Specify optional pairs of arguments asName1=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

Absolute tolerance, specified as a numeric array. The sizes of AbsTol andexpected, 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 betrue, where actual is [ExecutableOutput](matlabtest.coder.results.executionresults-class.html#mw%5F55060825-ebd1-4072-af03-3e269f9dcae0).

Relative tolerance, specified as a numeric array. The sizes of RelTol andexpected, 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 betrue, where actual is [ExecutableOutput](matlabtest.compiler.results.executionresults-class.html#mw%5F0b1ee524-966a-487a-aa9e-f4e18dd935da).

Examples

expand all

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 frommatlabtest.coder.TestCase. The test case in themethods block defines a test case that:

  1. Builds C code from the myAdd function with inputs set to(0,0)
  2. Executes the C code with inputs set to (1,2)
  3. 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.

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 frommatlabtest.coder.TestCase. The test case in themethods block defines a test case that:

  1. Builds C code from the myAdd function with inputs set to(0,0)
  2. Executes the C code with inputs set to (1,2)
  3. 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.

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 frommatlabtest.coder.TestCase. The test case in themethods block defines a test case that:

  1. Builds C code from the myAdd function with inputs set to(0,0)
  2. Executes the C code with inputs set to (1,2)
  3. 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 of 0.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

Functions

Topics