package ch.retorte.intervalmusiccompositor.util; import ch.retorte.intervalmusiccompositor.audiofile.AudioFileFactory; import ch.retorte.intervalmusiccompositor.spi.MusicListControl; import ch.retorte.intervalmusiccompositor.spi.messagebus.MessageProducer; import org.junit.Before; import org.junit.Test; import java.io.File; import java.util.List; import static com.google.common.collect.Lists.newArrayList; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Mockito.*; /** * @author nw */ public class AudioFilesLoaderTest { private static final String OWN_FILE_INFIX = "XXX"; private MusicListControl musicListControl; private AudioFilesLoader loader; @Before public void setup() { musicListControl = mock(MusicListControl.class); AudioFileFactory audioFileFactory = mock(AudioFileFactory.class); MessageProducer messageProducer = mock(MessageProducer.class); loader = spy(new AudioFilesLoader(musicListControl, audioFileFactory, messageProducer)); doReturn(OWN_FILE_INFIX).when(loader).getOwnFileInfix(); doReturn(true).when(audioFileFactory).hasDecoderFor(any(File.class)); } @Test public void shouldRecognizeSelfProducedFiles() { // given File file1 = new File("abcd" + OWN_FILE_INFIX + "asd"); File file2 = new File("acegikm"); // when / then assertFalse(loader.isNotSelfProduced(file1)); assertTrue(loader.isNotSelfProduced(file2)); } @Test public void shouldKeepKnownNewSoundFiles() { // given File file1 = new File("a"); File file2 = new File("b"); File ownFile = new File(OWN_FILE_INFIX); // when List<File> knownSoundFiles = loader.keepKnownNewSoundFilesFrom(newArrayList(file1, file2, ownFile)); // then assertThat(knownSoundFiles.size(), is(2)); assertTrue(knownSoundFiles.contains(file1)); assertTrue(knownSoundFiles.contains(file2)); assertFalse(knownSoundFiles.contains(ownFile)); } @Test public void shouldLoadAudioFiles() { // given File file1 = new File("a"); File file2 = new File("b"); File file3 = new File("c"); File ownFile = new File(OWN_FILE_INFIX); doReturn(newArrayList(file1, file2, file3, ownFile)).when(loader).getAllFilesFromCurrentDirectory(); // when loader.loadAudioFiles(); // then verify(musicListControl, times(1)).addMusicTrack(0, file3); verify(musicListControl, times(1)).addMusicTrack(0, file2); verify(musicListControl, times(1)).addMusicTrack(0, file1); } }