From ce6fc1bf5744f37655a6c50892840faafa074041 Mon Sep 17 00:00:00 2001 From: Julian Kropff Date: Sun, 26 Apr 2026 23:50:08 +0200 Subject: [PATCH] Add: Game UI test: - Ensures FXML loads and controller initializes without errors. --- .../ui/gameui/CasinoGameControllerUiTest.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameControllerUiTest.java diff --git a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameControllerUiTest.java b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameControllerUiTest.java new file mode 100644 index 0000000..bd2c9a5 --- /dev/null +++ b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameControllerUiTest.java @@ -0,0 +1,56 @@ +package ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.gameuicomponents.TaskbarController; +import java.net.URL; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import javafx.application.Platform; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +/** Smoke test for Taskbar UI. Ensures FXML loads and controller initializes without errors. */ +class CasinoGameControllerUITest { + + private static boolean fxStarted = false; + + /** Initializes JavaFX once before all tests. */ + @BeforeAll + static void startJavaFX() throws Exception { + if (!fxStarted) { + CountDownLatch latch = new CountDownLatch(1); + + try { + Platform.startup( + () -> { + Platform.setImplicitExit(false); + latch.countDown(); + }); + } catch (IllegalStateException ignored) { + latch.countDown(); + } + + assertTrue(latch.await(10, TimeUnit.SECONDS), "JavaFX did not start"); + fxStarted = true; + } + } + + /** Ensures FXML loads and controller initializes without errors. */ + @Test + void taskbarLoadsWithoutErrors() throws Exception { + URL url = getClass().getResource("/ui-structure/gameuicomponents/Taskbar.fxml"); + assertNotNull(url); + + FXMLLoader loader = new FXMLLoader(url); + Parent root = loader.load(); + + TaskbarController controller = loader.getController(); + + assertNotNull(root); + assertNotNull(controller); + } +}