Coverage Report - org.jbehave.core.embedder.FilteredStory
 
Classes in this File Line Coverage Branch Coverage Complexity
FilteredStory
100%
22/22
92%
13/14
3
 
 1  
 package org.jbehave.core.embedder;
 2  
 
 3  
 import java.util.HashMap;
 4  
 import java.util.Map;
 5  
 
 6  
 import org.jbehave.core.model.Meta;
 7  
 import org.jbehave.core.model.Scenario;
 8  
 import org.jbehave.core.model.Story;
 9  
 
 10  
 public class FilteredStory {
 11  
 
 12  
         private boolean alwaysAllowed;
 13  
         private boolean storyAllowed;
 14  
         private Map<Scenario, Boolean> scenariosAllowed;
 15  
 
 16  
         public FilteredStory(MetaFilter filter, Story story,
 17  
                         StoryControls storyControls) {
 18  22
                 this(filter, story, storyControls, false);
 19  22
         }
 20  
 
 21  
         public FilteredStory(MetaFilter filter, Story story,
 22  53
                         StoryControls storyControls, boolean givenStory) {
 23  53
                 if (givenStory && storyControls.ignoreMetaFiltersIfGivenStory()) {
 24  1
                         alwaysAllowed = true;
 25  
                 } else {
 26  52
                         String storyMetaPrefix = storyControls.storyMetaPrefix();
 27  52
                         String scenarioMetaPrefix = storyControls.scenarioMetaPrefix();
 28  52
                         Meta storyMeta = story.getMeta().inheritFrom(
 29  
                                         story.asMeta(storyMetaPrefix));
 30  51
                         storyAllowed = filter.allow(storyMeta);
 31  51
                         scenariosAllowed = new HashMap<Scenario, Boolean>();
 32  51
                         for (Scenario scenario : story.getScenarios()) {
 33  39
                                 Meta scenarioMeta = scenario.getMeta().inheritFrom(
 34  
                                                 scenario.asMeta(scenarioMetaPrefix).inheritFrom(
 35  
                                                                 storyMeta));
 36  39
                                 boolean scenarioAllowed = filter.allow(scenarioMeta);
 37  39
                                 scenariosAllowed.put(scenario, scenarioAllowed);
 38  39
                         }
 39  
                 }
 40  52
         }
 41  
 
 42  
         public boolean allowed() {
 43  52
                 if (alwaysAllowed) {
 44  1
                         return true;
 45  
                 } else {
 46  51
                         return storyAllowed || scenariosAllowed.values().contains(true);
 47  
                 }
 48  
         }
 49  
 
 50  
         public boolean allowed(Scenario scenario) {
 51  33
                 if (alwaysAllowed) {
 52  1
                         return true;
 53  
                 } else {
 54  32
                         return scenariosAllowed.get(scenario);
 55  
                 }
 56  
         }
 57  
 }