private void testTableDrops(boolean forceDrop) {
Change tabC1Dep = new ChangeIncremental(tableChangeType, "schema", "tabC", "chng1", 0, "tabCExistingToBeDropped", CONTENT);
Change tabC1Src = new ChangeIncremental(tableChangeType, "schema", "tabC", tabC1Dep.getChangeName(), 0, "tabCExistingToBeDropped", CONTENT);
Change tabC2Src = new ChangeIncremental(tableChangeType, "schema", "tabC", "chng2", 1, "tabCExistingToBeDropped", CONTENT);
Change tabC3Src = new ChangeIncremental(tableChangeType, "schema", "tabC", "chng3", 2,
"tabCExistingToBeDropped", CONTENT).withDrop(true).withKeepIncrementalOrder(true);
Change tabD1Src = new ChangeIncremental(tableChangeType, "schema", "tabD", "cdrop1", 0, "tabDNewTableIsDropped", CONTENT);
ChangeIncremental tabD2Src = new ChangeIncremental(tableChangeType, "schema", "tabD", "cdrop2", 1,
"tabDNewTableIsDropped", CONTENT).withDrop(true).withKeepIncrementalOrder(true);
tabD2Src.setForceDropForEnvCleaning(forceDrop);
ListIterable<ChangeCommand> changeset = cmdCalc.calculateCommands(tableChangeType, Lists.mutable.<ChangePair>of(
new ChangePair(tabC1Src, tabC1Dep)
, new ChangePair(tabC2Src, null)
, new ChangePair(tabC3Src, null)
, new ChangePair(tabD1Src, null)
, new ChangePair(tabD2Src, null)
), unusedChangesArg, false);
assertEquals(4, changeset.size());
Verify.assertAnySatisfy(changeset, assertValue(DeployChangeCommand.class, tabC2Src));
Verify.assertAnySatisfy(changeset, assertValue(DropObjectChangeCommand.class, tabC3Src));
if (forceDrop) {
Verify.assertAnySatisfy(changeset, assertValue(DeployChangeCommand.class, tabD1Src));
Verify.assertAnySatisfy(changeset, assertValue(DropObjectChangeCommand.class, tabD2Src));
} else {
Verify.assertAnySatisfy(changeset, assertValue(AlreadyDroppedTableWarning.class, tabD1Src));
Verify.assertAnySatisfy(changeset, assertValue(AlreadyDroppedTableWarning.class, tabD2Src));
}
}