www.gusucode.com > simcoverage工具箱matlab源码程序 > simcoverage/+cvi/@ReportData/getDecisionInfo.m

    function decisions = getDecisionInfo(this, decisionData, decisionIds, txtDetail)
% DECISION_INFO - Synthesize decision coverage data
% for a all the decision objects.

% Copyright 1990-2015 The MathWorks, Inc.

    for i=1:length(decisionIds)
        decId = decisionIds(i);
        decData = [];
        decData.cvId = decId;
        decData.text = cvi.ReportUtils.getTextOf(decId,-1,[],txtDetail); 
        [outcomes,startIdx, activeOutcomeIdx, hasVariableSize]  = cv('get',decId,'.dc.numOutcomes','.dc.baseIdx', '.dc.activeOutcomeIdx', '.hasVariableSize');
        isJustified = cv('get', cv('get', decId, '.slsfobj'), '.isJustified');
        decData.numOutcomes = outcomes;
        if outcomes==1
            decData.totals = decisionData (startIdx+1,:);
        else
            decData.totals = sum(decisionData ((startIdx+1):(startIdx+outcomes),:));
        end
        if outcomes==1
            decData.outCnts = decisionData ((startIdx+1):(startIdx+outcomes),:)>0;
        else
            decData.outCnts = sum(decisionData ((startIdx+1):(startIdx+outcomes),:)>0);
        end
                

        decData.isVariable = hasVariableSize;
        if (hasVariableSize)
            decData.hasVariableOutcome = true;
            decData.maxActOutcome = decisionData (activeOutcomeIdx + 1,end);                        
            decData.isActive = any(decData.maxActOutcome > 0);
            decData.covered = (decData.outCnts(end)==decData.maxActOutcome);
        else
            nel = numel(decData.outCnts);
            decData.hasVariableOutcome = false;
            decData.maxActOutcome = zeros(1,nel);            
            decData.isActive = ~cv('get', decId, '.isDisabled');            
            decData.covered = (decData.outCnts(end)==outcomes);            
        end
        decData.justifiedOutCnts = zeros(size(decData.outCnts));
        decData.isJustified = false;
        if isJustified && any(~decData.covered)
            decData.justifiedOutCnts = decData.numOutcomes - decData.outCnts; 
            decData.isJustified = any(decData.justifiedOutCnts);
        end
        
        maxActOutcome = max(decData.maxActOutcome);

        for j = 1:outcomes;
            if  ~hasVariableSize || (hasVariableSize && decData.isActive && j <= maxActOutcome ) 
                decData.outcome(j).isActive = true;
                decData.outcome(j).execCount = decisionData (startIdx+j,:);                
            else
                decData.outcome(j).isActive = false;
                decData.outcome(j).execCount = 0;
            end
            decData.outcome(j).justifiedExecCount = zeros(size(decData.outcome(j).execCount));
            decData.outcome(j).isJustified = false;
            if isJustified && (all(decData.totals) == 0 || any(~decData.covered))
                decData.outcome(j).justifiedExecCount = decData.totals - decData.outcome(j).execCount;
                decData.outcome(j).isJustified = any(~decData.covered);
            end
            decData.outcome(j).text = cvi.ReportUtils.getTextOf(decId,j-1,[],txtDetail);
        end
        decisions(i) = decData;
    end