@Test public void shouldGetNoFeaturesIfEmpty() { final BasicSection section = createSection(); assertThat(section.getFeatures()).isEmpty(); }
@Override public Stream<Feature> getFeatures() { return Stream.concat( hasRoot() ? root.getFeatures() : Stream.empty(), getChildren().flatMap(Section::getFeatures)); }
BasicSection implements Section { @Override public Stream<Feature> getFeatures() { return Stream.concat( hasRoot() ? root.getFeatures() : Stream.empty(), getChildren().flatMap(Section::getFeatures)); } }
BasicSection implements Section { @Override public Stream<Feature> getFeatures() { return Stream.concat( hasRoot() ? root.getFeatures() : Stream.empty(), getChildren().flatMap(Section::getFeatures)); } BasicSection(String id);  BasicSection(String id, String style);  BasicSection(String id, String style, String groupingTagPattern); }
BasicSection implements Section { @Override public Stream<Feature> getFeatures() { return Stream.concat( hasRoot() ? root.getFeatures() : Stream.empty(), getChildren().flatMap(Section::getFeatures)); } BasicSection(String id);  BasicSection(String id, String style);  BasicSection(String id, String style, String groupingTagPattern); @Override Section addFeature(Feature feature); @Override String render(CukedoctorDocumentBuilder docBuilder, I18nLoader i18n, DocumentAttributes documentAttributes); @Override int getOrder(); @Override Stream<Feature> getFeatures(); }
BasicSection implements Section { @Override public Stream<Feature> getFeatures() { return Stream.concat( hasRoot() ? root.getFeatures() : Stream.empty(), getChildren().flatMap(Section::getFeatures)); } BasicSection(String id);  BasicSection(String id, String style);  BasicSection(String id, String style, String groupingTagPattern); @Override Section addFeature(Feature feature); @Override String render(CukedoctorDocumentBuilder docBuilder, I18nLoader i18n, DocumentAttributes documentAttributes); @Override int getOrder(); @Override Stream<Feature> getFeatures();  }