exponenta event banner

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

Пакет: 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' и 'Serial' поле.

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

Убедитесь, что структура не имеет 'Name' поле.

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