package liquibase.precondition; import liquibase.precondition.core.AndPrecondition; import liquibase.precondition.core.OrPrecondition; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import java.util.Map; public class PreconditionFactoryTest { @Before public void setup() { PreconditionFactory.reset(); } @Test public void getInstance() { assertNotNull(PreconditionFactory.getInstance()); assertTrue(PreconditionFactory.getInstance() == PreconditionFactory.getInstance()); } @Test public void register() { PreconditionFactory.getInstance().getPreconditions().clear(); assertEquals(0, PreconditionFactory.getInstance().getPreconditions().size()); PreconditionFactory.getInstance().register(MockPrecondition.class); assertEquals(1, PreconditionFactory.getInstance().getPreconditions().size()); } @Test public void unregister_instance() { PreconditionFactory factory = PreconditionFactory.getInstance(); factory.getPreconditions().clear(); assertEquals(0, factory.getPreconditions().size()); Class<? extends Precondition> precondition = AndPrecondition.class; factory.register(OrPrecondition.class); factory.register(precondition); assertEquals(2, factory.getPreconditions().size()); factory.unregister("and"); assertEquals(1, factory.getPreconditions().size()); } @Test public void reset() { PreconditionFactory instance1 = PreconditionFactory.getInstance(); PreconditionFactory.reset(); assertFalse(instance1 == PreconditionFactory.getInstance()); } @SuppressWarnings("unchecked") @Test public void builtInGeneratorsAreFound() { Map<String, Class<? extends Precondition>> generators = PreconditionFactory.getInstance().getPreconditions(); assertTrue(generators.size() > 5); } @Test public void createPreconditions() { Precondition precondtion = PreconditionFactory.getInstance().create("and"); assertNotNull(precondtion); assertTrue(precondtion instanceof AndPrecondition); } }