matlab.unittest.constraints.NumericComparator class

Пакет: matlab.unittest.constraints

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

Конструкция

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

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

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

tolObj

matlab.unittest.constraints.Tolerance образец

Свойства

Tolerance

Специфический допуск, используемый в конструкции компаратора, задается как 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))
Verification passed.

Проверьте, что (1+sqrt(5))/2 равно 1.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 объект. The IsEqualTo класс создает ограничение для проверки на равенство между данными различных типов, включая числовые значения.

    Использование NumericComparator объект, когда вам нужно переопределить сравнение, выполненное IsEqualTo класс. Например, если вы хотите, чтобы сравнение не прошло, когда фактические и ожидаемые значения нечисловые, включите 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