このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
matlab.unittest.constraints.IsEqualTo クラス
名前空間: matlab.unittest.constraints
スーパークラス: matlab.unittest.constraints.BooleanConstraint
等価性をテストするための制約
説明
matlab.unittest.constraints.IsEqualTo
クラスは、値の等価性をテストするための制約を提供します。比較の詳細は、期待される値のクラスに応じて異なります。
作成
説明
c = matlab.unittest.constraints.IsEqualTo(
は、1 つ以上の名前と値の引数を使用して追加のオプションを設定します。たとえば、expected
,Name,Value
)c = matlab.unittest.constraints.IsEqualTo(expected,"IgnoringCase",true)
は大文字と小文字を区別しない制約を作成します。
入力引数
expected
— 期待される値
任意の値
期待される値。任意のデータ型の値として指定します。
この引数は 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)
IgnoringCase
— 大文字小文字の区別を無視するかどうか
false
または 0
(既定値) | true
または 1
テキスト値を比較するときに大文字小文字の区別を無視するかどうか。数値または logical 0
(false
) または 1
(true
) として指定します。既定では、制約で大文字と小文字が区別されます。
この引数は IgnoreCase
プロパティを設定します。
IgnoringWhitespace
— 空白を無視するかどうか
false
または 0
(既定値) | true
または 1
テキスト値を比較するときに空白を無視するかどうか。数値または logical 0
(false
) または 1
(true
) として指定します。既定では、制約で空白文字が区別されます。空白文字は、スペース (' '
)、フォーム フィード ('\f'
)、改行 ('\n'
)、キャリッジ リターン ('\r'
)、水平タブ ('\t'
)、垂直タブ ('\v'
) です。
この引数は IgnoreWhitespace
プロパティを設定します。
IgnoringFields
— 構造体配列を比較するときに無視するフィールド
string 配列 | 文字ベクトルの cell 配列
構造体配列を比較するときに無視するフィールド。string 配列または文字ベクトルの cell 配列として指定します。指定したフィールドの値は制約で比較されません。
この引数は IgnoredFields
プロパティを設定します。
例: "IgnoringFields","field1"
Using
— 比較をデリゲートする比較演算子
比較演算子クラスのオブジェクト ベクトル
比較をデリゲートする比較演算子。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]
Within
— 比較で使用する許容誤差
matlab.unittest.constraints.Tolerance
オブジェクト
比較で使用する許容誤差。matlab.unittest.constraints.Tolerance
オブジェクトとして指定します。
この引数は Tolerance
プロパティを設定します。
例: "Within",matlab.unittest.constraints.AbsoluteTolerance(1)
例: "Within",matlab.unittest.constraints.AbsoluteTolerance(1) | matlab.unittest.constraints.RelativeTolerance(0.1)
プロパティ
Expected
— 期待される値
任意の値
IgnoreCase
— 大文字小文字の区別を無視するかどうか
false
または 0
(既定値) | true
または 1
テキスト値を比較するときに大文字小文字の区別を無視するかどうか。logical 0
(false
) または 1
(true
) として返されます。既定では、制約で大文字と小文字が区別されます。
このプロパティは名前と値の引数 IgnoringCase
によって設定されます。
属性:
GetAccess | public |
SetAccess | private |
IgnoreWhitespace
— 空白を無視するかどうか
false
または 0
(既定値) | true
または 1
テキスト値を比較するときに空白を無視するかどうか。logical 0
(false
) または 1
(true
) として返されます。既定では、制約で空白文字が区別されます。
このプロパティは名前と値の引数 IgnoringWhitespace
によって設定されます。
属性:
GetAccess | public |
SetAccess | private |
IgnoredFields
— 構造体配列を比較するときに無視するフィールド
文字ベクトルの cell 配列
構造体配列を比較するときに無視するフィールド。文字ベクトルの cell 配列として返されます。
このプロパティは名前と値の引数 IgnoringFields
によって設定されます。
属性:
GetAccess | public |
SetAccess | private |
Comparator
— 比較をデリゲートする比較演算子
比較演算子クラスのオブジェクト行ベクトル
比較をデリゲートする比較演算子。matlab.unittest.constraints
名前空間において比較演算子として分類されるクラスのオブジェクト行ベクトルとして返されます。
このプロパティは名前と値の引数 Using
によって設定されます。
属性:
GetAccess | public |
SetAccess | private |
Tolerance
— 比較で使用する許容誤差
matlab.unittest.constraints.Tolerance
オブジェクト
比較で使用する許容誤差。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*3
を 0.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.Field
と s2.Field
の値は異なりますが、この比較演算子で調べられるのは s1
と s2
のパブリック プロパティのみであるため、テストにパスします。
testCase.verifyThat(s1,IsEqualTo(s2, ... "Using",PublicPropertyComparator.supportingAllValues))
Verification passed.
新しい Student
オブジェクトを作成し、それを s1
と比較します。s1.Name
と s3.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.
詳細
比較の詳細
次の表で、IsEqualTo
制約の動作について、期待される値のクラス別に説明します。
期待される値 | 比較の詳細 |
---|---|
logical 配列 | 実際の値と期待される値のクラス、サイズ、およびスパース性が同じで、それらの対応する要素が等しい場合に制約が満たされます。 |
数値配列 | 許容誤差を指定しない場合、実際の値と期待される値のクラス、サイズ、実数/複素数、およびスパース性が同じで、それらが関数 許容誤差を指定した場合、制約で実際の値と期待される値のクラス、サイズ、スパース性の等価性が最初にチェックされます。これらのいずれかのチェックに失敗すると、制約は満たされません。これらのチェックにパスした場合に、実数/複素数のチェックまたは |
string 配列、文字配列、または文字配列の cell 配列 | 実際の値と期待される値が同じクラスとサイズをもつテキスト値で、それらの対応する要素が等しい場合に制約が満たされます。制約で大文字小文字の区別、空白文字、またはその両方を無視するように設定できます。 |
cell 配列 | 実際の値と期待される値が同じサイズをもつ cell 配列で、cell 配列の対応する要素も制約を満たす場合に制約が満たされます。 cell 配列に格納された値を比較するとき、制約で再帰的に演算が行われます。入れ子にされたすべての値の等価性を調べるまで再帰が続行されます。 |
構造体配列 | 実際の値と期待される値が同じサイズとフィールドをもつ構造体配列で、対応するフィールドの値も制約を満たす場合に制約が満たされます。制約で特定のフィールドを無視するように設定できます。 構造体配列に格納された値を比較するとき、制約で再帰的に演算が行われます。入れ子にされたすべての値の等価性を調べるまで再帰が続行されます。 |
ディクショナリ | 実際の値と期待される値が同じキーをもつディクショナリで、対応するキーに割り当てられた値も制約を満たす場合に制約が満たされます。 ディクショナリに格納された値を比較するとき、制約で再帰的に演算が行われます。入れ子にされたすべての値の等価性を調べるまで再帰が続行されます。 |
table 配列 | 実際の値と期待される値が同じサイズとプロパティ値をもつ table 配列で、対応する table 変数も制約を満たす場合に制約が満たされます。 table 配列に格納された値を比較するとき、制約で再帰的に演算が行われます。入れ子にされたすべての値の等価性を調べるまで再帰が続行されます。 |
MATLAB® または Java® オブジェクト配列 | 許容誤差を指定しない場合、実際の値と期待される値が同じクラスとサイズをもつオブジェクト配列で、すべてのプロパティの値が等しければ制約が満たされます。等価性を判定できない場合、制約で 許容誤差を指定した場合、制約でオブジェクト配列についての上記と同様の等価性のチェックが最初に行われます。そのチェックにパスすると、制約が満たされます。それ以外の場合、制約で実際の値と期待される値のクラス、サイズ、スパース性の等価性がチェックされます。これらのいずれかのチェックに失敗すると、制約は満たされません。それらにパスした場合、比較が制約から許容誤差にデリゲートされます。 |
バージョン履歴
R2013a で導入R2022b: テストでのディクショナリの比較
IsEqualTo
制約を使用して MATLAB ディクショナリを比較できます。
R2019a: table 変数は一貫して比較される
IsEqualTo
制約は、table 変数のサイズと型を一貫して比較します。たとえば、次のテストは、実際の table 変数と想定される table 変数が異なる型をもつため、失敗します。
import matlab.unittest.TestCase import matlab.unittest.constraints.IsEqualTo testCase = TestCase.forInteractiveUse; act = table(zeros(0,2)); exp = table({}); testCase.verifyThat(act,IsEqualTo(exp))
Verification failed. --------------------- Framework Diagnostic: --------------------- IsEqualTo failed. --> Path to failure: <Value>.Var1 --> CellComparator failed. --> Classes do not match. Actual Class: double Expected Class: cell Actual Value: 0×2 empty double matrix Expected Value: 0×0 empty cell array Actual Value: 0×1 empty table Expected Value: 0×1 empty table
以前のリリースでは、table に行がない場合に制約は table 変数を比較しないため、テストはパスします。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)