exponenta event banner

matlab.unittest.constraints. PublicPropertyComparator.supportingAllValues

Класс: matlab.unittest.constraints.PublicPropertyComparator
Пакет: matlab.unittest.constraints

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

Описание

пример

PublicPropertyComparator.supportingAllValues создает компаратор для общих свойств объектов MATLAB ®. Этот компаратор поддерживает любое значение в рекурсии .supportingAllValues является Static способ PublicPropertyComparator класс.

PublicPropertyComparator.supportingAllValues(Name,Value) создает компаратор для общедоступных свойств объектов MATLAB с дополнительными опциями, заданными одним или несколькими Name,Value аргументы пары.

Обычно этот компаратор передается другому ограничению, такому как IsEqualTo. Вы можете использовать Name,Value пар IsEqualTo ограничение с компаратором, построенным с помощью PublicPropertyComparator.supportingAllValues синтаксис.

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

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

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

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

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

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

Пример: PublicPropertyComparator.supportingAllValues('IgnoringFields',{'timestamp'})

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

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

Параметр, определяющий, является ли компаратор нечувствительным к символам пробела, указанный как false или true (logical 0 или 1). Когда это будет false, компаратор чувствителен к символам пробела. Символы пробела состоят из пробела, канала формы, новой строки, возврата каретки, горизонтальной вкладки и вертикальной вкладки. Компаратор использует эту пару имя-значение, только если сравниваемое содержимое состоит из символьных векторов.

Допуск, используемый для численного сравнения, указанный как matlab.unittest.constraints.Tolerance объект. Компаратор использует эту пару имя-значение, только если сравниваемое содержимое состоит из числовых типов.

Ограничения

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

Примеры

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

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

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

testCase = TestCase.forInteractiveUse;

Проверьте проходной случай.

m1 = MException('Msg:ID','MsgText');
m2 = MException('Msg:ID','MsgText');
testCase.verifyThat(m1, IsEqualTo(m2, 'Using', ...
    PublicPropertyComparator.supportingAllValues))
Interactive verification passed.

Проверьте неуспешный случай.

m1 = MException('Msg:ID','MsgText');
m2 = MException('Msg:ID','msgtext');
testCase.verifyThat(m1, IsEqualTo(m2, 'Using', ...
    PublicPropertyComparator.supportingAllValues))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IsEqualTo failed.
--> Path to failure: <Value>.message
    --> StringComparator failed.
        --> The character arrays are not equal.
        
        Actual char:
            MsgText
        Expected char:
            msgtext

Actual MException:
      MException with properties:
    
        identifier: 'Msg:ID'
           message: 'MsgText'
             cause: {}
             stack: [0×1 struct]
Expected MException:
      MException with properties:
    
        identifier: 'Msg:ID'
           message: 'msgtext'
             cause: {}
             stack: [0×1 struct]

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

m1 = MException('Msg:ID','MsgText');
m2 = MException('Msg:ID','msgtext');
testCase.verifyThat(m1, IsEqualTo(m2,'Using', ...
    PublicPropertyComparator.supportingAllValues('IgnoringCase',true)))
Interactive verification passed.

Проверка случая, который проходит, когда компаратор игнорирует message имущества MException объект.

testCase.verifyThat(m1, IsEqualTo(m2,'Using', ...
    PublicPropertyComparator.supportingAllValues('IgnoringProperties',{'message'})))
Interactive verification passed.

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

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

testCase = TestCase.forInteractiveUse;

Определение фактических и ожидаемых timeseries объекты. Возмущение одной из фактических точек данных на 1%.

expected = timeseries(1:10);
actual = expected;
actual.Data(7) = 1.01*actual.Data(7);

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

testCase.verifyThat(actual, IsEqualTo(expected,...
    'Within', RelativeTolerance(.02)))
Verification failed.

---------------------
Framework Diagnostic:
---------------------
IsEqualTo failed.
--> ObjectComparator failed.
    --> The objects are not equal using "isequal".
    --> The tolerance was ignored. The tolerance as specified does not support comparisons of timeseries values.
    
    Actual timeseries:
          timeseries
        
          Common Properties:
                    Name: 'unnamed'
                    Time: [10x1 double]
                TimeInfo: [1x1 tsdata.timemetadata]
                    Data: [1x1x10 double]
                DataInfo: [1x1 tsdata.datametadata]
        
          More properties, Methods
    Expected timeseries:
          timeseries
        
          Common Properties:
                    Name: 'unnamed'
                    Time: [10x1 double]
                TimeInfo: [1x1 tsdata.timemetadata]
                    Data: [1x1x10 double]
                DataInfo: [1x1 tsdata.datametadata]
        
          More properties, Methods

Используйте PublicPropertyComparator при построении зависимости.

testCase.verifyThat(actual, IsEqualTo(expected,...
    'Within', RelativeTolerance(.02),...
    'Using', PublicPropertyComparator.supportingAllValues))
Interactive verification passed.

Тест завершается успешно, поскольку PublicPropertyComparator сравнивает каждое публичное свойство по отдельности, а не сравнивает объект сразу. В первом тесте ObjectComparator выдерживает сравнение timeseries объектов и, следовательно, опирается на isequal способ timeseries класс. Из-за возмущения в фактическом timeseries, isequal прибыль false. Компаратор не применяет допуск, поскольку двойной допуск не может применяться непосредственно к timeseries объект. В последнем тесте компаратор применяет допуск к каждому публичному свойству, содержащему данные с двойным значением.

Представлен в R2014a