diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-27 16:13:02 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-27 16:13:02 +0200 |
| commit | 724e56b83bfa65cd2e870c54de1d83eec012f165 (patch) | |
| tree | bf498b78e7b7be68ccbecf8e782a768a96155a42 /src/test/java | |
| parent | 0fdd21929ca93e787d6092fe3ad0d8181f1be4d7 (diff) | |
Test VSMain main startup entrypoint
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/simulator/VSMainTest.java | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/test/java/simulator/VSMainTest.java b/src/test/java/simulator/VSMainTest.java index 42fd3ab..d6cb141 100644 --- a/src/test/java/simulator/VSMainTest.java +++ b/src/test/java/simulator/VSMainTest.java @@ -10,14 +10,21 @@ import static org.mockito.Mockito.mock; import java.awt.Component; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import prefs.VSDefaultPrefs; import prefs.VSPrefs; public class VSMainTest { + @AfterEach + void resetHooks() { + VSMain.resetTestHooks(); + } + @Test void resolveStartupSimulationFileReturnsNullForMissingArgs() { assertNull(VSMain.resolveStartupSimulationFile(null)); @@ -82,4 +89,48 @@ public class VSMainTest { assertSame(frame, launchedFrame); assertEquals("saved-simulations/raft.dat", openedFilename.get()); } + + @Test + void mainRoutesStartupReplayThroughEdt() { + AtomicInteger splashCalls = new AtomicInteger(0); + AtomicInteger delayCalls = new AtomicInteger(0); + AtomicBoolean createdOnEdt = new AtomicBoolean(false); + AtomicBoolean openedOnEdt = new AtomicBoolean(false); + AtomicReference<String> openedFilename = new AtomicReference<String>(); + VSSimulatorFrame frame = mock(VSSimulatorFrame.class); + + VSMain.splashScreenLauncher = new VSMain.SplashScreenLauncher() { + public void show() { + splashCalls.incrementAndGet(); + } + }; + VSMain.startupDelay = new VSMain.StartupDelay() { + public void pause() { + delayCalls.incrementAndGet(); + } + }; + VSMain.simulatorFrameFactory = new VSMain.SimulatorFrameFactory() { + public VSSimulatorFrame create(VSPrefs framePrefs, + Component relativeTo) { + createdOnEdt.set(javax.swing.SwingUtilities + .isEventDispatchThread()); + return frame; + } + }; + + doAnswer(invocation -> { + openedOnEdt.set(javax.swing.SwingUtilities + .isEventDispatchThread()); + openedFilename.set(invocation.getArgument(0, String.class)); + return null; + }).when(frame).openAndStartSimulator("saved-simulations/raft.dat"); + + VSMain.main(new String[] {"saved-simulations/raft.dat"}); + + assertEquals(1, splashCalls.get()); + assertEquals(1, delayCalls.get()); + assertTrue(createdOnEdt.get()); + assertTrue(openedOnEdt.get()); + assertEquals("saved-simulations/raft.dat", openedFilename.get()); + } } |
