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

127 lines
3.6 KiB
Java

package jmri.jmrix;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assumptions.assumeThat;
import java.util.Arrays;
import java.util.Comparator;
import java.util.ResourceBundle;
import jmri.InstanceManager;
import jmri.NamedBean;
import jmri.SystemConnectionMemo;
import jmri.util.startup.StartupActionFactory;
import org.junit.Assert;
import org.junit.jupiter.api.*;
/**
* Abstract base class for SystemConnectionMemo objects.
*
* @author Paul Bender Copyright (C) 2017
* @param <M> the supported memo class
*/
abstract public class SystemConnectionMemoTestBase<M extends DefaultSystemConnectionMemo> {
protected M scm = null;
public void getTest(Class<?> m) {
if (scm.provides(m)) {
// if the manager reports providing the class, make sure it exists.
Assert.assertNotNull("Provides Class " + m.getName(), scm.get(m));
} else {
Assert.assertNull("Provides Class " + m.getName(), scm.get(m));
}
}
@Test
public void testGetActionFactory() {
assumeThat(scm.getActionModelResourceBundle()).as("provides ResourceBundle").isNotNull();
StartupActionFactory f = scm.getActionFactory();
assertThat(f).as("provides StartupActionFactory").isNotNull();
Arrays.stream(f.getActionClasses()).forEach(a -> {
assertThat(f.getTitle(a)).as("has title for %s", a).isNotNull();
assertThatCode(() -> a.getDeclaredConstructor().newInstance()).doesNotThrowAnyException();
});
}
@Test
public void getPowerManager() {
getTest(jmri.PowerManager.class);
}
@Test
public void getTurnoutManager() {
getTest(jmri.TurnoutManager.class);
}
@Test
public void getThrottleManager() {
getTest(jmri.ThrottleManager.class);
}
@Test
public void getSensorManager() {
getTest(jmri.SensorManager.class);
}
@Test
public void getLightManager() {
getTest(jmri.LightManager.class);
}
@Test
public void getReporterManager() {
getTest(jmri.ReporterManager.class);
}
@Test
public void testCtor() {
Assert.assertNotNull("exists", scm);
}
@Test
public void testProvidesConsistManager() {
getTest(jmri.ConsistManager.class);
}
@Test
public void testGetAndSetPrefix() {
scm.setSystemPrefix("A2");
Assert.assertEquals("System Prefix after set", "A2", scm.getSystemPrefix());
}
@Test
public void testMultipleMemosSamePrefix() {
SystemConnectionMemo m = new DefaultSystemConnectionMemo("t", "test") {
@Override
protected ResourceBundle getActionModelResourceBundle() {
return null;
}
@Override
public <B extends NamedBean> Comparator<B> getNamedBeanComparator(Class<B> type) {
return null;
}
};
Assert.assertEquals("t", m.getSystemPrefix());
m.register();
Assert.assertTrue(InstanceManager.getList(SystemConnectionMemo.class).contains(m));
Assert.assertFalse(scm.setSystemPrefix("t"));
Assert.assertTrue(scm.setSystemPrefix("t2"));
Assert.assertEquals("t2", scm.getSystemPrefix());
}
@Test
public void testGetAndSetOutputInterval() {
scm.setOutputInterval(50);
Assert.assertEquals("Output Interval after set", 50, scm.getOutputInterval());
}
abstract public void setUp();
abstract public void tearDown();
}