### Question:
CsvDataProcessor { @Inject CsvDataProcessor(final Provider<Configuration> configProvider, final Provider<DataSource> dataSourceProvider) { this.configProvider = configProvider; this.dataSourceProvider = dataSourceProvider; } @Inject  CsvDataProcessor(final Provider<Configuration> configProvider, final Provider<DataSource> dataSourceProvider); void processFile(final Reader reader, final String delimiter, final char quoteChar, final Runnable command);  }### Answer:
@Test public void testCsvDataProcessor() { final Configuration config = new Configuration(Charsets.UTF_8); config.put("foo", "foovalue"); final DataSource dataSource = new TestDataSource(config); CsvDataProcessor csvProc = new CsvDataProcessor(Providers.of(config), Providers.of(dataSource)); final MutableInt counter = new MutableInt(); csvProc.processFile(new StringReader(CSV_LINES), ";", '\0', new Runnable() { @Override public void run() { dataSource.getNextDataSet("test"); int counterValue = counter.intValue(); assertEquals(config.get("foo"), "foo" + counterValue); assertEquals(dataSource.getCurrentDataSet("test").getValue("testKey1"), "newTestValue1" + counterValue); assertEquals(dataSource.getCurrentDataSet("test").getValue("testKey2"), "testValue2"); dataSource.setFixedValue("test", "testKey1", "blablubb"); dataSource.setFixedValue("test", "testKey2", "blablubb"); counter.increment(); } }); }