### Question:
ChartPointsFormatter implements EventListener, EventWriter,StrictAware,PluginSpawner { private void process(SimulationResult result) { if (result != null) { eventBus.send(new ChartStarted(eventBus.getTime(),eventBus.getTimeMillis())); createMinions(); Chart chart = null; HashMap<String,List<GroupResult>> results = new HashMap<String,List<GroupResult>>(); if (result.getChildResults() != null && !result.getChildResults().isEmpty()) { for (GroupResult o : result.getChildResults()) { if (results.containsKey(o.getName())) { results.get(o.getName()).add(o); } else { results.put(o.getName(), new ArrayList<GroupResult>(Arrays.asList(o))); } } chart = createChart(new BaseResult(result.getName(),result.getResult(),result.getStart(),result.getStop()), result.getStart(),result.getStop(),results); } reset(); addLines(chart); this.finishReport(); eventBus.send(new ChartFinished(eventBus.getTime(),eventBus.getTimeMillis(),chart)); } } ChartPointsFormatter(AppendableBuilder builder, String[] options);  ChartPointsFormatter(AppendableBuilder builder); @Override void setEventPublisher(EventPublisher publisher); @Override void setStrict(boolean strict); @Override void setEventBus(EventBus eventBus);  }### Answer:
@Test public void testProcess() { try { ChartPointsFormatter cpf = new ChartPointsFormatter(new AppendableBuilder("file: PluginFactory pf = new PluginFactory(); PerfRuntimeOptions options = new PerfRuntimeOptions(); Plugins plugins = new Plugins(this.getClass().getClassLoader(), pf, options); plugins.addPlugin(cpf); plugins.setEventBusOnPlugins(eventBus); eventBus.send(new StatisticsFinished(eventBus.getTime(),eventBus.getTimeMillis(),new Statistics())); } catch (CucumberException e) { fail("CucumberException"); } assertFalse(deleteFile("C:/test/chartpoints.csv")); }