diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-27 15:58:28 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-27 15:58:28 +0200 |
| commit | 581ec195b73ce6dc4fb68f8c50bd8b9e3563276e (patch) | |
| tree | 1998ef945bdab7f170ddc554d0ae0a4e584588cd /src/test | |
| parent | 2caef29dc99d0bb181506bebe7d880ff6e95954c (diff) | |
Fix CLI replay startup on EDT
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/java/simulator/VSMainTest.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/test/java/simulator/VSMainTest.java b/src/test/java/simulator/VSMainTest.java index 5d4fb8b..8f4bffc 100644 --- a/src/test/java/simulator/VSMainTest.java +++ b/src/test/java/simulator/VSMainTest.java @@ -1,10 +1,22 @@ package simulator; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.mock; + +import java.awt.Component; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; import org.junit.jupiter.api.Test; +import prefs.VSDefaultPrefs; +import prefs.VSPrefs; + public class VSMainTest { @Test void resolveStartupSimulationFileReturnsNullForMissingArgs() { @@ -24,4 +36,46 @@ public class VSMainTest { new String[] {" saved-simulations/raft.dat ", "ignored"})); } + + @Test + void runOnEventDispatchThreadExecutesOnSwingEdt() { + AtomicBoolean ranOnEdt = new AtomicBoolean(false); + + VSMain.runOnEventDispatchThread(new Runnable() { + public void run() { + ranOnEdt.set(javax.swing.SwingUtilities + .isEventDispatchThread()); + } + }); + + assertTrue(ranOnEdt.get()); + } + + @Test + void launchSimulatorFrameCreatesAndStartsOnSwingEdt() { + VSPrefs prefs = VSDefaultPrefs.init(); + AtomicBoolean createdOnEdt = new AtomicBoolean(false); + AtomicReference<String> openedFilename = new AtomicReference<String>(); + VSSimulatorFrame frame = mock(VSSimulatorFrame.class); + doAnswer(invocation -> { + openedFilename.set(invocation.getArgument(0, String.class)); + return null; + }).when(frame).openAndStartSimulator("saved-simulations/raft.dat"); + + VSSimulatorFrame launchedFrame = VSMain.launchSimulatorFrame( + prefs, null, "saved-simulations/raft.dat", + new VSMain.SimulatorFrameFactory() { + public VSSimulatorFrame create(VSPrefs framePrefs, + Component relativeTo) { + createdOnEdt.set(javax.swing.SwingUtilities + .isEventDispatchThread()); + return frame; + } + }); + + assertTrue(createdOnEdt.get()); + assertNotNull(launchedFrame); + assertSame(frame, launchedFrame); + assertEquals("saved-simulations/raft.dat", openedFilename.get()); + } } |
