### Question:
FeaturableModel extends FeaturableAbstract { @Override public Media getMedia() { return media; } FeaturableModel(Services services, Setup setup); @Override final void addFeature(Feature feature); @Override Media getMedia();  }### Answer:
@Test void testAddFeatures() { final Media media = Medias.create("Features.xml"); final Xml root = new Xml(FeaturableConfig.NODE_FEATURABLE); final Xml unknown = root.createChild(FeaturableConfig.NODE_FEATURE); unknown.setText(MyFeature.class.getName()); root.save(media); Featurable featurable = new FeaturableModel(new Services(), new Setup(media)); featurable.checkListener(featurable); assertEquals(media, featurable.getMedia()); for (final Feature next : featurable.getFeatures()) { assertTrue(MyFeature.class.equals(next.getClass()) || Identifiable.class.isAssignableFrom(next.getClass()) || Recycler.class.isAssignableFrom(next.getClass()), next.getClass().getName()); } featurable = new FeaturableModel(new Services(), new Setup(media)); UtilFile.deleteFile(media.getFile()); }