Coverage Report - org.jbehave.core.embedder.FilteredStory
 
Classes in this File Line Coverage Branch Coverage Complexity
FilteredStory
90%
19/21
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, StoryControls storyControls){
 17  0
             this(filter, story, storyControls, false);
 18  0
     }
 19  
     
 20  131
     public FilteredStory(MetaFilter filter, Story story, StoryControls storyControls, boolean givenStory) {
 21  131
             if (  givenStory && storyControls.ignoreMetaFiltersIfGivenStory() ){
 22  1
                     alwaysAllowed = true;
 23  
             }
 24  131
         String storyMetaPrefix = storyControls.storyMetaPrefix();
 25  131
         String scenarioMetaPrefix = storyControls.scenarioMetaPrefix();
 26  131
         Meta storyMeta = story.getMeta().inheritFrom(story.asMeta(storyMetaPrefix));
 27  130
         storyAllowed = filter.allow(storyMeta);
 28  130
         scenariosAllowed = new HashMap<Scenario, Boolean>();
 29  130
         for (Scenario scenario : story.getScenarios()) {
 30  248
             Meta scenarioMeta = scenario.getMeta().inheritFrom(
 31  124
                     scenario.asMeta(scenarioMetaPrefix).inheritFrom(storyMeta));
 32  124
             boolean scenarioAllowed = filter.allow(scenarioMeta);
 33  124
             scenariosAllowed.put(scenario, scenarioAllowed);
 34  124
         }
 35  130
     }
 36  
 
 37  
     public boolean allowed() {
 38  130
             if ( alwaysAllowed ) return true;
 39  129
         return storyAllowed || scenariosAllowed.values().contains(true);
 40  
     }
 41  
 
 42  
     public boolean allowed(Scenario scenario) {
 43  75
             if ( alwaysAllowed ) return true;
 44  74
         return scenariosAllowed.get(scenario);
 45  
     }
 46  
 }