exponenta event banner

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

Пакет: matlab.unittest.constraints

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

Строительство

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

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

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

Входные аргументы

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

Объект сравнения, указанный как экземпляр 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 объект. 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