matlab.unittest.constraints.IssuesWarnings class

Пакет: matlab.unittest.constraints
Суперклассы: matlab.unittest.constraints.Constraint

Ограничительная функция определения, которая выпускает ожидаемый профиль предупреждения

Описание

IssuesWarnings класс создает ограничение, которое выпускает ожидаемый профиль предупреждения. Ограничению удовлетворяют, только если фактическое значение является указателем на функцию, который выпускает определенный набор предупреждений. Вы задаете идентификаторы предупреждения использования предупреждений.

По умолчанию ограничение только подтверждает, что, когда среда тестирования вызывает указатель на функцию, MATLAB® выпускает заданный набор предупреждений. Это игнорирует число раз, предупреждения выданы, в том, какой порядок они выпущены, и выданы ли какие-либо незаданные предупреждения. Однако можно установить параметры, чтобы уважать порядок, количество и набор предупреждения. В качестве альтернативы можно задать точный профиль предупреждения для сравнения.

Конструкция

outConstObj = IssuesWarnings(warnArr) создает ограничение, outConstObj, задавая функцию, которая выдает ожидаемые предупреждения, warnArr.

outConstObj = IssuesWarnings(expVal,Name,Value) создает ограничение с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы. Name должен появиться в одинарных кавычках (''). Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN.

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

warnArr

Предупреждение идентификаторов ожидало, когда среда тестирования вызывает указатель на функцию в виде массива ячеек предупреждения идентификаторов. Если warnArr пусто, конструктор выдает MException.

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

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

'Exactly'

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

По умолчанию: false

'RespectingCount'

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

По умолчанию: false

'RespectingOrder'

Индикатор, уважать ли порядок элементов в виде false или true логический0 или 1). Когда этим значением является false, экземпляр нечувствителен к порядку элементов множества. Когда установлено в true, экземпляр чувствителен к порядку элементов множества. Это означает, что этому экземпляру не удовлетворяют, отличается ли порядок выданных предупреждений от порядка, предупреждения заданы в warnArr.

Порядок данного набора предупреждений определяется путем обрезки профилей предупреждения к профилю без повторных смежных предупреждений. Например, профиль предупреждения {id:A, id:A, id:B, id:C, id:C, id:C, id:A, id:A, id:A} обрезается к {id:A, id:B, id:C, id:A}.

Когда этот ограничительный порядок отношений, порядок предупреждений, которые выдаются и ожидаются, должны совпадать с порядком ожидаемого профиля предупреждения. Предупреждения вышли, которые не перечислены в warnArr проигнорированы при определении порядка.

По умолчанию: false

'RespectingSet'

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

По умолчанию: false

'WhenNargoutIs'

Количество выходных параметров ограничение должно запросить при вызове указателя на функцию в виде неотрицательного, действительного, скалярного целого числа.

Значение по умолчанию: 0

Свойства

Exact

Индикатор того, выполняет ли ограничение точные сравнения. Установите это свойство через конструктора через аргумент пары "имя-значение", 'Exactly'.

ExpectedWarnings

Ожидаемые идентификаторы предупреждения. Установите это свойство только для чтения через конструктора через warnArr входной параметр.

FunctionOutputs

Выходные аргументы производятся при вызове предоставленного указателя на функцию в виде массива ячеек. Это свойство обеспечивает доступ к выходным аргументам. Это только для чтения, и среда тестирования устанавливает его, когда это вызывает указатель на функцию. Количество выходных параметров определяется Nargout свойство.

Nargout

Количество выходных аргументов, которые использует экземпляр, когда это выполняет функции. Установите это свойство через конструктора через аргумент пары "имя-значение", 'WhenNargoutIs'.

RespectCount

Индикатор, если ограничение уважает количества элемента, заданные через конструктора через аргумент пары "имя-значение", 'RespectingCount'.

RespectOrder

Индикатор, если ограничение уважает порядок элементов, указанных через конструктора через аргумент пары "имя-значение", 'RespectingOrder'.

RespectSet

Индикатор, если ограничение уважает элементы набора, заданные через конструктора через аргумент пары "имя-значение", 'RespectingSet'.

Примеры

свернуть все

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.IssuesWarnings

testCase = TestCase.forInteractiveUse;

