Main Content

matlab.unittest.constraints.IsSameSetAs クラス

名前空間: matlab.unittest.constraints
スーパークラス: matlab.unittest.constraints.BooleanConstraint

セットに含まれる要素が別のセットと同じであるかどうかをテスト

説明

matlab.unittest.constraints.IsSameSetAs クラスは、セットが別のセットと同じであるかどうかをテストするための制約を提供します。セットに含まれる要素が同じであれば、異なる順序、異なる数、異なる形状でもかまいません。

この制約では、関数 ismember を使用してセットを比較します。そのため、制約で使用する実際の値と期待される値は関数 ismember でサポートされていなければなりません。

作成

説明

c = matlab.unittest.constraints.IsSameSetAs(expected) は、セットに含まれる要素が expected のセットと同じであるかどうかをテストするための制約を作成します。実際のセット actual について、制約が満たされるのは ismember(actual,expected)ismember(expected,actual) の両方からすべての値が true である配列が返され、かつ次の条件の少なくとも 1 つが満たされているときです。

  • actualexpected のクラスが同じである。

  • isobject(actual)true を返す。

  • isobject(expected)true を返す。

c = matlab.unittest.constraints.IsSameSetAs(expected,RespectingCount=tf) は、要素数を考慮に入れるかどうかも指定します。tftrue の場合、要素が出現する回数が実際のセットと期待されるセットで異なっていると制約が満たされません。 (R2024a 以降)

入力引数

すべて展開する

期待されるセット。関数 ismember でサポートされる任意のデータ型の値として指定します。

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

例: {'a','b','c'}

例: [1 1 2 3 5 8]

R2024a 以降

実際のセットと期待されるセットを比較するときに要素数を考慮に入れるオプション。数値または logical 0 (false) または 1 (true) として指定します。値が true の場合、実際のセットに要素が出現する回数と expected に要素が出現する回数が異なっていると制約が満たされません。既定では、要素が出現する回数は制約で無視されます。

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

プロパティ

すべて展開する

期待されるセット。関数 ismember でサポートされる任意のデータ型の値として返されます。このプロパティの値は、制約の作成時に指定します。

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

属性:

GetAccess
public
SetAccess
private

R2024a 以降

実際のセットと期待されるセットを比較するときに要素数を考慮に入れるオプション。データ型 logical0 または 1 として返されます。既定では、要素が出現する回数は制約で無視されます。

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

属性:

GetAccess
public
SetAccess
private

すべて折りたたむ

IsSameSetAs 制約を使用して、セットを比較します。

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsSameSetAs

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

testCase = TestCase.forInteractiveUse;

{'a','b','c'}{'c','a','b'} と同じセットであることを検証します。実際のセットと期待されるセットで要素の順序は異なりますが、セットに含まれる要素が同じであるため、テストはパスします。

testCase.verifyThat({'a','b','c'},IsSameSetAs({'c','a','b'}))
Verification passed.

{'a','b','d'} を期待されるセットとして、テストをもう一度実行します。セットに含まれる要素が異なるため、テストは失敗します。

testCase.verifyThat({'a','b','c'},IsSameSetAs({'a','b','d'}))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsSameSetAs failed.
    --> The actual value contains 1 element(s) not found in the expected set:
        --> Element at index 3:
                {'c'}
    --> The actual value is missing 1 element(s) found in the expected set:
        --> Element at index 3:
                {'d'}
    
    Actual Value:
      1×3 cell array
    
        {'a'}    {'b'}    {'c'}
    Expected Set:
      1×3 cell array
    
        {'a'}    {'b'}    {'d'}

{'a','b','c'}{'a'} と同じセットでないことを検証します。

testCase.verifyThat({'a','b','c'},~IsSameSetAs({'a'}))
Verification passed.

IsSameSetAs 制約を使用して、数値ベクトル [1 2 3][3; 2; 1] を比較します。要素の順序とベクトルの形状は異なりますが、セットに含まれる要素が同じであるため、テストはパスします。

testCase.verifyThat([1 2 3],IsSameSetAs([3; 2; 1]))
Verification passed.

[1 2 3][1 2 3 1 2] と同じセットであるかどうかをテストします。セットに含まれる要素が同じあるため、テストはパスします。既定では、実際のセットと期待されるセットを比較するときに、要素が出現する回数は制約で無視されます。

testCase.verifyThat([1 2 3],IsSameSetAs([1 2 3 1 2]))
Verification passed.

要素数を考慮に入れて、実際のセットと期待されるセットをより厳密に比較します。要素 12 の出現回数が実際のセットと期待されるセットで異なるため、テストは失敗します。

testCase.verifyThat([1 2 3],IsSameSetAs([1 2 3 1 2], ...
    RespectingCount=true))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsSameSetAs failed.
    --> The actual value contains at least one element with a different count in the expected set.
        --> Actual value at index 1 does not respect the element count.
             Value:
                 1
             Actual Count: 1
             Expected Count: 2
    
    Actual Value:
         1     2     3
    Expected Set:
         1     2     3     1     2

バージョン履歴

R2018a で導入

すべて展開する