### Question:
DdlVersionIncrementerImpl implements DdlVersionIncrementer { public void increment(String comment, Callback callback) { try { DdlVersionDirectory currentVersionDir = getCurrentDdlVersionDirectory(); DdlVersionDirectory nextVersionDir = getNextDdlVersionDirectory(currentVersionDir); copyDirectory(currentVersionDir, nextVersionDir); callback.execute(nextVersionDir); if (currentVersionDir.isFirstVersion()) { copyDropDirectory(nextVersionDir, currentVersionDir); } incrementVersionNo(comment); } catch (RuntimeException e) { recover(); throw e; } } DdlVersionIncrementerImpl(
            DdlVersionDirectoryTree ddlVersionDirectoryTree,
            GenDdlListener genDdlListener, GenDialect dialect,
            DataSource dataSource, List<String> createDirNameList,
            List<String> dropDirNameList); void increment(String comment, Callback callback);  }### Answer:
@Test public void testIncrement() throws Exception { final Object[] values = new Object[3]; incrementer.increment("changeLog", new DdlVersionIncrementer.Callback() { public void execute(DdlVersionDirectory versionDirectory) { values[0] = versionDirectory.getCreateDirectory() .asFile(); values[1] = versionDirectory.getDropDirectory() .asFile(); values[2] = versionDirectory.getVersionNo(); } }); File v012 = new File(baseDir, "v012"); assertEquals(new File(v012, "create"), values[0]); assertEquals(new File(v012, "drop"), values[1]); assertEquals(new Integer(12), values[2]); }