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