summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-27 15:58:28 +0200
committerPaul Buetow <paul@buetow.org>2026-03-27 15:58:28 +0200
commit581ec195b73ce6dc4fb68f8c50bd8b9e3563276e (patch)
tree1998ef945bdab7f170ddc554d0ae0a4e584588cd /src/test
parent2caef29dc99d0bb181506bebe7d880ff6e95954c (diff)
Fix CLI replay startup on EDT
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/simulator/VSMainTest.java54
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());
+ }
}