Main Content

matlab.unittest.constraints.NumericComparator 클래스

패키지: matlab.unittest.constraints

숫자 데이터형의 비교 연산자

생성

NumericComparator는 숫자 데이터형의 비교 연산자를 만듭니다. 이 비교 연산자는 입력값 클래스의 크기가 동일하고, 실수/복소수 여부 및 희소성이 동일하며, 내장 isequaln 함수가 true를 반환하는 경우 충족됩니다.

NumericComparator('Within',tolObj)는 지정된 허용오차를 사용하여 비교 연산자를 만듭니다. 이 경우 NumericComparator가 실제 값과 예상 값을 비교하여 클래스, 크기 및 희소성이 동일한지 먼저 확인합니다. 이러한 확인이 실패하는 경우 이 비교 연산자는 충족되지 않습니다. 이러한 확인이 통과되고 isequaln 또는 실수/복소수 여부 확인에 실패하는 경우 NumericComparator는 제공된 허용오차 tolObj와 비교합니다.

입력 인수

tolObj

matlab.unittest.constraints.Tolerance 인스턴스

속성

Tolerance

비교 연산자를 생성할 때 사용되는 특정 허용오차로, tolObj 입력 인수의 Tolerance 객체로 지정됩니다.

복사 의미 체계

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

예제

모두 축소

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

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

testCase = TestCase.forInteractiveUse;

숫자형 비교 연산자를 사용하여 1.6181.618과 같은지 테스트합니다.

testCase.verifyThat(1.618, IsEqualTo(1.618,...
    'Using', NumericComparator))
Verification passed.

(1+sqrt(5))/21.618과 같은지 확인합니다.

testCase.verifyThat((1+sqrt(5))/2, IsEqualTo(1.618, ...
    'Using', NumericComparator))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> NumericComparator failed.
        --> The numeric values are not equal using "isequaln".
        --> Failure table:
                     Actual         Expected           Error               RelativeError    
                ________________    ________    ____________________    ____________________
                1.61803398874989     1.618      3.39887498947977e-05    2.10066439399244e-05
        
        Actual Value:
           1.618033988749895
        Expected Value:
           1.618000000000000

상대 허용오차 0.25%를 사용하여 다시 테스트합니다.

import matlab.unittest.constraints.RelativeTolerance

testCase.verifyThat((1+sqrt(5))/2, IsEqualTo(1.618, ...
    'Using', NumericComparator('Within', RelativeTolerance(0.0025))))
Verification passed.

  • 대부분의 경우에는 NumericComparator 객체를 사용할 필요가 없습니다. IsEqualTo 클래스는 숫자형 값을 포함하여 여러 유형의 데이터 간의 동일성을 테스트하는 제약 조건을 만듭니다.

    IsEqualTo 클래스가 수행하는 비교를 재정의해야 하는 경우 NumericComparator 객체를 사용하십시오. 예를 들어, 실제 값과 예상 값이 숫자형 값이 아닌 경우 비교가 실패하도록 하려면 테스트에 NumericComparator 객체를 포함하십시오. NumericComparator를 사용하여 구조체, 셀형 배열 및 테이블에 포함되는 값을 제한할 수도 있습니다. 다음 예제에서는 실제 값과 예상 값이 셀형 배열이므로 MATLAB®이 예외를 발생시킵니다.

    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.NumericComparator
          
    exp = {1,2,3}; 
    act = exp;
    
    testCase = matlab.unittest.TestCase.forInteractiveUse;
    testCase.verifyThat(act,IsEqualTo(exp,'Using',NumericComparator))
    

버전 내역

R2013a에 개발됨