Main Content

matlab.unittest.constraints.IsEqualTo クラス

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

等価性をテストするための制約

説明

matlab.unittest.constraints.IsEqualTo クラスは、値の等価性をテストするための制約を提供します。比較の詳細は、期待される値のクラスに応じて異なります。

作成

説明

c = matlab.unittest.constraints.IsEqualTo(expected) は、期待される値の等価性をテストするための制約を作成します。

c = matlab.unittest.constraints.IsEqualTo(expected,Name,Value) は、1 つ以上の名前と値の引数を使用して追加のオプションを設定します。たとえば、c = matlab.unittest.constraints.IsEqualTo(expected,"IgnoringCase",true) は大文字と小文字を区別しない制約を作成します。

入力引数

すべて展開する

期待される値。任意のデータ型の値として指定します。

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

名前と値の引数

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

例: c = matlab.unittest.constraints.IsEqualTo(expected,IgnoringCase=true)

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

例: c = matlab.unittest.constraints.IsEqualTo(expected,"IgnoringCase",true)

テキスト値を比較するときに大文字小文字の区別を無視するかどうか。数値または logical 0 (false) または 1 (true) として指定します。既定では、制約で大文字と小文字が区別されます。

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

テキスト値を比較するときに空白を無視するかどうか。数値または logical 0 (false) または 1 (true) として指定します。既定では、制約で空白文字が区別されます。空白文字は、スペース (' ')、フォーム フィード ('\f')、改行 ('\n')、キャリッジ リターン ('\r')、水平タブ ('\t')、垂直タブ ('\v') です。

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

構造体配列を比較するときに無視するフィールド。string 配列または文字ベクトルの cell 配列として指定します。指定したフィールドの値は制約で比較されません。

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

例: "IgnoringFields","field1"

比較をデリゲートする比較演算子。matlab.unittest.constraints 名前空間において比較演算子として分類されるクラスのオブジェクト ベクトルとして指定します。

比較演算子と IsEqualTo 制約に共通の名前と値の引数がある場合、IsEqualTo に渡された値によって比較演算子に渡された対応する値がオーバーライドされます。たとえば、次のテストでは IsEqualTo コンストラクターの名前と値の引数 IgnoringCase の値によって StringComparator コンストラクターで指定された値がオーバーライドされるため、このテストはパスします。

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

testCase = TestCase.forInteractiveUse;
testCase.verifyThat("Text",IsEqualTo("text","IgnoringCase",true, ...
    "Using",StringComparator("IgnoringCase",false)))

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

例: "Using",matlab.unittest.constraints.NumericComparator

例: "Using",matlab.unittest.constraints.PublicPropertyComparator("Recursively",true)

例: "Using",[matlab.unittest.constraints.LogicalComparator matlab.unittest.constraints.NumericComparator]

比較で使用する許容誤差。matlab.unittest.constraints.Tolerance オブジェクトとして指定します。

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

例: "Within",matlab.unittest.constraints.AbsoluteTolerance(1)

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

プロパティ

すべて展開する

期待される値。任意のデータ型の値として返されます。

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

属性:

GetAccess
public
SetAccess
immutable

テキスト値を比較するときに大文字小文字の区別を無視するかどうか。logical 0 (false) または 1 (true) として返されます。既定では、制約で大文字と小文字が区別されます。

このプロパティは名前と値の引数 IgnoringCase によって設定されます。

属性:

GetAccess
public
SetAccess
private

テキスト値を比較するときに空白を無視するかどうか。logical 0 (false) または 1 (true) として返されます。既定では、制約で空白文字が区別されます。

このプロパティは名前と値の引数 IgnoringWhitespace によって設定されます。

属性:

GetAccess
public
SetAccess
private

構造体配列を比較するときに無視するフィールド。文字ベクトルの cell 配列として返されます。

このプロパティは名前と値の引数 IgnoringFields によって設定されます。

属性:

GetAccess
public
SetAccess
private

比較をデリゲートする比較演算子。matlab.unittest.constraints 名前空間において比較演算子として分類されるクラスのオブジェクト行ベクトルとして返されます。

このプロパティは名前と値の引数 Using によって設定されます。

属性:

GetAccess
public
SetAccess
private

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

このプロパティは名前と値の引数 Within によって設定されます。

属性:

GetAccess
public
SetAccess
private

すべて折りたたむ

浮動小数点演算の結果をテストします。

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsEqualTo
import matlab.unittest.constraints.RelativeTolerance

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

testCase = TestCase.forInteractiveUse;

0.1*30.3 と比較します。浮動小数点演算の丸め誤差のため、テストは失敗します。

actual = 0.1*3;
expected = 0.3;
testCase.verifyThat(actual,IsEqualTo(expected))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> NumericComparator failed.
        --> The numeric values are not equal using "isequaln".
        --> Failure table:
                Actual    Expected           Error               RelativeError    
                ______    ________    ____________________    ____________________
                                                                                  
                 0.3        0.3       5.55111512312578e-17    1.85037170770859e-16
        
        Actual Value:
           0.300000000000000
        Expected Value:
           0.300000000000000
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestFloatingPointNumbersExample.m (TestFloatingPointNumbersExample) at 19

