Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

satisfiedBy

类: matlab.unittest.constraints.Constraint
包: matlab.unittest.constraints

确定值是否满足约束

说明

示例

TF = satisfiedBy(constObj,actVal) 确定 actVal 是否满足约束 constObj。当约束满足时,该方法返回 true(逻辑值 1),当约束不满足时,返回 false(逻辑值 0)。创建自定义约束时,您必须在该方法中放置比较逻辑。

satisfiedBy 方法更常用于测试通过的用例。因此,验证失败后可以通过调用 getDiagnosticFor 等其他方法来更高效地提供更详细的分析信息。

输入参数

constObj

Constraint 实例

actVal

根据约束计算的值

示例

全部展开

创建一个自定义约束,该约束确定给定值的大小是否与预期值的大小相同。在 satisfiedBy 方法中包括比较逻辑。

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