package com.codeaffine.extras.imageviewer.internal;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
import java.io.InputStream;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import com.codeaffine.extras.test.util.ProjectHelper;
import com.codeaffine.test.util.lang.ThrowableCaptor;
public class ImageDataStoragePDETest {
@Rule
public final ProjectHelper projectHelper = new ProjectHelper();
private ImageData imageData;
@Before
public void setUp() throws IOException {
try( InputStream inputStream = getClass().getResourceAsStream( Images.GIF_IMAGE ) ) {
imageData = new ImageLoader().load( inputStream )[ 0 ];
}
}
@Test(expected=NullPointerException.class)
public void testConstructorWithNullImageDatas() {
new ImageDataStorage( ( ImageData[] )null );
}
@Test
public void testLoadWithNullFile() {
ImageDataStorage storage = new ImageDataStorage( imageData );
NullProgressMonitor monitor = new NullProgressMonitor();
Throwable throwable = ThrowableCaptor.thrownBy( () -> storage.save( null, monitor ) );
assertThat( throwable ).isInstanceOf( NullPointerException.class );
}
@Test
public void testLoadWithNullMonitor() {
ImageDataStorage storage = new ImageDataStorage( imageData );
IFile file = projectHelper.getProject().getFile( "file" );
Throwable throwable = ThrowableCaptor.thrownBy( () -> storage.save( file, null ) );
assertThat( throwable ).isInstanceOf( NullPointerException.class );
}
@Test
public void testSaveWithExistingFile() throws CoreException {
ImageDataStorage storage = new ImageDataStorage( imageData );
IFile file = projectHelper.createFile( "image.gif", "" );
storage.save( file, new NullProgressMonitor() );
assertThat( file.getLocation().toFile().length() ).isGreaterThan( 0 );
}
@Test
public void testSaveWithNonExistingFile() throws CoreException {
ImageDataStorage storage = new ImageDataStorage( imageData );
IFile file = projectHelper.getProject().getFile( "image.gif" );
storage.save( file, new NullProgressMonitor() );
assertThat( file.getLocation().toFile().length() ).isGreaterThan( 0 );
}
}