値が eps の相対許容誤差の範囲内であるかどうかをテストします。テストはパスします。

testCase.verifyThat(actual,IsEqualTo(expected, ...
    "Within",RelativeTolerance(eps)))
Verification passed.

IsEqualTo 制約を使用して、テキスト値を比較します。

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsEqualTo

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

testCase = TestCase.forInteractiveUse;

2 つの文字列を連結し、結果を検証します。テストはパスします。

actual = "Milky " + "Way";
expected = "Milky Way";
testCase.verifyThat(actual,IsEqualTo(expected))
Verification passed.

実際の値を "Milky way " に変更します。実際の値と期待される値がもう等しくないため、テストは失敗します。

actual = "Milky way ";
testCase.verifyThat(actual,IsEqualTo(expected))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> StringComparator failed.
        --> The strings are not equal.
        
        Actual Value:
            "Milky way "
        Expected Value:
            "Milky Way"
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareStringsExample.m (CompareStringsExample) at 22

テストにパスするように、大文字小文字の区別および空白文字を無視します。

testCase.verifyThat(actual,IsEqualTo(expected, ...
    "IgnoringCase",true,"IgnoringWhitespace",true))
Verification passed.

すべてのデータ型をサポートする比較演算子を使用して、2 つのオブジェクトのパブリック プロパティを比較します。

現在のフォルダー内の Student.m という名前のファイルに、Student クラスを作成します。このクラスには、2 つのパブリック プロパティと 1 つのプライベート プロパティがあります。

classdef Student
    properties (SetAccess=immutable)
        Name
        Age
    end
    properties (Access=private)
        Field
    end
    methods
        function obj = Student(name,age,field)
            arguments
                name = "";
                age = [];
                field = "";
            end
            obj.Name = name;
            obj.Age = age;
            obj.Field = field;
        end
    end
end

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsEqualTo
import matlab.unittest.constraints.PublicPropertyComparator

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

testCase = TestCase.forInteractiveUse;

2 つの Student オブジェクトを作成し、それらを IsEqualTo 制約を使用して比較します。この例では、プライベート プロパティの値が異なるためテストが失敗します。

s1 = Student("Mary Jones",20,"physics");
s2 = Student("Mary Jones",20,"biology");
testCase.verifyThat(s1,IsEqualTo(s2))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> ObjectComparator failed.
        --> The objects are not equal using "isequaln".
        
        Actual Value:
          Student with properties:
        
            Name: "Mary Jones"
             Age: 20
        Expected Value:
          Student with properties:
        
            Name: "Mary Jones"
             Age: 20
    ------------------
    Stack Information:
    ------------------
    In C:\work\ComparePublicPropertiesExample.m (ComparePublicPropertiesExample) at 29

PublicPropertyComparator インスタンスを使用して、このテストをもう一度実行します。Name プロパティと Age プロパティで型が異なるため、すべてのデータ型をサポートする比較演算子を使用して比較を実行します。s1.Fields2.Field の値は異なりますが、この比較演算子で調べられるのは s1s2 のパブリック プロパティのみであるため、テストにパスします。

testCase.verifyThat(s1,IsEqualTo(s2, ...
    "Using",PublicPropertyComparator.supportingAllValues))
Verification passed.

新しい Student オブジェクトを作成し、それを s1 と比較します。s1.Names3.Name の値が異なるため、テストは失敗します。

s3 = Student("mary jones",20,"chemistry");
testCase.verifyThat(s1,IsEqualTo(s3, ...
    "Using",PublicPropertyComparator.supportingAllValues))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> Path to failure: <Value>.Name
        --> StringComparator failed.
            --> The strings are not equal.
            
            Actual Value:
                "Mary Jones"
            Expected Value:
                "mary jones"
    
    Actual Value:
      Student with properties:
    
        Name: "Mary Jones"
         Age: 20
    Expected Value:
      Student with properties:
    
        Name: "mary jones"
         Age: 20
    ------------------
    Stack Information:
    ------------------
    In C:\work\ComparePublicPropertiesExample.m (ComparePublicPropertiesExample) at 44

テストにパスするように、大文字小文字の区別を無視する比較演算子を使用します。

testCase.verifyThat(s1,IsEqualTo(s3, ...
    "Using",PublicPropertyComparator.supportingAllValues( ...
    "IgnoringCase",true)))
Verification passed.

代わりに、比較時に Name プロパティを無視するように比較演算子に指示することもできます。

testCase.verifyThat(s1,IsEqualTo(s3, ...
    "Using",PublicPropertyComparator.supportingAllValues( ...
    "IgnoringProperties","Name")))
Verification passed.

詳細

すべて展開する

バージョン履歴

R2013a で導入

すべて展開する