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 объект. Компаратор использует эту пару "имя-значение" только, если сравниваемое содержимое состоит из числовых типов.

Ограничения

  • The 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