### Question:
IterableBuilder implements SpecimenBuilder { @Override public Object create(Object request, SpecimenContext context) { if (!(request instanceof SpecimenType)) { return new NoSpecimen(); } SpecimenType specimenType = (SpecimenType) request; if (!Iterable.class.isAssignableFrom(specimenType.getRawType())) { return new NoSpecimen(); } if (!specimenType.getRawType().isInterface()) { return new NoSpecimen(); } return new ArrayList(); }  @Override Object create(Object request, SpecimenContext context);  }### Answer:
@Test public void non_specimen_type_request_returns_no_specimen() { Object result = this.iterableBuilder.create("string", null); assertEquals(new NoSpecimen(), result); }
@Test public void non_iterable_specimen_type_return_no_specimen() { Object result = this.iterableBuilder.create(SpecimenType.of(Map.class), null); assertEquals(new NoSpecimen(), result); }
@Test public void non_interface_iterable_type_returns_no_specimen() { Object result = this.iterableBuilder.create(Stack.class, null); assertEquals(new NoSpecimen(), result); }
@Test public void class_type_assignable_to_iterable_returns_instance_of_array_list() { Object result = this.iterableBuilder.create(SpecimenType.of(Iterable.class), null); assertTrue(result instanceof ArrayList); result = this.iterableBuilder.create(SpecimenType.of(List.class), null); assertTrue(result instanceof ArrayList); }