114 lines
3.5 KiB
Java
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);
|
|
|
|
}
|