package org.gbcpainter.test;
import org.gbcpainter.env.GraphicsEnv;
import org.gbcpainter.loaders.textures.TextureLoader;
import org.gbcpainter.loaders.textures.TextureNotFoundException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.util.NoSuchElementException;
import static org.junit.Assert.*;
/**
* @author Lorenzo Pellegrini
*/
public class TextureLoaderTest {
private JFrame frame;
@Before
public void initializeEnv() throws Exception {
frame = InitializeEnv.initialize( 400, 400, "testimg" );
}
@After
public void deinitalize() {
if ( frame != null ) {
frame.dispose();
frame = null;
}
try {
GraphicsEnv.getInstance().getTextureLoader().clear();
} catch( Exception ignored) {}
}
@Test
public void testLoadNonAcceleratedTexture() throws Exception {
final TextureLoader loader = GraphicsEnv.getInstance().getTextureLoader();
loader.loadTexture( "Header", false );
try {
loader.mustReload( "Header", true );
fail();
} catch ( NoSuchElementException e ){}
loader.mustReload( "Header", false );
loader.clear();
try {
loader.mustReload( "Header", false );
fail();
} catch ( NoSuchElementException e ){}
assertEquals( loader.getTexture( "Header", false ), null );
Image oldTexture = loader.loadTexture( "Header", false );
loader.reloadTextures();
Image newTexture = loader.getTexture( "Header", false );
assertNotSame( newTexture, oldTexture );
loader.getBaseDimension( "Header" );
loader.clear();
try {
loader.getBaseDimension( "Header" );
fail();
} catch ( NoSuchElementException e ){}
}
@Test
public void testLoadAcceleratedTexture() throws Exception {
final TextureLoader loader = GraphicsEnv.getInstance().getTextureLoader();
loader.loadTexture( "Header", true);
loader.mustReload( "Header", false );
loader.mustReload( "Header", true );
loader.clear();
try {
loader.mustReload( "Header", true );
fail();
} catch ( NoSuchElementException e ){}
assertEquals( loader.getTexture( "Header", false ), null );
assertEquals( loader.getTexture( "Header", true ), null );
Image oldTexture = loader.loadTexture( "Header", true );
loader.reloadTextures();
Image newTexture = loader.getTexture( "Header", true );
assertNotSame( newTexture, oldTexture );
loader.getBaseDimension( "Header" );
loader.clear();
try {
loader.getBaseDimension( "Header" );
fail();
} catch ( NoSuchElementException e ){}
}
@Test
public void testLoadInvalidTexture() throws Exception {
final TextureLoader loader = GraphicsEnv.getInstance().getTextureLoader();
try {
loader.loadTexture( "1234509876", false );
fail();
} catch ( TextureNotFoundException e ){}
try {
loader.loadTexture( "FakePngExtension", false );
fail();
} catch ( IOException e ){}
}
}