exponenta event banner

matlab.unittest.constraints.IscuesWarnings класс

Пакет: 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 (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'.

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

Ручка. Сведения о том, как классы обработки влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

свернуть все

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

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})

Проверьте, совпадает ли массив предупреждения с ожидаемым массивом при соблюдении параметров set, order и count.

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

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