matlab.unittest.constraints.CellComparator class

Пакет: matlab.unittest.constraints

Компаратор для массивов ячеек

Описание

CellComparator сравнивает массивы ячеек.

Конструкция

CellComparator создает компаратор для массивов ячеек.

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

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

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

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

compObj

Объект Comparator

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

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

'Recursively'

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

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

comp1 = CellComparator(StringComparator)
comp2 = CellComparator(StringComparator,'Recursively', true)
Оба comp1 и comp2 поддержите массивы ячеек строк и символьных массивов. Однако только comp2 массивы ячеек поддержек, которые рекурсивно содержат или массивы ячеек или строки как их элементы.

По умолчанию: false

Свойства

Recursive

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

Примеры

свернуть все

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

import matlab.unittest.TestCase;
import matlab.unittest.constraints.CellComparator
import matlab.unittest.constraints.StringComparator
import matlab.unittest.constraints.IsEqualTo

testCase = TestCase.forInteractiveUse;

Используйте CellComparator чтобы протестировать это, два массива ячеек равны друг другу.

actual = {'abc','def'};
expected = {'abc','def'};
testCase.verifyThat(actual, IsEqualTo(expected,...
    'Using', CellComparator(StringComparator)))
Interactive verification passed.

По умолчанию, CellComparator поддержки только сравнение массивов пустой ячейки. Поэтому необходимо передать его StringComparator.

Измените фактическое значение и сравните его с ожидаемым значением. Чтобы удовлетворить ограничению, создайте его, чтобы игнорировать регистр и пробельные символы.

actual = {'ABC','D E F'};
testCase.verifyThat(actual, IsEqualTo(expected, 'Using', ...
    CellComparator(StringComparator), 'IgnoringWhitespace', ...
    true, 'IgnoringCase',true))
Interactive verification passed.

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

actual = {'abc',{'def','ghi'}};
expected = {'abc',{'def','ghi'}};

testCase.verifyThat(actual, IsEqualTo(expected, 'Using', ...
    CellComparator(StringComparator, 'Recursively', true)))
Interactive verification passed.

Советы

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

    Используйте CellComparator возразите, когда необходимо будет заменить сравнение, выполняемое IsEqualTo класс. Например, если вы хотите, чтобы сравнение перестало работать, когда массивы ячеек включают нечисловые значения, включают CellComparator возразите в своем тесте. В этом примере MATLAB® выдает исключение потому что C1 и C2 содержите нечисловые значения.

    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.CellComparator
    import matlab.unittest.constraints.NumericComparator
          
    C1 = {1,2,{3},'abc'}; 
    C2 = C1;
    
    testCase = matlab.unittest.TestCase.forInteractiveUse;
    testCase.verifyThat(C2,IsEqualTo(C1,'Using',CellComparator(NumericComparator)))
    

Введенный в R2013a