matlab.unittest.constraints.HasField class

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

Структура, задающая ограничения, содержащая конкретное поле

Конструкция

HasField(fieldname) предоставляет структуру, задающую ограничения, содержащую конкретное поле, fieldname. Ограничение выполняется, если фактическое значение является структурой, и эта структура содержит поле с именем fieldname.

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

fieldname

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

Свойства

Field

Имя поля, которое должно содержать структура, чтобы удовлетворить ограничению. Установите это свойство через конструктор через fieldname входной параметр.

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

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

Примеры

свернуть все

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.HasField

testCase = TestCase.forInteractiveUse;

Задайте следующую структуру, S, с двумя полями.

S = struct('Tag', 123, 'Serial', 345);

Проверьте, что структура имеет 'Tag' поле.

testCase.verifyThat(S, HasField('Tag'))
Interactive verification passed.

Проверьте, что структура имеет 'tag' поле.

testCase.verifyThat(S, HasField('tag'))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
HasField failed.
--> The value did not have the expected field.
    
    Actual Fieldnames:
            'Tag'
            'Serial'
    Expected Fieldname:
            'tag'

Actual Value:
           Tag: 123
        Serial: 345

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

Проверьте, что структура имеет 'Tag' поле.

testCase.verifyThat(S, HasField('Tag'))
Interactive verification passed.

Проверьте, что структура имеет оба 'Tag' и a 'Serial' поле.

testCase.verifyThat(S, HasField('Tag') & HasField('Serial'))
Interactive verification passed.

Проверьте, что структура не имеет 'Name' поле.

testCase.verifyThat(S, ~HasField('Name'))
Interactive verification passed.