exponenta event banner

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

Пакет: 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 экземпляр. 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