matlab.unittest.constraints.IssuesWarnings class

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

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

Описание

The 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 (logical 0 или 1). Когда это значение falseобразец полагается на спецификацию других параметров и поведение экземпляра по умолчанию, чтобы определить строгость его сравнения. Когда установлено значение trueобразец требует, чтобы профиль предупреждения совпадал с указанным профилем предупреждения.

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

'RespectingCount'

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

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

'RespectingOrder'

Индикатор соответствия порядка элементов, заданный как false или true (logical 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 (logical 0 или 1). Когда это значение false, образец игнорирует дополнительные представителей набора. Когда установлено значение trueобразец чувствителен к дополнительным представителям набора. Это означает, что в дополнение к тому, что все указанные предупреждения выдаются, этот образец не удовлетворяется, если выдаются какие-либо дополнительные, неуточненные предупреждения.

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

'WhenNargoutIs'

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

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

Свойства

Exact

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

ExpectedWarnings

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

FunctionOutputs

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

Nargout

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

RespectCount

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

RespectOrder

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

RespectSet

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

Копировать семантику

Указатель. Чтобы узнать, как классы handle влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

свернуть все

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

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

testCase = TestCase.forInteractiveUse;

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

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

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

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.

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