Main Content

getNegativeDiagnosticFor

クラス: matlab.unittest.constraints.BooleanConstraint
パッケージ: matlab.unittest.constraints

値を打ち消す診断の生成

説明

diag = getNegativeDiagnosticFor(constObj,actVal) は、制約 constObj に対して、指定された値 actVal を解析し、constObj の打ち消しに matlab.unittest.diagnostics.Diagnostic オブジェクトである diag を生成します。このメソッドは保護されたメソッドです。

このメソッドが生成する診断は、制約を否定する意味を表しています。たとえば、架空の制約 IsTasty について考えます。検定で IsTasty の打ち消しが使用される場合、実際の値が "tasty" であると判明するとテストは失敗します。したがって、getNegativeDiagnosticFor は、値が制約を正しく満たしていない理由を記述する詳細を返さなければなりません。

ConstraintgetDiagnosticFor メソッドのように、getNegativeDiagnosticFor メソッドは通常、検定エラーが発生した場合に呼び出されます。したがって、getNegativeDiagnosticFor では、エラー発生後のより詳細な解析を satisfiedBy メソッドよりも効率的に処理できます。

入力引数

constObj

BooleanConstraint インスタンス

actVal

比較の値

すべて展開する

指定された値と期待される値のサイズが同じかどうかを判定する、カスタムの boolean 制約を作成します。制約が打ち消されたときに Diagnostic オブジェクトを提供する getNegativeDiagnosticFor メソッドを実装します。

classdef HasSameSizeAs < matlab.unittest.constraints.BooleanConstraint
    
    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 = protected)
        % Produce a diagnostic for the negated constraint
        function diag = getNegativeDiagnosticFor(constraint,actual)
            import matlab.unittest.diagnostics.StringDiagnostic
            if constraint.sizeMatchesExpected(actual) % Constraint satisfied incorrectly
                diag = StringDiagnostic(sprintf(...
                    ['Negated HasSameSizeAs failed.\nSize [%s] of '...
                    'Actual Value and Expected Value were the same '...
                    'but should not have been.'],int2str(size(actual))));
            else
                diag = StringDiagnostic('Negated HasSameSizeAs passed.');
            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