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

matlab.unittest.constraints.PublicPropertyComparator 클래스

패키지: matlab.unittest.constraints

MATLAB 객체의 퍼블릭 속성에 대한 비교 연산자

설명

PublicPropertyComparator는 MATLAB® 객체의 퍼블릭 속성을 비교합니다.

PublicPropertyComparator는 MATLAB 객체 또는 객체로 구성된 배열을 지원하며 퍼블릭 속성에 포함된 데이터 구조체를 재귀적으로 비교합니다. PublicPropertyComparator는 객체의 퍼블릭 속성만 검토하므로 isequal 함수와 다릅니다.

일반적으로 supportingAllValues 정적 메서드를 사용하여 PublicPropertyComparator를 생성합니다.

생성

PublicPropertyComparator는 MATLAB 객체 퍼블릭 속성의 비교 연산자를 만듭니다. 이 비교 연산자는 퍼블릭 속성이 없는 객체만 지원합니다.

PublicPropertyComparator(compObj)는 퍼블릭 속성을 비교하는 데 사용되는 비교 연산자를 비교 연산자 compObj로 정의합니다. 이 비교 연산자는 compObj가 지원하는 데이터형에만 재귀를 지원합니다.

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

메서드

supportingAllValues모든 값을 재귀적으로 지원하는 퍼블릭 속성에 대한 비교 연산자

입력 인수

모두 확장

compObj

비교 연산자 객체

이름-값 쌍의 인수

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

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

예: PublicPropertyComparator('IgnoringProperties',{'Stack'})

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

이 값이 true인 경우 퍼블릭 속성 비교 연산자가 지원하는 데이터형이 재귀적으로 완전히 지원됩니다.

속성

IgnoredProperties

객체 비교 시 무시할 속성으로, 'IgnoringProperties' 인수를 통해 이름-값 쌍으로 지정됩니다.

Recursive

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

제한 사항

  • PublicPropertyComparatorsubsref, numel, properties 함수 중 하나를 오버로드하는 객체의 퍼블릭 속성을 비교하지 않습니다.

복사 의미 체계

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

예제

모두 축소

작업 폴더의 파일에서 다음 Employee 클래스를 생성합니다.

classdef Employee
    properties (SetAccess=immutable)
        Name
    end
    properties (Access=private)
        Location
    end
    methods
        function obj = Employee(name,location)
            obj.Name = name;
            obj.Location = location;
        end
    end
end

명령 프롬프트에서 Employee 클래스의 두 인스턴스를 만듭니다.

e1 = Employee('sam','Building A');
e2 = Employee('Sam','Building B');

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

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

testCase = TestCase.forInteractiveUse;

비교 연산자를 생성하고 e1e2가 같은지 확인합니다.

compObj = PublicPropertyComparator;
testCase.verifyThat(e1, IsEqualTo(e2,'Using',compObj))
Error using matlab.unittest.constraints.Comparator/throwUnsupportedValue (line 313)
None of the currently available comparators support the value.

Available Comparators:
    1×0 Comparator array with no properties.

Value (char):
        Sam

Error in matlab.unittest.constraints.Comparator>getActExpCompFrom (line 402)
    throwUnsupportedValue(comparison.Comparators,expVal);

Error in matlab.unittest.constraints.Comparator>deepComparisonIsSatisfied (line 351)
[actVal,expVal,comp] = getActExpCompFrom(comparison);

Error in matlab.unittest.constraints.Comparator>deepComparisonIsSatisfied (line 355)
        if ~deepComparisonIsSatisfied(subComparisonArray(k))

Error in matlab.unittest.constraints.Comparator/satisfiedBy (line 84)
            bool = deepComparisonIsSatisfied(comparison);

Error in matlab.unittest.constraints.IsEqualTo/satisfiedBy (line 193)
            bool = constraint.Comparator.satisfiedBy(actual,constraint.Expected);

Error in matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 80)
                result = constraint.satisfiedBy(actual);

Error in matlab.unittest.qualifications.Verifiable/verifyThat (line 230)
            qualifyThat(verifiable.VerificationDelegate, ...

기본적으로 PublicPropertyComparator가 문자형 벡터를 지원하지 않기 때문에 이 테스트는 실패합니다.

문자형 벡터를 지원하는 비교 연산자를 생성합니다. 비교 시 대/소문자를 구분하지 않도록 지정합니다.

compObj = PublicPropertyComparator(StringComparator);
testCase.verifyThat(e1, IsEqualTo(e2,'Using',compObj, 'IgnoringCase',true))
Interactive verification passed.

e1.Locatione2.Location이 동일하지 않는 경우에도 테스트가 통과합니다. 참고로, Location은 프라이빗 속성이기 때문에 비교 연산자는 그 내용을 비교하지 않습니다.

R2014a에 개발됨