exponenta event banner

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

Пакет: 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 объект. 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