Main Content

matlab.unittest.constraints.HasField クラス

パッケージ: matlab.unittest.constraints
スーパークラス: matlab.unittest.constraints.BooleanConstraint

特定のフィールドを含む構造体を指定する制約

構築

HasField(fieldname) は、特定のフィールド fieldname を含む構造体を指定する制約を提供します。この制約が満たされるのは、実際の値が構造体であり、その構造体に fieldname という名前のフィールドが含まれる場合です。

入力引数

fieldname

制約を満たすために構造体に含まれなければならないフィールドの名前。文字ベクトルまたは string スカラーとして指定します。

プロパティ

Field

制約を満たすために構造体に含めなければならないフィールド名。このプロパティは、入力引数 fieldname を介してコンストラクターで設定します。

コピーのセマンティクス

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

すべて折りたたむ

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.HasField

testCase = TestCase.forInteractiveUse;

2 つのフィールドをもつ構造体 S を、次のように定義します。

S = struct('Tag', 123, 'Serial', 345);

構造体に 'Tag' フィールドがあることを検証します。

testCase.verifyThat(S, HasField('Tag'))
Interactive verification passed.

構造体に 'tag' フィールドがあることを検証します。

testCase.verifyThat(S, HasField('tag'))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
HasField failed.
--> The value did not have the expected field.
    
    Actual Fieldnames:
            'Tag'
            'Serial'
    Expected Fieldname:
            'tag'

Actual Value:
           Tag: 123
        Serial: 345

フィールド名の比較で大文字小文字を区別しているため、検証は失敗します。

構造体に 'Tag' フィールドがあることを検証します。

testCase.verifyThat(S, HasField('Tag'))
Interactive verification passed.

構造体に 'Tag' および 'Serial' のフィールドがあることを検証します。

testCase.verifyThat(S, HasField('Tag') & HasField('Serial'))
Interactive verification passed.

構造体に 'Name' フィールドがないことを検証します。

testCase.verifyThat(S, ~HasField('Name'))
Interactive verification passed.