Main Content

matlab.unittest.constraints.CellComparator クラス

パッケージ: matlab.unittest.constraints

cell 配列の比較演算子

説明

CellComparator は、cell 配列を比較します。

構築

CellComparator は、cell 配列の比較演算子を作成します。

CellComparator(compObj) は、cell 配列に含まれる値の比較に使用する比較演算子を定義する比較演算子 compObj を示します。既定では、セル比較演算子は空の cell 配列のみをサポートします。

CellComparator(compObj,Name,Value) は、1 つ以上の Name,Value のペアの引数で指定された追加オプションをもつ比較演算子を提供します。

CellComparator(Name,Value) は、1 つ以上の Name,Value のペアの引数で指定された追加オプションをもつ、空の cell 配列用の比較演算子を提供します。

入力引数

compObj

Comparator オブジェクト

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

Recursively

比較演算子が再帰的に機能するかどうかを示すインジケーター。false または true (logical 0 または 1) として指定します。この値が false の場合、データで比較演算子が再帰的に機能しません。

値が true の場合、セル比較演算子がサポートするデータ型が再帰で完全にサポートされます。以下に例を示します。

comp1 = CellComparator(StringComparator)
comp2 = CellComparator(StringComparator,'Recursively', true)
comp1 および comp2 は両方とも文字列の cell 配列と文字配列をサポートします。ただし、cell 配列または文字列を要素として再帰的に含む cell 配列をサポートするのは comp2 のみです。

既定値: false

プロパティ

Recursive

比較演算子が再帰的に動作するかどうかを示すインジケーター。名前と値のペアの引数 'Recursively' で指定します。

コピーのセマンティクス

値。値クラスがコピー操作に与える影響については、オブジェクトのコピーを参照してください。

すべて折りたたむ

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

import matlab.unittest.TestCase;
import matlab.unittest.constraints.CellComparator
import matlab.unittest.constraints.StringComparator
import matlab.unittest.constraints.IsEqualTo

testCase = TestCase.forInteractiveUse;

CellComparator を使用して、2 つ cell 配列がお互いに等しいことをテストします。

actual = {'abc','def'};
expected = {'abc','def'};
testCase.verifyThat(actual, IsEqualTo(expected,...
    'Using', CellComparator(StringComparator)))
Interactive verification passed.

既定では、CellComparator は空の cell 配列の比較のみをサポートします。このため、これを StringComparator に渡す必要があります。

実際の値を変更して、それを期待された値と比較します。制約を満たすには、大文字と小文字の区別および空白文字を無視するように作成します。

actual = {'ABC','D E F'};
testCase.verifyThat(actual, IsEqualTo(expected, 'Using', ...
    CellComparator(StringComparator), 'IgnoringWhitespace', ...
    true, 'IgnoringCase',true))
Interactive verification passed.

再帰演算を行う比較演算子を作成し、入れ子にされた文字ベクトルの cell 配列をテストします。

actual = {'abc',{'def','ghi'}};
expected = {'abc',{'def','ghi'}};

testCase.verifyThat(actual, IsEqualTo(expected, 'Using', ...
    CellComparator(StringComparator, 'Recursively', true)))
Interactive verification passed.

ヒント

  • ほとんどの場合、CellComparator オブジェクトを使用する必要はありません。cell 配列を含むさまざまなタイプのデータ間の等価性をテストする制約が IsEqualTo クラスで作成されます。

    CellComparator オブジェクトは、IsEqualTo クラスで実行される比較をオーバーライドする必要がある場合に使用します。たとえば、cell 配列に数値以外の値が含まれる場合に比較を失敗とするには、CellComparator オブジェクトをテストに含めます。この例では、C1C2 に数値以外の値が格納されているため、MATLAB® から例外がスローされます。

    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.CellComparator
    import matlab.unittest.constraints.NumericComparator
          
    C1 = {1,2,{3},'abc'}; 
    C2 = C1;
    
    testCase = matlab.unittest.TestCase.forInteractiveUse;
    testCase.verifyThat(C2,IsEqualTo(C1,'Using',CellComparator(NumericComparator)))
    

バージョン履歴

R2013a で導入