matlab.unittest.constraints.ObjectComparator class

Пакет: matlab.unittest.constraints

Компаратор для объектов MATLAB или Java

Конструкция

ObjectComparator создает компаратор для MATLAB® или Java® объекты. Компаратор удовлетворяется, если isequaln возвращает true. Однако, если класс ожидаемого значения задает isequal метод, видимый или скрытый, но не isequaln метод, ObjectComparator использует этот метод для сравнения вместо isequaln.

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

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

tolObj

Tolerance образец

Свойства

Tolerance

Специфический допуск, используемый в конструкции компаратора, задается как matlab.unittest.constraints.Tolerance объект в tolObj входной параметр

Копировать семантику

Значение. Чтобы узнать, как классы значений влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

свернуть все

В файле, MyInt.m, в рабочей папке, создайте подкласс int8.

classdef MyInt < int8
    methods
        function i = MyInt(value)
            i@int8(value);
        end
    end
end

В командной строке создайте тест для интерактивных проверок.

import matlab.unittest.TestCase
import matlab.unittest.constraints.ObjectComparator
import matlab.unittest.constraints.IsEqualTo

testCase = TestCase.forInteractiveUse;

Использование ObjectComparator чтобы протестировать эти два образцов MyInt равны друг другу.

testCase.verifyThat(MyInt(10), ...
    IsEqualTo(MyInt(10), 'Using', ObjectComparator))
Interactive verification passed.

Проверяйте равенство двух образцов MyInt которые сконструированы с различными входными значениями.

testCase.verifyThat(MyInt(11), ...
    IsEqualTo(MyInt(10), 'Using', ObjectComparator))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IsEqualTo failed.
--> ObjectComparator failed.
    --> The objects are not equal using "isequal".

Actual Object:
      MyInt:
    
      int8 data:
       11
Expected Object:
      MyInt:
    
      int8 data:
       10

Один из образцов MyInt имеет значение 11, а другой имеет значение 10.

Повторите тест и укажите, что значения должны быть равны в абсолютной погрешности 1.

import matlab.unittest.constraints.AbsoluteTolerance

testCase.verifyThat(MyInt(11), IsEqualTo(MyInt(10), ...
    'Using', ObjectComparator('Within', AbsoluteTolerance(MyInt(1)))))
Interactive verification passed.

Совет

  • В большинстве случаев вы не обязаны использовать ObjectComparator образец. The IsEqualTo класс создает ограничение для проверки на равенство между данными различных типов, включая объекты MATLAB и Java.

    Использование ObjectComparator образец, когда необходимо переопределить сравнение, выполненное IsEqualTo класс. Для примера, если вы хотите, чтобы сравнение не прошло, когда фактические и ожидаемые значения не являются объектами MATLAB, включите ObjectComparator образец в вашем тесте. В этом примере MATLAB выдает исключение, потому что фактическое и ожидаемые значения являются числовыми скалярами.

    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.ObjectComparator
          
    exp = 5; 
    act = exp;
    
    testCase = matlab.unittest.TestCase.forInteractiveUse;
    testCase.verifyThat(act,IsEqualTo(exp,'Using',ObjectComparator))
    

Введенный в R2013a