Создайте анонимную функцию помощника для использования в этом примере. Создайте несколько идентификаторов предупреждения.

issueWarnings = @(idCell) cellfun(@(id) warning(id,'Message'), idCell);
firstID =   'first:id';
secondID =  'second:id';
thirdID =   'third:id';

Проверьте, что функция помощника выдает конкретное предупреждение.

testCase.verifyThat(@() issueWarnings({firstID}),...
    IssuesWarnings({firstID}))
Interactive verification passed.

Проверьте, что функция выпускает количество игнорирования предупреждения, предупреждая набор и порядок.

testCase.verifyThat(@() issueWarnings({firstID, thirdID, secondID,...
    firstID}), IssuesWarnings({secondID, firstID}))
Interactive verification passed.

Проверьте, что функция выдает предупреждение при уважении набора предупреждения.

testCase.verifyThat(@() issueWarnings({firstID, thirdID, secondID,...
    firstID}), IssuesWarnings({firstID, secondID, thirdID}, ...
    'RespectingSet', true))
Interactive verification passed.

Проверьте, что функция выдает предупреждение при уважении количества предупреждения.

testCase.verifyThat(@() issueWarnings({secondID, firstID, thirdID,...
    secondID}), IssuesWarnings({firstID, secondID, secondID}, ...
    'RespectingCount', true))
Interactive verification passed.

Проверьте, что функция выдает предупреждение при уважении порядка предупреждения.

testCase.verifyThat(@() issueWarnings({firstID, secondID, secondID,...
    thirdID}), IssuesWarnings({firstID, secondID}, 'RespectingOrder', true))
Interactive verification passed.

Проверьте, что функция выпускает точное совпадение ожидаемому профилю предупреждения.

testCase.verifyThat(@() issueWarnings({firstID, secondID, secondID,...
    thirdID}), IssuesWarnings({firstID, secondID, secondID, thirdID}, ...
    'Exactly', true))
Interactive verification passed.

Проверьте, что ограничению не удовлетворяют, не является ли фактическое значение указателем на функцию.

testCase.verifyThat(5, IssuesWarnings({firstID}))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IssuesWarnings failed.
--> The value must be an instance of the expected type.
    
    Actual Class:
        double
    Expected Type:
        function_handle

Actual Value:
         5

Проверьте, что ограничению не удовлетворяют, не выдает ли функция предупреждение.

testCase.verifyThat(@rand, IssuesWarnings({firstID}))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IssuesWarnings failed.
--> The function handle did not issue a correct warning profile.
    The expected warning profile ignores:
      Set
      Count
      Order
    --> The function handle did not issue any warnings.
    
    Expected Warning Profile:
        --> 'first:id'

Evaluated Function:
        @rand

Проверьте, что ограничению не удовлетворяют, выпускает ли функция незаданный идентификатор предупреждения.

testCase.verifyThat(@() issueWarnings({firstID}), IssuesWarnings({secondID}))
Warning: Message 
> In @(id)warning(id,'Message')
  In @(idCell)cellfun(@(id)warning(id,'Message'),idCell)
  In @()issueWarnings({firstID})
  In matlab.unittest.internal.constraints.FunctionHandleConstraint/invoke (line 36)
  In matlab.unittest.internal.constraints.WarningQualificationConstraint/invoke (line 39)
  In matlab.unittest.constraints.IssuesWarnings/invoke (line 431)
  In matlab.unittest.constraints.IssuesWarnings/invokeCapturingOutput (line 510)
  In matlab.unittest.constraints.IssuesWarnings/issuesExpectedWarnings (line 519)
  In matlab.unittest.constraints.IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 62)
  In matlab.unittest.qualifications.Verifiable/verifyThat (line 228) 
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IssuesWarnings failed.
--> The function handle did not issue a correct warning profile.
    The expected warning profile ignores:
      Set
      Count
      Order
    --> The function handle did not issue the correct warnings.
        
        Missing Warnings:
            --> 'second:id'
    
    Actual Warning Profile:
        --> 'first:id'
    Expected Warning Profile:
        --> 'second:id'

Evaluated Function:
        @()issueWarnings({firstID})

Рассмотрите следующее фактическое значение и предупреждение массива.

actVal = @() issueWarnings({firstID, firstID, secondID, firstID});
warnArr = {firstID, secondID, firstID, firstID};

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

