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

Пакет: matlab.unittest.constraints

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

Конструкция

ObjectComparator создает компаратор для объектов Java® или MATLAB®. Компаратор удовлетворен, возвращает ли 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.

Введенный в R2013a