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 логический0 или 1). Когда это - false, компаратор чувствителен к регистру. Компаратор использует эту пару "имя-значение" при сравнении векторов символов и строковых массивов.

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

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

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

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

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

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

Ограничения

  • PublicPropertyComparator не сравнивает публичные свойства объектов та перегрузка subsrefnumel, или 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 класс. Из-за возмущения в фактическом timeseriesisequal возвращает false. Компаратор не применяет допуск, потому что допуск с двойным знаком не может применяться непосредственно к timeseries объект. В последнем тесте компаратор применяет допуск к каждой общественной собственности, которая содержит данные с двойным знаком.

Введенный в R2014a