matlab.unittest.constraints.PublicPropertyComparator class

Пакет: matlab.unittest.constraints

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

Описание

The PublicPropertyComparator сравнивает общественную собственность MATLAB® объекты.

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

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

Конструкция

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

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

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

Методы

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

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

расширить все

compObj

Объект компаратора

Аргументы в виде пар имя-значение

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

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

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

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

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

Свойства

IgnoredProperties

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

Recursive

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

Ограничения

  • The 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