package jmri.jmris; import java.io.IOException; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; /** * Base set of tests for descendants of the jmri.jmris.AbstractPowerServer class * * @author Paul Bender Copyright (C) 2018 */ abstract public class AbstractPowerServerTestBase { protected AbstractPowerServer ps = null; @Test public void testCtor() { assertThat(ps).isNotNull(); } // test sending an error message. @Test public void testSendErrorStatus() throws IOException { ps.sendErrorStatus(); checkErrorStatusSent(); } // test sending an On Status. @Test public void testSendOnStatus() throws IOException { ps.sendStatus(jmri.PowerManager.ON); checkPowerOnSent(); } // test sending an OFF Status. @Test public void testSendOffStatus() throws IOException { ps.sendStatus(jmri.PowerManager.OFF); checkPowerOffSent(); } // test sending an Unknown Status. @Test public void testSendUnknownStatus() throws IOException { ps.sendStatus(-1); checkUnknownStatusSent(); } // test the property change sequence for an ON property change. @Test public void testPropertyChangeOnStatus() { Throwable thrown = catchThrowable( () -> jmri.InstanceManager.getDefault(jmri.PowerManager.class).setPower(jmri.PowerManager.ON)); checkPowerOnSent(); assertThat(thrown).withFailMessage("Exception setting Status").isNull(); } // test the property change sequence for an OFF property change. @Test public void testPropertyChangeOffStatus() { Throwable thrown = catchThrowable( () -> jmri.InstanceManager.getDefault(jmri.PowerManager.class).setPower(jmri.PowerManager.OFF)); assertThat(thrown).withFailMessage("Exception setting Status").isNull(); checkPowerOffSent(); } /** * assert that power on was sent */ abstract public void checkPowerOnSent(); /** * assert that power off was sent */ abstract public void checkPowerOffSent(); /** * assert that an unknown status was sent */ abstract public void checkUnknownStatusSent(); /** * assert that an error status was sent */ abstract public void checkErrorStatusSent(); /** * Setup ps and a power manager instance; * */ abstract public void setUp(); }