// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved. // Released under the terms of the CPL Common Public License version 1.0. package fitnesse.plugins.slimcoverage; import fitnesse.testsystems.TestPage; import fitnesse.testsystems.slim.SlimTestContextImpl; import fitnesse.testsystems.slim.tables.ScenarioTable; public class SlimCoverageTestContextImpl extends SlimTestContextImpl { private final SlimScenarioUsagePer usage; public SlimCoverageTestContextImpl(TestPage testPage, SlimScenarioUsagePer usageByPage) { super(testPage); usage = usageByPage; } @Override public void addScenario(String scenarioName, ScenarioTable scenarioTable) { if (usage != null) { String key = getGroupName(scenarioTable); usage.addDefinition(key); } super.addScenario(scenarioName, scenarioTable); } @Override public ScenarioTable getScenario(String scenarioName) { ScenarioTable scenarioTable = super.getScenario(scenarioName); if (usage != null && scenarioTable != null) { String key = getGroupName(scenarioTable); usage.addUsage(key); } return scenarioTable; } protected String getGroupName(ScenarioTable scenarioTable) { String name = scenarioTable.getName(); int inputCount = scenarioTable.getInputs().size(); int outputCount = scenarioTable.getOutputs().size(); String keyPattern; if (inputCount == 0 && outputCount == 0) { keyPattern = "%s"; } else if (outputCount == 0) { keyPattern = "%s[%s]"; } else { keyPattern = "%s[%s,%s]"; } return String.format(keyPattern, name, inputCount, outputCount); } }