summaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-27 16:13:02 +0200
committerPaul Buetow <paul@buetow.org>2026-03-27 16:13:02 +0200
commit724e56b83bfa65cd2e870c54de1d83eec012f165 (patch)
treebf498b78e7b7be68ccbecf8e782a768a96155a42 /src/test/java
parent0fdd21929ca93e787d6092fe3ad0d8181f1be4d7 (diff)
Test VSMain main startup entrypoint
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/simulator/VSMainTest.java51
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());
+ }
}