matlab.unittest.constraints. Класс NumericComparator

Пакет: matlab.unittest.constraints

Компаратор для типов числовых данных

Конструкция

NumericComparator создает компаратор для типов числовых данных. Компаратор удовлетворен, имеют ли входные параметры тот же класс с эквивалентным размером, сложностью и разреженностью, и встроенная функция isequaln возвращает true.

NumericComparator('Within',tolObj) создает компаратор с помощью заданного допуска. В этом случае NumericComparator сначала проверяет на эквивалентный класс, размер и разреженность фактических и ожидаемых значений. Если эти проверки перестали работать, компаратор не удовлетворен. Если эти проверки передают и isequaln или сбои проверки сложности, NumericComparator делегирует сравнение с предоставленным допуском, tolObj.

Входные параметры

tolObj

matlab.unittest.constraints. Экземпляр допуска

Свойства

Допуск

Определенный допуск, используемый в конструкции компаратора, заданного как объект Tolerance во входном параметре tolObj

Примеры

свернуть все

Создайте контрольный пример для интерактивного тестирования.

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

testCase = TestCase.forInteractiveUse;

Использование числовой компаратор, чтобы протестировать тот 1.618 равно 1.618.

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

Проверьте, что (1+sqrt(5))/2 равен 1.618.

testCase.verifyThat((1+sqrt(5))/2, IsEqualTo(1.618, ...
    'Using', NumericComparator))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IsEqualTo failed.
--> NumericComparator failed.
    --> The values are not equal using "isequaln".
    --> Failure table:
                     Actual         Expected           Error               RelativeError    
                ________________    ________    ____________________    ____________________
            
                1.61803398874989    1.618       3.39887498947977e-05    2.10066439399244e-05

Actual double:
       1.618033988749895
Expected double:
       1.618000000000000

Перетест с помощью относительного допуска 0.25%.

import matlab.unittest.constraints.RelativeTolerance

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

Введенный в R2013a

Была ли эта тема полезной?