package org.magenta.core; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.Arrays; import org.junit.Test; import org.magenta.Fixture; import org.magenta.FixtureFactory; import org.magenta.DataKey; import org.magenta.DataSpecification; import org.magenta.GenerationStrategy; import org.mockito.Mockito; import com.google.common.eventbus.EventBus; public class GeneratedDataSetTest { @Test public void testConstructor(){ //setup fixtures Integer[] expected={1,2,3,4,5}; FixtureFactory<DataSpecification> domain=mock(FixtureFactory.class); GenerationStrategy<Integer, DataSpecification> strategy=mock(GenerationStrategy.class); GeneratedDataSet<Integer,DataSpecification> sut=new GeneratedDataSet<>(domain, strategy, DataKey.makeDefault(Integer.class), mock(EventBus.class)); //exercise sut //verify outcome assertThat(sut.isGenerated()).isTrue(); } @Test public void testGet(){ //setup fixtures Integer[] expected={1,2,3,4,5}; FixtureFactory<DataSpecification> domain=mock(FixtureFactory.class); GenerationStrategy<Integer, DataSpecification> strategy=mock(GenerationStrategy.class); when(strategy.generate(Mockito.any(Fixture.class))).thenReturn(Arrays.asList(expected)); GeneratedDataSet<Integer,DataSpecification> sut=new GeneratedDataSet<>(domain, strategy, DataKey.makeDefault(Integer.class), mock(EventBus.class)); //exercise sut Iterable<Integer> actual=sut.get(); sut.get(); sut.get(); //verify outcome assertThat(sut.isEmpty()).isFalse(); assertThat(actual).containsExactly(expected); verify(strategy,Mockito.times(1)).generate(domain); } }