Files
JIMRI/java/test/jmri/util/MockShutDownManagerTest.java
2026-06-17 14:00:51 +02:00

114 lines
3.5 KiB
Java

package jmri.util;
import java.awt.Frame;
import java.awt.GraphicsEnvironment;
import org.junit.jupiter.api.*;
import jmri.ShutDownTask;
import jmri.implementation.AbstractShutDownTask;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
*
* @author Paul Bender Copyright (C) 2017
* @author Randall Wood Copyright 2019
*/
public class MockShutDownManagerTest {
@Test
public void testCTor() {
MockShutDownManager dsdm = new MockShutDownManager();
assertNotNull( dsdm, "exists");
}
@Test
public void testRegister() {
MockShutDownManager dsdm = new MockShutDownManager();
assertEquals(0, dsdm.getCallables().size());
assertEquals(0, dsdm.getRunnables().size());
ShutDownTask task = new AbstractShutDownTask("task") {
@Override
public void run() {
}
};
dsdm.register(task);
assertEquals(1, dsdm.getCallables().size());
assertEquals(1, dsdm.getRunnables().size());
dsdm.register(task);
assertEquals(1, dsdm.getCallables().size());
assertEquals(1, dsdm.getRunnables().size());
Exception ex = Assertions.assertThrows(NullPointerException.class, () -> {
registerNull(dsdm);
},"Expected NullPointerException not thrown");
Assertions.assertNotNull(ex);
}
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings( value = "NP_NONNULL_PARAM_VIOLATION",
justification = "testing passing null to create exception ")
private void registerNull(MockShutDownManager dsdm){
dsdm.register(null);
}
@Test
public void testDeregister() {
MockShutDownManager dsdm = new MockShutDownManager();
assertEquals(0, dsdm.getCallables().size());
assertEquals(0, dsdm.getRunnables().size());
ShutDownTask task = new AbstractShutDownTask("task") {
@Override
public void run() {
}
};
dsdm.register(task);
assertEquals(1, dsdm.getCallables().size());
assertEquals(1, dsdm.getRunnables().size());
assertTrue(dsdm.getRunnables().contains(task));
dsdm.deregister(task);
assertEquals(0, dsdm.getCallables().size());
assertEquals(0, dsdm.getRunnables().size());
}
/**
* Test that isShuttingDown is correct. Note that if this is last test
* before the JVM actually shuts down, it is an indication that someone
* incorrectly modified jmri.util.MockShutDownManager.shutdown() or
* jmri.managers.DefaultShutDownManager.shutdown(int, boolean) incorrectly
* to forcably call System.exit()
*/
@Test
public void testIsShuttingDown() {
MockShutDownManager dsdm = new MockShutDownManager();
dsdm.setBlockingShutdown(true);
Frame frame = null;
if (!GraphicsEnvironment.isHeadless()) {
frame = new Frame("Shutdown test frame");
}
assertFalse(dsdm.isShuttingDown());
dsdm.shutdown();
assertTrue(dsdm.isShuttingDown());
if (frame != null) {
JUnitUtil.dispose(frame);
}
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
// private static final Logger log = LoggerFactory.getLogger(MockShutDownManagerTest.class);
}