matlab.unittest.constraints.TableComparator class

Пакет: matlab.unittest.constraints

Компаратор для таблиц MATLAB

Конструкция

TableComparator создает компаратор для MATLAB® таблицы, итерация которых выполняется по каждому столбцу таблицы. По умолчанию a TableComparator поддерживает только пустые таблицы.

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

TableComparator(___,Name,Value) предоставляет компаратору дополнительные опции, заданные одним или несколькими Name,Value аргументы в виде пар. Используйте эту опцию с любыми комбинациями входных аргументов в предыдущих синтаксисах.

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

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

Объект Comparator, заданный как образец matlab.unittest.constraints который классифицируется как компаратор.

Пример: CellComparator

Пример: NumericComparator

Пример: StringComparator

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

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

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

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

Типы данных: logical

Свойства

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

Индикатор того, работает ли компаратор рекурсивно, возвращается как false или true (logical 0 или 1).

Типы данных: logical

Копировать семантику

Значение. Чтобы узнать, как классы значений влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

свернуть все

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

Создайте две равные таблицы.

LastName = {'Williams';'Jones';'Brown'};
Age = [38;40;49];
Height = [64;67;64];
Weight = [131;133;119];
BloodPressure = [125 83; 117 75; 122 80];

T1 = table(Age,Height,Weight,BloodPressure, ...
    'RowNames',LastName);
T2 = T1;

Проверьте, что таблицы равны. Проверьте столбцы таблиц с помощью числового компаратора.

import matlab.unittest.constraints.TableComparator
import matlab.unittest.constraints.NumericComparator
import matlab.unittest.constraints.IsEqualTo
testCase.verifyThat(T1,IsEqualTo(T2, ...
    'Using',TableComparator(NumericComparator)))
Interactive verification passed.

Измените возраст последнего лица на 50 лет и сравните таблицы еще раз.

T2.Age(end) = 50;
testCase.verifyThat(T1,IsEqualTo(T2, ...
    'Using',TableComparator(NumericComparator)))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IsEqualTo failed.
--> Path to failure: <Value>.Age
    --> NumericComparator failed.
        --> The values are not equal using "isequaln".
        --> Failure table:
            value =
            
              1×5 table array
            
                Index    Actual    Expected    Error    RelativeError
                _____    ______    ________    _____    _____________
            
                3        49        50          -1       -0.02        
        
        Actual double:
                38
                40
                49
        Expected double:
                38
                40
                50

Actual table:
    value =
    
      3×4 table array
    
                    Age    Height    Weight    BloodPressure
                    ___    ______    ______    _____________
    
        Williams    38     64        131       125     83   
        Jones       40     67        133       117     75   
        Brown       49     64        119       122     80   
Expected table:
    value =
    
      3×4 table array
    
                    Age    Height    Weight    BloodPressure
                    ___    ______    ______    _____________
    
        Williams    38     64        131       125     83   
        Jones       40     67        133       117     75   
        Brown       50     64        119       122     80   

Совет

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

    Использование TableComparator объект, когда вам нужно переопределить сравнение, выполненное IsEqualTo класс. Например, если вы хотите, чтобы сравнение не прошло, когда таблицы включают нечисловые значения, включите TableComparator объект в вашем тесте. В этом примере MATLAB выдает исключение из-за T1 и T2 содержат нечисловые значения.

    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.TableComparator
    import matlab.unittest.constraints.NumericComparator
          
    T1 = table([45;32;34],logical([1;0;0]),'VariableNames',{'Age','Vote'}); 
    T2 = T1;
    
    testCase = matlab.unittest.TestCase.forInteractiveUse;
    testCase.verifyThat(T2,IsEqualTo(T1,'Using',TableComparator(NumericComparator)))
    

Введенный в R2017a