package org.magenta;
import static org.assertj.core.api.Assertions.assertThat;
import static org.magenta.testing.MagentaAssertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Arrays;
import org.junit.Test;
import com.google.common.base.Supplier;
public class DataDomainManagerNewDataSetFromGenerationTest extends FixtureFactoryTestSupport {
@Test
public void testGeneratedBySupplier(){
//setup fixtures
FixtureFactory<SimpleDataSpecification> sut = createAnonymousFixtureFactory();
Supplier<String> colorSupplier = mock(Supplier.class);
when(colorSupplier.get()).thenReturn("red", "blue", "green","black");
//exercise sut
DataSet<String> colors = sut.newDataSet(String.class).generatedBy(colorSupplier,3);
//verify outcome
assertThat(sut).theDataSet(String.class).isNotNull().isEqualTo(colors).containsExactly("red","blue","green");
}
@Test
public void testGeneratedBySupplier_default_number_of_generated_item(){
//setup fixtures
FixtureFactory<SimpleDataSpecification> sut = createAnonymousFixtureFactory();
Supplier<Integer> colorSupplier = mock(Supplier.class);
when(colorSupplier.get()).thenReturn(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
//exercise sut
DataSet<Integer> colors = sut.newDataSet(Integer.class).generatedBy(colorSupplier);
//verify outcome
//the default number of item to generate is specified by the data specification which is 10 by default for this test
assertThat(sut.getSpecification().getDefaultNumberOfItems()).isEqualTo(10);
assertThat(sut).theDataSet(Integer.class).isNotNull().isEqualTo(colors).containsExactly(1,2,3,4,5,6,7,8,9,10);
}
@Test
public void testGeneratedByImplicitGenerationStrategy(){
//setup fixtures
FixtureFactory<SimpleDataSpecification> sut = createAnonymousFixtureFactory();
Supplier<Iterable<String>> colorSupplier = mock(Supplier.class);
when(colorSupplier.get()).thenReturn(Arrays.asList("red", "blue", "green"));
//exercise sut
DataSet<String> colors = sut.newDataSet(String.class).generatedAsIterableBy(colorSupplier);
//verify outcome
assertThat(sut).theDataSet(String.class).isNotNull().isEqualTo(colors).containsExactly("red","blue","green");
}
}