Main Content

matlab.unittest.constraints.NumericComparator クラス

名前空間: matlab.unittest.constraints

数値配列の比較演算子

説明

matlab.unittest.constraints.NumericComparator クラスは、数値配列の比較演算子を提供します。この比較演算子をテストで使用するには、NumericComparator インスタンスを作成し、それを IsEqualTo 制約コンストラクターの名前と値の引数 Using の値として指定します。

作成

説明

c = matlab.unittest.constraints.NumericComparator は、数値配列の比較演算子を作成します。この比較演算子は、実際の値と期待される値の数値クラス、サイズ、実数/複素数、およびスパース性が同じで、それらが関数 isequaln で等しいと判定される場合に満たされます。

c = matlab.unittest.constraints.NumericComparator("Within",tol) は、指定された許容誤差を比較で使用します。この構文を使用する場合、比較演算子で実際の値と期待される値のクラス、サイズ、スパース性の等価性が最初にチェックされます。これらのいずれかのチェックに失敗すると、比較演算子は満たされません。これらのチェックにパスした場合に、実数/複素数のチェックまたは isequaln のチェックに失敗すると、比較が比較演算子から tol にデリゲートされます。

入力引数

すべて展開する

許容誤差。matlab.unittest.constraints.Tolerance オブジェクトとして指定します。

この引数は Tolerance プロパティを設定します。

例: matlab.unittest.constraints.AbsoluteTolerance(1)

例: matlab.unittest.constraints.AbsoluteTolerance(1) | matlab.unittest.constraints.RelativeTolerance(0.1)

プロパティ

すべて展開する

許容誤差。matlab.unittest.constraints.Tolerance オブジェクトとして返されます。

このプロパティは入力引数 tol によって設定されます。

属性:

GetAccess
public
SetAccess
private

すべて折りたたむ

NumericComparator クラスを使用して、実際の値と期待される値を比較します。

最初に、この例で使用するクラスをインポートします。

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsEqualTo
import matlab.unittest.constraints.NumericComparator
import matlab.unittest.constraints.AbsoluteTolerance

対話型テスト用にテスト ケースを作成します。

testCase = TestCase.forInteractiveUse;

NumericComparator インスタンスを使用して、数値をそれ自体と比較します。テストはパスします。

testCase.verifyThat(3.14,IsEqualTo(3.14,"Using",NumericComparator))
Verification passed.

pi の値を 3.14 と比較します。テストは失敗します。

testCase.verifyThat(pi,IsEqualTo(3.14,"Using",NumericComparator))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> NumericComparator failed.
        --> The numeric values are not equal using "isequaln".
        --> Failure table:
                     Actual         Expected           Error              RelativeError    
                ________________    ________    ___________________    ____________________
                                                                                           
                3.14159265358979      3.14      0.00159265358979299    0.000507214519042354
        
        Actual Value:
           3.141592653589793
        Expected Value:
           3.140000000000000
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareValuesUsingNumericComparatorExample.m (CompareValuesUsingNumericComparatorExample) at 21

絶対許容誤差 0.01 を使用して、テストをもう一度実行します。テストはパスします。

testCase.verifyThat(pi,IsEqualTo(3.14, ...
    "Using",NumericComparator("Within",AbsoluteTolerance(0.01))))
Verification passed.

ヒント

  • ほとんどの場合、NumericComparator インスタンスを使用する必要はありません。数値配列を含むさまざまなデータ型の等価性をテストする制約が IsEqualTo クラスで作成されます。

    NumericComparator インスタンスは、IsEqualTo クラスで実行される比較をオーバーライドする必要がある場合に使用します。たとえば、実際の値と期待される値が数値でない場合に比較を失敗とするには、NumericComparator インスタンスをテストに含めます。NumericComparator を使用して、cell 配列、構造体、ディクショナリ、table、および MATLAB® オブジェクト配列のパブリック プロパティに格納される値を制限することもできます。次の例では、実際の値と期待される値が cell 配列であるため、MATLAB からエラーがスローされます。

    import matlab.unittest.TestCase
    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.NumericComparator
    
    testCase = TestCase.forInteractiveUse;
    exp = {1,2,3}; 
    act = exp;
    testCase.verifyThat(act,IsEqualTo(exp,"Using",NumericComparator))
    

バージョン履歴

R2013a で導入