@Test
public void testFeatureFileParsing() {

    final FeatureFileParser parser = new FeatureFileParser();
    final FeatureFile ff = parser.loadFeatureFile(new File("./target/test-classes/features/example2.feature"));
    Assert.assertNotNull(ff);
    Assert.assertNotNull(ff.getName());
    Assert.assertNotNull(ff.getScenarios());
    Assert.assertThat(ff.getScenarios().size(), is(4));
    final Scenario sc1 = ff.getScenarios().get(1);
    Assert.assertTrue(sc1.hasBackground());
    Assert.assertThat(sc1.getBackground().getSteps().size(), is(1));
    Assert.assertThat(sc1.getSteps().size(), is(4));
    final Step withEmailAddress = ff.getScenarios().get(0).getSteps().get(0);
    Assert.assertThat(withEmailAddress.getLine(), is("Given something with an@emailaddress.com"));
    final Scenario sc2 = ff.getScenarios().get(2);
    Assert.assertTrue(sc2.isOutline());
    Assert.assertThat(sc2.getSteps().size(), is(6));
    Assert.assertThat(sc2.getExampleParameters().size(), is(8));
    final Scenario sc3 = ff.getScenarios().get(3);
    Assert.assertThat(sc3.getSteps().size(), is(5));
    final Step step = sc3.getSteps().get(2);
    Assert.assertThat(step.getInlineTable().size(), is(1));
    final Map<String, String> inlineTableRow0 = step.getInlineTable().get(0);
    Assert.assertThat(inlineTableRow0.size(), is(4));
    Assert.assertFalse(ff.getScenarios().get(0).getTags().isEmpty());
    // TODO - test out the tags
    final Set<String> tags = ff.getScenarios().get(0).getTags();
    Assert.assertNotNull(tags);
    Assert.assertTrue(tags.contains("@tag1"));
    Assert.assertTrue(tags.contains("@tag2"));
    final Set<String> tags2 = ff.getScenarios().get(1).getTags();
    Assert.assertNotNull(tags2);
    Assert.assertThat(tags2, hasSize(1));
    Assert.assertTrue(tags2.contains("@tag3"));
}