package com.flextrade.jfixture.builders; import com.flextrade.jfixture.NoSpecimen; import com.flextrade.jfixture.SpecimenContext; import com.flextrade.jfixture.requests.MultipleRequest; import com.flextrade.jfixture.utility.SpecimenType; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.Arrays; import java.util.List; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Mockito.when; public class TestArrayRelay { private ArrayRelay arrayRelay; @Mock private SpecimenContext mockSpecimenContext; @Before public void initialise() { MockitoAnnotations.initMocks(this); arrayRelay = new ArrayRelay(); } @Test public void non_specimen_type_request_returns_no_specimen() { Object result = this.arrayRelay.create("string", mockSpecimenContext); assertEquals(new NoSpecimen(), result); } @Test public void non_array_type_request_returns_no_specimen() { Object result = this.arrayRelay.create(SpecimenType.of(int.class), mockSpecimenContext); assertEquals(new NoSpecimen(), result); } @Test public void non_list_returned_from_multiple_request_returns_no_specimen() { when(mockSpecimenContext.resolve(any(MultipleRequest.class))).thenReturn(String.class); Object result = this.arrayRelay.create(int[].class, mockSpecimenContext); assertEquals(new NoSpecimen(), result); } @Test public void list_returned_from_multiple_request_is_copied_to_array() { Integer[] array = new Integer[]{1, 2, 3}; List<Integer> list = Arrays.asList(1, 2, 3); when(mockSpecimenContext.resolve(any(MultipleRequest.class))).thenReturn(list); Integer[] result = (Integer[])this.arrayRelay.create(SpecimenType.of(Integer[].class), mockSpecimenContext); assertArrayEquals(array, result); } }