matlab.unittest.constraints.PublicPropertyComparator class

Пакет: matlab.unittest.constraints

Компаратор для публичных свойств объектов MATLAB

Описание

PublicPropertyComparator сравнивает публичные свойства MATLAB® объекты.

PublicPropertyComparator поддержки объекты MATLAB или массивы объектов и рекурсивно сравнивают структуры данных, содержавшиеся в публичных свойствах. PublicPropertyComparator отличается от isequal функционируйте, потому что это исследует только публичные свойства объектов.

Обычно вы создаете PublicPropertyComparator использование supportingAllValues статический метод.

Конструкция

PublicPropertyComparator создает компаратор для публичных свойств объектов MATLAB. Этот компаратор поддерживает только объекты без публичных свойств.

PublicPropertyComparator(compObj) указывает на компаратор, compObj, это задает компаратор, используемый, чтобы сравнить публичные свойства. Этот компаратор поддерживает рекурсию только в типах данных, поддержанных compObj.

PublicPropertyComparator(compObj,Name,Value) предоставляет компаратору дополнительные опции, заданные одним или несколькими Name,Value парные аргументы.

Методы

supportingAllValuesКомпаратор для публичных свойств, который поддерживает любое значение в рекурсии

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

развернуть все

compObj

Объект Comparator

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Свойства проигнорировать во время объектного сравнения в виде массива ячеек из символьных векторов или массива строк.

Пример: PublicPropertyComparator('IgnoringProperties',{'Stack'})

Установка для того, действует ли компаратор рекурсивно в виде false или true логический0 или 1). Когда этим значением является false, компаратор не работает рекурсивно со своими данными.

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

Свойства

IgnoredProperties

Свойства проигнорировать во время объектного сравнения, заданного в аргументе пары "имя-значение", 'IgnoringProperties'.

Recursive

Индикатор того, действует ли компаратор рекурсивно, заданный в аргументе пары "имя-значение", 'Recursively'.

Ограничения

  • PublicPropertyComparator не сравнивает публичные свойства объектов та перегрузка subsref, numel, или properties функции.

Примеры

свернуть все

В файле в вашей рабочей папке создайте этот Employee класс.

classdef Employee
    properties (SetAccess=immutable)
        Name
    end
    properties (Access=private)
        Location
    end
    methods
        function obj = Employee(name,location)
            obj.Name = name;
            obj.Location = location;
        end
    end
end

В командной строке создайте два экземпляра Employee класс.

e1 = Employee('sam','Building A');
e2 = Employee('Sam','Building B');

Создайте контрольный пример для интерактивного тестирования.

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsEqualTo
import matlab.unittest.constraints.PublicPropertyComparator
import matlab.unittest.constraints.StringComparator

testCase = TestCase.forInteractiveUse;

Создайте компаратор и проверьте тот e1 и e2 равны.

compObj = PublicPropertyComparator;
testCase.verifyThat(e1, IsEqualTo(e2,'Using',compObj))
Error using matlab.unittest.constraints.Comparator/throwUnsupportedValue (line 313)
None of the currently available comparators support the value.

Available Comparators:
    1×0 Comparator array with no properties.

Value (char):
        Sam

Error in matlab.unittest.constraints.Comparator>getActExpCompFrom (line 402)
    throwUnsupportedValue(comparison.Comparators,expVal);

Error in matlab.unittest.constraints.Comparator>deepComparisonIsSatisfied (line 351)
[actVal,expVal,comp] = getActExpCompFrom(comparison);

Error in matlab.unittest.constraints.Comparator>deepComparisonIsSatisfied (line 355)
        if ~deepComparisonIsSatisfied(subComparisonArray(k))

Error in matlab.unittest.constraints.Comparator/satisfiedBy (line 84)
            bool = deepComparisonIsSatisfied(comparison);

Error in matlab.unittest.constraints.IsEqualTo/satisfiedBy (line 193)
            bool = constraint.Comparator.satisfiedBy(actual,constraint.Expected);

Error in matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 80)
                result = constraint.satisfiedBy(actual);

Error in matlab.unittest.qualifications.Verifiable/verifyThat (line 230)
            qualifyThat(verifiable.VerificationDelegate, ...

Тест перестал работать потому что, по умолчанию, PublicPropertyComparator не поддерживает векторы символов.

Создайте компаратор, который поддерживает векторы символов. Укажите, что сравнение не является чувствительным к регистру.

compObj = PublicPropertyComparator(StringComparator);
testCase.verifyThat(e1, IsEqualTo(e2,'Using',compObj, 'IgnoringCase',true))
Interactive verification passed.

Тест передает даже при том, что e1.Location и e2.Location различные. Начиная с Location частная собственность, компаратор не сравнивает свое содержимое.

Введенный в R2014a