public SELF the_scenario_has_$_default_cases(int ncases) {
   reportModel.getLastScenarioModel().clearCases();
   for (int i = 0; i < ncases; i++) {
     addDefaultCase(reportModel.getLastScenarioModel());
   }
   return self();
 }
 public SELF a_report_model_with_name(String name) {
   a_report_model();
   reportModel.setClassName(name);
   for (ScenarioModel model : reportModel.getScenarios()) {
     model.setClassName(name);
   }
   return self();
 }
  private void createScenarioModel(String description, String testMethodName) {
    ScenarioModel scenarioModel = new ScenarioModel();
    scenarioModel.setClassName(reportModel.getClassName());
    scenarioModel.setDescription(description);
    scenarioModel.setTestMethodName(testMethodName);

    addDefaultCase(scenarioModel);

    reportModel.getScenarios().add(scenarioModel);
  }
 public SELF the_report_has_$_scenarios(int n) {
   reportModel.getScenarios().clear();
   for (int i = 0; i < n; i++) {
     createScenarioModel("something should happen " + i, "something_should_happen_" + i);
   }
   return self();
 }
 public SELF scenario_$_has_no_steps(int i) {
   ScenarioModel scenarioModel = reportModel.getLastScenarioModel();
   for (ScenarioCaseModel caseModel : scenarioModel.getScenarioCases()) {
     caseModel.setSteps(Collections.<StepModel>emptyList());
   }
   return self();
 }
 public SELF case_$_has_no_steps(int caseNr) {
   reportModel
       .getLastScenarioModel()
       .getCase(caseNr - 1)
       .setSteps(Collections.<StepModel>emptyList());
   return self();
 }
 public SELF all_cases_have_a_step_$_with_argument(String name, String arg) {
   int i = 1;
   for (ScenarioCaseModel caseModel : reportModel.getLastScenarioModel().getScenarioCases()) {
     case_$_has_a_step_$_with_argument(i++, name, arg);
   }
   return self();
 }
  public SELF a_report_model() {
    reportModel = new ReportModel();
    reportModel.setClassName("Test Class");

    createScenarioModel("something should happen", "something_should_happen");

    return self();
  }
 private StepModel getStep(int stepNr, int scenarioNr, int caseNr) {
   return reportModel
       .getScenarios()
       .get(scenarioNr - 1)
       .getScenarioCases()
       .get(caseNr - 1)
       .getStep(stepNr - 1);
 }
 public SELF the_scenario_has_$_cases(int ncases) {
   ScenarioModel scenarioModel = reportModel.getLastScenarioModel();
   scenarioModel.clearCases();
   for (int i = 0; i < ncases; i++) {
     scenarioModel.addCase(new ScenarioCaseModel());
   }
   return self();
 }
 public ReportStatistics getStatistics(ReportModel model) {
   ReportStatistics result = new ReportStatistics();
   model.accept(new StatisticsVisitor(result));
   return result;
 }
 public SELF scenario_$_has_tag_$_with_value_$(int i, String name, String value) {
   latestTag = new Tag(name, value).setPrependType(true);
   reportModel.getScenarios().get(i - 1).addTag(latestTag);
   reportModel.addTag(latestTag);
   return self();
 }
 private ScenarioCaseModel getCase(int ncase) {
   return reportModel.getLastScenarioModel().getScenarioCases().get(ncase - 1);
 }
 private ScenarioCaseModel getCase(int scenarioNr, int caseNr) {
   return reportModel.getScenarios().get(scenarioNr - 1).getCase(caseNr - 1);
 }
 public SELF the_scenario_has_a_duration_of_$_nano_seconds(long durationInNanos) {
   reportModel.getLastScenarioModel().setDurationInNanos(durationInNanos);
   return self();
 }
 public SELF the_scenario_has_parameters(String... params) {
   reportModel.getLastScenarioModel().addParameterNames(params);
   return self();
 }