package hudson.plugins.tfs.model; import com.microsoft.tfs.core.persistence.PersistenceStore; import org.junit.Assert; import org.junit.Test; import org.mockito.Matchers; import java.io.ByteArrayOutputStream; import java.io.IOException; import static org.mockito.Matchers.isA; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class NativeLibraryManagerTest { @Test public void buildPathToNativeFile_threeComponents() throws Exception { final String actual = NativeLibraryManager.buildPathToNativeFile("win32", "x86", "native_auth.dll"); Assert.assertEquals("native/win32/x86/native_auth.dll", actual); } @Test public void buildPathToNativeFile_twoComponents() throws Exception { final String actual = NativeLibraryManager.buildPathToNativeFile("macosx", null, "libnative_auth.jnilib"); Assert.assertEquals("native/macosx/libnative_auth.jnilib", actual); } @Test public void extractFile() throws IOException { final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final PersistenceStore store = mock(PersistenceStore.class); when(store.containsItem(isA(String.class))).thenReturn(false); when(store.getItemOutputStream(isA(String.class))).thenReturn(baos); final NativeLibraryManager manager = new NativeLibraryManager(store); manager.extractFile("win32", "x86", "native_auth.dll"); Assert.assertEquals(67240, baos.size()); } @Test public void extractFile_noArch() throws IOException { final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final PersistenceStore store = mock(PersistenceStore.class); when(store.containsItem(isA(String.class))).thenReturn(false); when(store.getItemOutputStream(isA(String.class))).thenReturn(baos); final NativeLibraryManager manager = new NativeLibraryManager(store); manager.extractFile("macosx", null, "libnative_auth.jnilib"); Assert.assertEquals(118960, baos.size()); } @Test public void extractFiles() throws Exception { final NativeLibraryExtractor extractor = mock(NativeLibraryExtractor.class); NativeLibraryManager.extractFiles(extractor); verify(extractor, times(82)).extractFile(isA(String.class), Matchers.<String>anyObject(), isA(String.class)); } }