Search in sources :

Example 26 with Screen

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);
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) ScreenListener(com.b3dgs.lionengine.graphic.ScreenListener) Screen(com.b3dgs.lionengine.graphic.Screen) InputDeviceKeyListener(com.b3dgs.lionengine.InputDeviceKeyListener)

Example 27 with Screen

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);
    }
}
Also used : Screen(com.b3dgs.lionengine.graphic.Screen) AtomicReference(java.util.concurrent.atomic.AtomicReference) Semaphore(java.util.concurrent.Semaphore) Test(org.junit.Test)

Example 28 with Screen

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());
}
Also used : Screen(com.b3dgs.lionengine.graphic.Screen) Config(com.b3dgs.lionengine.Config) ScreenMock(com.b3dgs.lionengine.graphic.ScreenMock) Resolution(com.b3dgs.lionengine.Resolution) Test(org.junit.Test)

Example 29 with Screen

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);
}
Also used : Screen(com.b3dgs.lionengine.graphic.Screen) Config(com.b3dgs.lionengine.Config) ScreenMock(com.b3dgs.lionengine.graphic.ScreenMock) Resolution(com.b3dgs.lionengine.Resolution) Test(org.junit.Test)

Example 30 with Screen

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);
}
Also used : Screen(com.b3dgs.lionengine.graphic.Screen) Config(com.b3dgs.lionengine.Config) ScreenMock(com.b3dgs.lionengine.graphic.ScreenMock) Resolution(com.b3dgs.lionengine.Resolution) Test(org.junit.Test)

Aggregations

Screen (com.b3dgs.lionengine.graphic.Screen)56 Config (com.b3dgs.lionengine.Config)47 Resolution (com.b3dgs.lionengine.Resolution)45 ScreenMock (com.b3dgs.lionengine.graphic.ScreenMock)45 Test (org.junit.jupiter.api.Test)26 Test (org.junit.Test)23 Semaphore (java.util.concurrent.Semaphore)4 AtomicReference (java.util.concurrent.atomic.AtomicReference)4 InputDeviceKeyListener (com.b3dgs.lionengine.InputDeviceKeyListener)3 ScreenListener (com.b3dgs.lionengine.graphic.ScreenListener)3 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)3 FactoryGraphicMock (com.b3dgs.lionengine.graphic.FactoryGraphicMock)2 Context (com.b3dgs.lionengine.Context)1 InputDevice (com.b3dgs.lionengine.InputDevice)1