package restx.factory; import com.google.common.base.Optional; import com.google.common.collect.ImmutableMultimap; import org.junit.Test; import static org.assertj.core.api.Assertions.*; /** * User: xavierhanin * Date: 1/31/13 * Time: 6:34 PM */ public class StdWarehouseTest { @Test public void should_checkin_and_checkout_from_disposable_box() throws Exception { Warehouse warehouse = new StdWarehouse(); warehouse.checkIn(new DisposableComponentBox<>(NamedComponent.of(String.class, "name", "test")), new SatisfiedBOM(BillOfMaterials.EMPTY, ImmutableMultimap.<Factory.Query<?>, NamedComponent<?>>of())); Optional<NamedComponent<String>> component = warehouse.checkOut(Name.of(String.class, "name")); assertThat(component.isPresent()).isTrue(); assertThat(component.get().getName().getName()).isEqualTo("name"); assertThat(component.get().getComponent()).isEqualTo("test"); component = warehouse.checkOut(Name.of(String.class, "name")); assertThat(component.isPresent()).isFalse(); } @Test public void should_checkin_and_checkout_from_boundless_box() throws Exception { Warehouse warehouse = new StdWarehouse(); warehouse.checkIn(new BoundlessComponentBox<>(NamedComponent.of(String.class, "name", "test")), new SatisfiedBOM(BillOfMaterials.EMPTY, ImmutableMultimap.<Factory.Query<?>, NamedComponent<?>>of())); Optional<NamedComponent<String>> component = warehouse.checkOut(Name.of(String.class, "name")); assertThat(component.isPresent()).isTrue(); assertThat(component.get().getName().getName()).isEqualTo("name"); assertThat(component.get().getComponent()).isEqualTo("test"); component = warehouse.checkOut(Name.of(String.class, "name")); assertThat(component.isPresent()).isTrue(); assertThat(component.get().getName().getName()).isEqualTo("name"); assertThat(component.get().getComponent()).isEqualTo("test"); } }