testCase.verifyThat(actVal, IssuesWarnings(warnArr, 'Exactly', true))
Warning: Message 
> In @(id)warning(id,'Message')
  In @(idCell)cellfun(@(id)warning(id,'Message'),idCell)
  In @()issueWarnings({firstID,firstID,secondID,firstID})
  In matlab.unittest.internal.constraints.FunctionHandleConstraint/invoke (line 36)
  In matlab.unittest.internal.constraints.WarningQualificationConstraint/invoke (line 39)
  In matlab.unittest.constraints.IssuesWarnings/invoke (line 431)
  In matlab.unittest.constraints.IssuesWarnings/invokeCapturingOutput (line 510)
  In matlab.unittest.constraints.IssuesWarnings/issuesExpectedWarnings (line 519)
  In matlab.unittest.constraints.IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 62)
  In matlab.unittest.qualifications.Verifiable/verifyThat (line 228) 
Warning: Message 
> In @(id)warning(id,'Message')
  In @(idCell)cellfun(@(id)warning(id,'Message'),idCell)
  In @()issueWarnings({firstID,firstID,secondID,firstID})
  In matlab.unittest.internal.constraints.FunctionHandleConstraint/invoke (line 36)
  In matlab.unittest.internal.constraints.WarningQualificationConstraint/invoke (line 39)
  In matlab.unittest.constraints.IssuesWarnings/invoke (line 431)
  In matlab.unittest.constraints.IssuesWarnings/invokeCapturingOutput (line 510)
  In matlab.unittest.constraints.IssuesWarnings/issuesExpectedWarnings (line 519)
  In matlab.unittest.constraints.IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 62)
  In matlab.unittest.qualifications.Verifiable/verifyThat (line 228) 
Warning: Message 
> In @(id)warning(id,'Message')
  In @(idCell)cellfun(@(id)warning(id,'Message'),idCell)
  In @()issueWarnings({firstID,firstID,secondID,firstID})
  In matlab.unittest.internal.constraints.FunctionHandleConstraint/invoke (line 36)
  In matlab.unittest.internal.constraints.WarningQualificationConstraint/invoke (line 39)
  In matlab.unittest.constraints.IssuesWarnings/invoke (line 431)
  In matlab.unittest.constraints.IssuesWarnings/invokeCapturingOutput (line 510)
  In matlab.unittest.constraints.IssuesWarnings/issuesExpectedWarnings (line 519)
  In matlab.unittest.constraints.IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 62)
  In matlab.unittest.qualifications.Verifiable/verifyThat (line 228) 
Warning: Message 
> In @(id)warning(id,'Message')
  In @(idCell)cellfun(@(id)warning(id,'Message'),idCell)
  In @()issueWarnings({firstID,firstID,secondID,firstID})
  In matlab.unittest.internal.constraints.FunctionHandleConstraint/invoke (line 36)
  In matlab.unittest.internal.constraints.WarningQualificationConstraint/invoke (line 39)
  In matlab.unittest.constraints.IssuesWarnings/invoke (line 431)
  In matlab.unittest.constraints.IssuesWarnings/invokeCapturingOutput (line 510)
  In matlab.unittest.constraints.IssuesWarnings/issuesExpectedWarnings (line 519)
  In matlab.unittest.constraints.IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 62)
  In matlab.unittest.qualifications.Verifiable/verifyThat (line 228) 
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IssuesWarnings failed.
--> The function handle did not issue a correct warning profile.
    The expected warning profile must match exactly.
    --> The function handle did not issue the exact warning profile expected.
    
    Actual Warning Profile:
        --> 'first:id'
        --> 'first:id'
        --> 'second:id'
        --> 'first:id'
    Expected Warning Profile:
        --> 'first:id'
        --> 'second:id'
        --> 'first:id'
        --> 'first:id'

Evaluated Function:
        @()issueWarnings({firstID,firstID,secondID,firstID})

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

testCase.verifyThat(actVal, IssuesWarnings(warnArr,...
    'RespectingSet',true,'RespectingOrder',true,'RespectingCount',true))
Interactive verification passed.

В этом примере ограничение, которое задает профиль предупреждения, который уважает набор, порядок и количество, не является тем же самым как тем, которое задает точный профиль предупреждения.