이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

matlab.unittest.constraints.StructComparator 클래스

패키지: matlab.unittest.constraints

MATLAB 구조체형 배열의 비교 연산자

생성

StructComparator는 MATLAB® 구조체형 배열의 비교 연산자를 만듭니다.

StructComparator(compObj)는 구조체에 포함된 값을 비교하는 데 사용되는 비교 연산자를 compObj로 정의합니다. 기본적으로 StructComparator는 빈 구조체형 배열만 지원합니다.

StructComparator(compObj,Name,Value)는 하나 이상의 Name,Value 쌍 인수가 추가 옵션으로 지정된 비교 연산자를 제공합니다.

StructComparator(Name,Value)는 하나 이상의 Name,Value 쌍 인수가 추가 옵션으로 지정된 빈 구조체형 배열에 대한 비교 연산자를 제공합니다.

입력 인수

모두 확장

compObj

비교 연산자 객체

비교 연산자는 StructComparator로 전달되어 재귀 중 데이터형을 지원합니다. 기본적으로 StructComparator는 빈 구조체형 배열만 지원합니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

구조체 비교 시 무시할 필드로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

비교 연산자가 재귀적으로 동작하는지 여부를 지정하는 설정으로, false 또는 true(logical 0 또는 1)로 지정됩니다. 이 값이 false인 경우에는 비교 연산자가 해당 데이터에 대해 재귀적으로 동작을 수행하지 않습니다.

이 값이 true인 경우 StructComparator가 지원하는 데이터형이 재귀적으로 완전히 지원됩니다. 예를 들면 다음과 같습니다.

comp1 = StructComparator(NumericComparator);
comp2 = StructComparator(NumericComparator, 'Recursively', true);
comp1comp2는 필드에 숫자형 값을 포함하는 구조체를 지원합니다. 그러나 comp2만이 구조체 또는 숫자형 값을 필드에 재귀적으로 포함하는 구조체를 지원합니다.

속성

IgnoredFields

구조체 비교 시 무시할 필드로, 'IgnoringFields' 인수를 통해 이름-값 쌍으로 지정됩니다.

Recursive

비교 연산자가 재귀적으로 동작하는지 여부를 나타내는 표시로, 'Recursively' 인수를 통해 이름-값 쌍으로 지정됩니다.

복사 의미 체계

값입니다. 값 클래스가 복사 작업에 미치는 영향에 대한 내용은 객체 복사 항목을 참조하십시오.

예제

모두 축소

대화형 방식 테스트를 위한 테스트 케이스를 생성합니다.

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsEqualTo
import matlab.unittest.constraints.AbsoluteTolerance
import matlab.unittest.constraints.StructComparator
import matlab.unittest.constraints.NumericComparator

testCase = TestCase.forInteractiveUse;

동일한 구조체를 2개 만듭니다.

s1 = struct('id',7,'score',7.3);
s2 = s1;

구조체가 동일한지 테스트합니다. 기본적으로 StructComparator는 빈 구조체만 지원하므로 NumericComparator를 사용하여 비교 연산자를 구성해야 합니다.

testCase.verifyThat(s1, IsEqualTo(s2, 'Using', ...
    StructComparator(NumericComparator)))
Verification passed.

s2의 점수를 변경하고 구조체를 다시 비교합니다.

s2.score = 7.6;
testCase.verifyThat(s1, IsEqualTo(s2, 'Using', ...
    StructComparator(NumericComparator)))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> Path to failure: <Value>.score
        --> NumericComparator failed.
            --> The numeric values are not equal using "isequaln".
            --> Failure table:
                    Actual    Expected    Error       RelativeError   
                    ______    ________    _____    ___________________
                     7.3        7.6       -0.3     -0.0394736842105263
            
            Actual Value:
               7.300000000000000
            Expected Value:
               7.600000000000000
    
    Actual Value:
      struct with fields:
    
           id: 7
        score: 7.300000000000000
    Expected Value:
      struct with fields:
    
           id: 7
        score: 7.600000000000000

비교의 절대 허용오차를 지정합니다.

testCase.verifyThat(s1, IsEqualTo(s2, 'Using', ...
    StructComparator(NumericComparator), 'Within', ...
    AbsoluteTolerance(0.5)))
Verification passed.

대화형 방식 테스트를 위한 테스트 케이스를 생성합니다.

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

testCase = TestCase.forInteractiveUse;

구조체를 2개 만듭니다. 필드 중 하나를 중첩 구조로 만듭니다.

e1 = struct('name', struct('first','sam','last','smith'), ...
    'location','Building A');
e2 = e1;

두 구조체가 동일한지 확인합니다. 구조체에 중첩 구조가 포함되어 있으므로 재귀적으로 동작하도록 제약 조건을 구성합니다.

testCase.verifyThat(e1, IsEqualTo(e2, 'Using', ...
    StructComparator(StringComparator, 'Recursively', true)))
Verification passed.

e2 구조체의 첫 번째 이름 필드를 변경하고 비교를 반복합니다.

e2.name.first = ' SAM';
testCase.verifyThat(e1, IsEqualTo(e2, 'Using', ...
    StructComparator(StringComparator, 'Recursively', true)))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> Path to failure: <Value>.name.first
        --> StringComparator failed.
            --> The character arrays are not equal.
            
            Actual char:
                sam
            Expected char:
                 SAM
    
    Actual Value:
      struct with fields:
    
            name: [1×1 struct]
        location: 'Building A'
    Expected Value:
      struct with fields:
    
            name: [1×1 struct]
        location: 'Building A'

대/소문자와 공백 문자를 무시하도록 비교 연산자를 구성합니다.

testCase.verifyThat(e1, IsEqualTo(e2, 'Using', ...
    StructComparator(StringComparator, 'Recursively', true), ...
    'IgnoringCase', true, 'IgnoringWhitespace', true))
Verification passed.

R2013a에 개발됨