matlabtest.coder.TestCase.execute - Execute generated C/C++ code in equivalence tests - MATLAB (original) (raw)

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

Execute generated C/C++ code in equivalence tests

Since R2023a

Syntax

Description

[executionResults](#mw%5F1b966ecb-8744-47e4-919b-7314a2b4a907) = execute([testCase](#mw%5F838be1e2-5e79-4f68-bdcb-b354f7cc7abb%5Fsep%5Fmw%5Fcc46feec-90aa-472c-a090-245972d4db9a),[buildResults](#mw%5F60ddef31-bc1c-48e6-9bb9-c9a1d231db3e)) executes the generated C/C++ code in the build results objectbuildResults with the same inputs that were used to generate the C/C++ code in the equivalence test case testCase.

example

[executionResults](#mw%5F1b966ecb-8744-47e4-919b-7314a2b4a907) = execute(___,[Name=Value](#namevaluepairarguments)) specifies options using one or more name-value arguments in addition to the input arguments in previous syntaxes.

example

Input Arguments

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: Inputs={1,2}

Run-time inputs, specified as a cell array. Each element in the cell array corresponds to an input to the function. Use this argument to execute the function with different inputs than the inputs used to generate the C/C++ code.

Example: Inputs={1,2}

Entry-point function name, specified as a string scalar or character vector. Use this argument when you execute C/C++ code that you generated outside of an equivalence test that has multiple entry-point functions.

Example: EntryPoint="myAdd"

Output Arguments

Examples

expand all

This example shows how to generate C code from a MATLAB® function that has no inputs and test for equivalence by using MATLAB Coder™.

The function helloWorld displays a string of text.

function y = helloWorld y = "Hello World!"; 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:

  1. Builds C code from the helloWorld function
  2. Executes the C code with no inputs
  3. Verifies the execution of the C code against the execution of the MATLAB function helloWorld

classdef tEquivalence < matlabtest.coder.TestCase methods (Test) function tHelloWorld(testCase) buildResults = build(testCase,"helloWorld");
executionResults = execute(testCase,buildResults); verifyExecutionMatchesMATLAB(testCase,executionResults) end end end

Run the tHelloWorld test.

runtests("tEquivalence", ... procedureName="tHelloWorld")

Running tHelloWorld .. Done tHelloWorld


ans = TestResult with properties:

      Name: 'tEquivalence/tHelloWorld'
    Passed: 1
    Failed: 0
Incomplete: 0
  Duration: 2.8921
   Details: [1×1 struct]

Totals: 1 Passed, 0 Failed, 0 Incomplete. 2.8921 seconds testing time.

This example shows how to generate C code from a MATLAB function and test for equivalence by using MATLAB Coder.

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:

  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. Verifies the execution of the C code against the execution of the MATLAB function myAdd with the same inputs and 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}); verifyExecutionMatchesMATLAB(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