matlab.unittest.constraints. Класс IssuesWarnings

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

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

Описание

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

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

Конструкция

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

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

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

warnArr

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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})

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

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

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