getDiagnosticFor

Класс: matlab.unittest.constraints.Constraint
Пакет: matlab.unittest.constraints

Произведите диагностику для сравненного значения

Описание

пример

diag = getDiagnosticFor(constObj,actVal) производит Diagnostic объект diag для ограничения constObj и значение actVal. При создании пользовательского ограничения необходимо реализовать getDiagnosticFor метод, чтобы анализировать значение actVal против ограничения constObj и возвратите matlab.unittest.diagnostics.Diagnostic объект.

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

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

constObj

Constraint экземпляр

actVal

Значение для сравнения

Примеры

развернуть все

Создайте пользовательское ограничение, которое определяет, имеет ли данное значение тот же размер как ожидаемое значение. Реализуйте getDiagnosticFor метод, чтобы оценить фактическое значение против ограничения и обеспечить Diagnostic объект.

classdef HasSameSizeAs < matlab.unittest.constraints.Constraint
    
    properties(SetAccess = immutable)
        ValueWithExpectedSize
    end
    
    methods
        % Class constructor
        function constraint = HasSameSizeAs(value)
            constraint.ValueWithExpectedSize = value;
        end
        
        % Determine if the actual value satisfies the constraint
        function bool = satisfiedBy(constraint,actual)
            bool = constraint.sizeMatchesExpected(actual);
        end
        
        % Produce a diagnostic for the constraint
        function diag = getDiagnosticFor(constraint,actual)
            import matlab.unittest.diagnostics.StringDiagnostic
            if constraint.sizeMatchesExpected(actual)
                diag = StringDiagnostic('HasSameSizeAs passed.');
            else
                diag = StringDiagnostic(sprintf(...
                    'HasSameSizeAs failed.\nActual Size: [%s]\nExpectedSize: [%s]',...
                    int2str(size(actual)),...
                    int2str(size(constraint.ValueWithExpectedSize))));
            end
        end
    end
    
    methods(Access = private)
        % Determine if the actual and expected values have the same size
        function bool = sizeMatchesExpected(constraint,actual)
            bool = isequal(size(actual),size(constraint.ValueWithExpectedSize));
        end
    end
    
end