package ch.retorte.intervalmusiccompositor.compilation; import ch.retorte.intervalmusiccompositor.output.OutputGenerator; import ch.retorte.intervalmusiccompositor.spi.messagebus.MessageProducer; import org.junit.Test; import java.util.Arrays; import java.util.List; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; /** * Unit tests for {@link CompilationGenerator}. */ public class CompilationGeneratorTest { private Compilation compilation = mock(Compilation.class); private OutputGenerator outputGenerator = mock(OutputGenerator.class); private MessageProducer messageProducer = mock(MessageProducer.class); private CompilationGenerator sut = new CompilationGenerator(compilation, outputGenerator, messageProducer); @Test public void shouldCreateOutputFilePrefixWithEmptyBreak() { // given List<Integer> musicPattern = l(10); List<Integer> breakPattern = l(); int iterations = 12; // when String outputPrefix = sut.createMusicAndBreakPatternPrefixWith(musicPattern, breakPattern, iterations); // then assertThat(outputPrefix, is("10s-x12")); } @Test public void shouldCreateSimpleOutputFilePrefix() { // given List<Integer> musicPattern = l(40); List<Integer> breakPattern = l(20); int iterations = 24; // when String outputPrefix = sut.createMusicAndBreakPatternPrefixWith(musicPattern, breakPattern, iterations); // then assertThat(outputPrefix, is("40s_20b-x24")); } @Test public void shouldCreateOutputFilePrefixWithZeroBreaks() { // given List<Integer> musicPattern = l(10, 20, 30); List<Integer> breakPattern = l(5, 0, 8); int iterations = 18; // when String outputPrefix = sut.createMusicAndBreakPatternPrefixWith(musicPattern, breakPattern, iterations); // then assertThat(outputPrefix, is("10s_5b_20s_0b_30s_8b-x18")); } @Test public void shouldCreateMoreElaborateOutputFilePrefix() { // given List<Integer> musicPattern = l(10, 20, 30); List<Integer> breakPattern = l(2, 4, 6); int iterations = 5; // when String outputPrefix = sut.createMusicAndBreakPatternPrefixWith(musicPattern, breakPattern, iterations); // then assertThat(outputPrefix, is("10s_2b_20s_4b_30s_6b-x5")); } private List<Integer> l(Integer... s) { return Arrays.asList(s); } }