package cucumber.runtime.java.picocontainer;
import cucumber.api.java.ObjectFactory;
import org.junit.Test;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class PicoFactoryTest {
@Test
public void shouldGiveUsNewInstancesForEachScenario() {
ObjectFactory factory = new PicoFactory();
factory.addClass(StepDefs.class);
// Scenario 1
factory.start();
StepDefs o1 = factory.getInstance(StepDefs.class);
factory.stop();
// Scenario 2
factory.start();
StepDefs o2 = factory.getInstance(StepDefs.class);
factory.stop();
assertNotNull(o1);
assertNotSame(o1, o2);
}
@Test
public void shouldDisposeOnStop() {
// Given
ObjectFactory factory = new PicoFactory();
factory.addClass(StepDefs.class);
// When
factory.start();
StepDefs steps = factory.getInstance(StepDefs.class);
// Then
assertFalse(steps.getBelly().isDisposed());
// When
factory.stop();
// Then
assertTrue(steps.getBelly().isDisposed());
}
}