matlab.unittest.constraints. PublicPropertyComparator.supportingAllValues

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

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

Синтаксис

PublicPropertyComparator.supportingAllValues
PublicPropertyComparator.supportingAllValues(Name,Value)

Описание

пример

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

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

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

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

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

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

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

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

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

Пример: PublicPropertyComparator.supportingAllValues ('IgnoringFields', {'метка времени'})

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

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

Установка для того, нечувствителен ли компаратор к пробельным символам, заданным как 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)))
Interactive 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

Была ли эта тема полезной?