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

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

Ограничительная структура определения, содержащая конкретное поле

Конструкция

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

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

fieldname

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

Свойства

Field

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

Примеры

свернуть все

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

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.