package cucumber.runtime.java.guice.integration; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; import javax.inject.Inject; import javax.inject.Provider; import java.util.ArrayList; import java.util.List; import static cucumber.runtime.java.guice.matcher.ElementsAreAllUniqueMatcher.elementsAreAllUnique; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.assertThat; public class UnScopedSteps { private static final List<UnScopedObject> OBJECTS = new ArrayList<UnScopedObject>(3); private final Provider<UnScopedObject> unScopedObjectProvider; @Inject public UnScopedSteps(Provider<UnScopedObject> unScopedObjectProvider) { this.unScopedObjectProvider = unScopedObjectProvider; } @Given("^an un-scoped instance has been provided in this scenario$") public void an_un_scoped_instance_has_been_provided_in_this_scenario() throws Throwable { OBJECTS.clear(); provide(); } @When("^another un-scoped instance is provided$") public void another_un_scoped_instance_is_provided() throws Throwable { provide(); } @Then("^all three provided instances are unique instances$") public void all_three_provided_instances_are_unique_instances() throws Throwable { assertThat("Expected test scenario to provide three objects.", OBJECTS.size(), equalTo(3)); assertThat(OBJECTS, elementsAreAllUnique()); } private void provide() { UnScopedObject unScopedObject = unScopedObjectProvider.get(); assertThat(unScopedObject, notNullValue()); OBJECTS.add(unScopedObject); } }