package fitnesse.testsystems.slim; import java.util.Collection; import java.util.Map; import fitnesse.plugins.slimcoverage.SlimScenarioUsage; import fitnesse.plugins.slimcoverage.SlimScenarioUsagePer; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class SlimScenarioUsageTest { private SlimScenarioUsage usage = new SlimScenarioUsage(); @Test public void testScenariosWithSmallestScope() { String page1 = "Suite1.Page1"; String page2 = "Suite1.SuiteA.Page1"; String page3 = "Suite1.SuiteA.Page2"; String page4 = "Suite1.SuiteAPage1.Page1"; String page5 = "Suite1.SuiteAPage1.Page2"; String globalScenario = "global"; String localScenario = "localPage1"; String localScenario2 = "Suite1.SuiteA.Page2"; String suiteAScenario1 = "suiteAScen1"; String suiteAScenario2 = "suiteAScen2"; String suiteAPage1Scenario = "suiteA1"; String suiteAPageUnusedScenario = "suiteA2"; SlimScenarioUsagePer page1U = usage.getUsageByPage(page1); page1U.addUsage(globalScenario, 1); page1U.addUsage(localScenario, 1); SlimScenarioUsagePer page2U = usage.getUsageByPage(page2); page2U.addUsage(suiteAScenario1, 1); page2U.addUsage(suiteAScenario2, 2); SlimScenarioUsagePer page3U = usage.getUsageByPage(page3); page3U.addUsage(globalScenario, 1); page3U.addUsage(suiteAScenario1, 2); page3U.addUsage(suiteAScenario2, 1); SlimScenarioUsagePer page4U = usage.getUsageByPage(page4); page4U.addUsage(globalScenario, 2); page4U.addDefinition(suiteAPageUnusedScenario); page4U.addUsage(suiteAPage1Scenario, 1); page4U.addUsage(localScenario2, 1); SlimScenarioUsagePer page5U = usage.getUsageByPage(page5); page5U.addDefinition(suiteAPageUnusedScenario); page5U.addUsage(suiteAPage1Scenario, 1); Map<String, Collection<String>> scenariosPerScope = usage.getScenariosBySmallestScope(); assertScopePresent(scenariosPerScope, "Suite1"); assertScopePresent(scenariosPerScope, page1); assertScopePresent(scenariosPerScope, "Suite1.SuiteA"); assertScopePresent(scenariosPerScope, "Suite1.SuiteAPage1"); assertScopePresent(scenariosPerScope, page4); assertEquals("Scopes: " + scenariosPerScope.toString(), 5, scenariosPerScope.size()); assertScopeContains(scenariosPerScope, "Suite1", globalScenario); assertScopeContains(scenariosPerScope, page1, localScenario); assertScopeContains(scenariosPerScope, "Suite1.SuiteA", suiteAScenario1, suiteAScenario2); assertScopeContains(scenariosPerScope, "Suite1.SuiteAPage1", suiteAPage1Scenario); assertScopeContains(scenariosPerScope, page4, localScenario2); } private void assertScopeContains(Map<String, Collection<String>> scenariosPerScope, String scopeName, String... scenarios) { Collection<String> scope = scenariosPerScope.get(scopeName); for (String scenario : scenarios) { assertTrue(scope + " did not contain " + scenario, scope.contains(scenario)); } assertEquals("Wrong number of scenarios in " + scopeName + ": " + scope, scenarios.length, scope.size()); } private void assertScopePresent(Map<String, Collection<String>> scenariosPerScope, String scopeName) { assertTrue(scenariosPerScope + " did not contain " + scopeName, scenariosPerScope.containsKey(scopeName)); } }