Configuration config = new ConfigurationImpl();
((ConfigurationImpl) config).setProperties(props);
((ConfigurationImpl) config).setThreshold(0.85);
((ConfigurationImpl) config).setMaybeThreshold(0.7);
JDBCDataSource jdbc = new JDBCDataSource();
jdbc.setDriverClass("klass");
jdbc.setConnectionString("konnection");
jdbc.setUserName("user");
jdbc.setPassword("secret");
jdbc.setQuery("select");
jdbc.addColumn(new Column("id", "ID", null, null));
jdbc.addColumn(new Column("name", "NAME", null, null));
jdbc.addColumn(new Column("email", "EMAIL", null, null));
((ConfigurationImpl) config).addDataSource(0, jdbc);
// --- write and reload
File outfile = tmpdir.newFile("config.xml");
ConfigWriter.write(config, outfile.getAbsolutePath());
config = ConfigLoader.load(outfile.getAbsolutePath());
// --- verify loaded correctly
assertEquals(1, config.getDataSources().size());
jdbc = (JDBCDataSource) config.getDataSources().iterator().next();
assertEquals("klass", jdbc.getDriverClass());
assertEquals("konnection", jdbc.getConnectionString());
assertEquals("user", jdbc.getUserName());
assertEquals("secret", jdbc.getPassword());
assertEquals("select", jdbc.getQuery());
assertEquals(3, jdbc.getColumns().size());
// FIXME: check the columns (kind of hard given lack of ordering)
assertTrue(config.getDataSources(1).isEmpty());
assertTrue(config.getDataSources(2).isEmpty());
assertEquals(config.getThreshold(), 0.85);