use of com.b3dgs.lionengine.graphic.Screen in project lionengine by b3dgs.
the class ScreenAwtTest method testScreen.
/**
* Test screen.
*
* @param config The config to test with.
*/
private void testScreen(Config config) {
final Screen screen = Graphics.createScreen(config);
final InputDeviceKeyListener listener = new InputDeviceKeyListener() {
@Override
public void keyReleased(int keyCode, char keyChar) {
// Mock
}
@Override
public void keyPressed(int keyCode, char keyChar) {
// Mock
}
};
final AtomicBoolean lost = new AtomicBoolean();
final AtomicBoolean gained = new AtomicBoolean();
final AtomicBoolean closed = new AtomicBoolean();
final ScreenListener screenListener = new ScreenListener() {
@Override
public void notifyFocusLost() {
lost.set(true);
}
@Override
public void notifyFocusGained() {
gained.set(true);
}
@Override
public void notifyClosed() {
closed.set(true);
}
};
Assert.assertFalse(screen.isReady());
screen.addListener(screenListener);
screen.start();
screen.awaitReady();
screen.addKeyListener(listener);
screen.preUpdate();
screen.update();
screen.showCursor();
screen.hideCursor();
screen.requestFocus();
screen.onSourceChanged(UtilTests.RESOLUTION_320_240);
Assert.assertNotNull(screen.getConfig());
Assert.assertNotNull(screen.getGraphic());
Assert.assertTrue(screen.getReadyTimeOut() > -1L);
Assert.assertTrue(screen.getX() > -1);
Assert.assertTrue(screen.getY() > -1);
Assert.assertTrue(screen.isReady());
while (config.isWindowed() && !gained.get()) {
continue;
}
screen.setIcon("void");
screen.setIcon("image.png");
if (!config.hasApplet()) {
final javax.swing.JFrame frame = (javax.swing.JFrame) UtilReflection.getField(screen, "frame");
frame.dispatchEvent(new java.awt.event.WindowEvent(frame, java.awt.event.WindowEvent.WINDOW_CLOSING));
while (config.isWindowed() && !gained.get()) {
continue;
}
}
screen.dispose();
Assert.assertEquals(0, screen.getX());
Assert.assertEquals(0, screen.getY());
screen.removeListener(screenListener);
}
use of com.b3dgs.lionengine.graphic.Screen in project lionengine by b3dgs.
the class LoaderTest method testScreenInterrupted.
/**
* Test interrupted.
*
* @throws Throwable If error.
*/
@Test(timeout = ScreenMock.READY_TIMEOUT * 2L, expected = LionEngineException.class)
public void testScreenInterrupted() throws Throwable {
try {
ScreenMock.setScreenWait(true);
final AtomicReference<Throwable> exception = new AtomicReference<>();
final Semaphore semaphore = new Semaphore(0);
final Thread thread = new Thread() {
@Override
public void run() {
final Screen screen = Graphics.createScreen(CONFIG);
screen.start();
screen.awaitReady();
}
};
thread.setUncaughtExceptionHandler((t, throwable) -> {
exception.set(throwable);
semaphore.release();
});
thread.start();
UtilTests.pause(ScreenMock.READY_TIMEOUT / 2L);
thread.interrupt();
semaphore.acquire();
throw exception.get();
} finally {
ScreenMock.setScreenWait(false);
}
}
use of com.b3dgs.lionengine.graphic.Screen in project lionengine by b3dgs.
the class LoopExtrapolatedTest method testUnready.
/**
* Test with not ready screen.
*
* @throws InterruptedException If error.
*/
@Test(timeout = 1000L)
public void testUnready() throws InterruptedException {
ScreenMock.setScreenWait(true);
final Screen screen = new ScreenMock(new Config(new Resolution(320, 240, 50), 16, true));
screen.getConfig().setSource(new Resolution(320, 240, 50));
final Thread thread = getTask(screen);
thread.start();
latch.await();
loop.stop();
thread.join();
Assert.assertEquals(0, tick.get());
Assert.assertEquals(0, rendered.get());
Assert.assertNull(extrapolation.get());
Assert.assertEquals(-1, computed.get());
}
use of com.b3dgs.lionengine.graphic.Screen in project lionengine by b3dgs.
the class LoopExtrapolatedTest method testNoSync.
/**
* Test without sync.
*
* @throws InterruptedException If error.
*/
@Test(timeout = 1000L)
public void testNoSync() throws InterruptedException {
ScreenMock.setScreenWait(false);
final Screen screen = new ScreenMock(new Config(new Resolution(320, 240, 0), 16, true));
screen.getConfig().setSource(new Resolution(320, 240, 50));
final Thread thread = getTask(screen);
thread.start();
thread.join();
Assert.assertEquals(maxTick.get(), tick.get());
Assert.assertEquals(tick.get(), rendered.get());
Assert.assertTrue(String.valueOf(extrapolation.get()), extrapolation.get().doubleValue() < 0.1);
final int expectedRate = screen.getConfig().getOutput().getRate();
Assert.assertTrue(String.valueOf(computed.get()), computed.get() > expectedRate);
}
use of com.b3dgs.lionengine.graphic.Screen in project lionengine by b3dgs.
the class LoopExtrapolatedTest method testLoop.
/**
* Test loop.
*
* @throws InterruptedException If error.
*/
@Test(timeout = 1000L)
public void testLoop() throws InterruptedException {
ScreenMock.setScreenWait(false);
final Screen screen = new ScreenMock(new Config(new Resolution(320, 240, 50), 16, true));
screen.getConfig().setSource(new Resolution(320, 240, 50));
final Thread thread = getTask(screen);
thread.start();
thread.join();
Assert.assertEquals(maxTick.get(), tick.get());
Assert.assertEquals(tick.get(), rendered.get());
Assert.assertTrue(String.valueOf(extrapolation.get().doubleValue()), extrapolation.get().doubleValue() > 0.0);
final int expectedRate = screen.getConfig().getOutput().getRate();
Assert.assertTrue(String.valueOf(computed.get()), computed.get() <= expectedRate);
}
Aggregations