Files
JIMRI/java/test/jmri/managers/DefaultSignalSystemManagerTest.java
T
2026-06-17 14:00:51 +02:00

147 lines
4.8 KiB
Java

package jmri.managers;
import java.io.IOException;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import jmri.InstanceManager;
import jmri.SignalSystem;
import jmri.implementation.SignalSystemTestUtil;
import jmri.jmrix.internal.InternalSystemConnectionMemo;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
/**
* Tests for the jmri.managers.DefaultSignalSystemManager class.
*
* @author Bob Jacobsen Copyright 2009
*/
public class DefaultSignalSystemManagerTest extends AbstractManagerTestBase<jmri.SignalSystemManager,jmri.SignalSystem> {
@Test
public void testGetListOfNames() {
DefaultSignalSystemManager d = (DefaultSignalSystemManager)l;
List<String> list = d.getListOfNames();
assertTrue(list.contains("basic"));
assertTrue(list.contains("AAR-1946"));
assertTrue(list.contains("SPTCO-1960"));
}
@Test
public void testSearchOrder() throws IOException {
try { // need try-finally to ensure junk deleted from user area
SignalSystemTestUtil.createMockSystem();
// check that mock (test directory) system is present
DefaultSignalSystemManager d = new DefaultSignalSystemManager(InstanceManager.getDefault(InternalSystemConnectionMemo.class));
List<String> list = d.getListOfNames();
assertTrue(list.contains(SignalSystemTestUtil.getMockSystemName()));
} finally {
SignalSystemTestUtil.deleteMockSystem();
}
}
@Test
public void testLoadBasicAspects() {
DefaultSignalSystemManager d = (DefaultSignalSystemManager)l;
d.makeBean("basic");
}
@Test
public void testLoad() {
DefaultSignalSystemManager d = (DefaultSignalSystemManager)l;
// Remove all beans in the manager
Set<SignalSystem> set = new HashSet<>(d.getNamedBeanSet());
set.forEach((b) -> {
d.deregister(b);
});
assertTrue(d.getNamedBeanSet().isEmpty());
d.load();
assertTrue(d.getNamedBeanSet().size() >= 2);
jmri.util.JUnitAppender.suppressWarnMessageStartsWith("getSystemNameList");
}
@Test
public void testUniqueNames() {
DefaultSignalSystemManager d = (DefaultSignalSystemManager)l;
List<String> list = d.getListOfNames();
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if ((i != j) && (list.get(i).equals(list.get(j)))) {
fail("Found " + list.get(i) + " at " + i + " and " + j);
}
}
}
}
@Test
public void testUniqueSystemNames() {
DefaultSignalSystemManager d = (DefaultSignalSystemManager)l;
List<String> list = d.getListOfNames();
for (int i = 0; i < list.size(); i++) {
SignalSystem si = d.getSystem(list.get(i));
assertNotNull(si);
for (int j = 0; j < list.size(); j++) {
SignalSystem sj = d.getSystem(list.get(j));
assertNotNull(sj);
if ((i != j) && (si.getSystemName().equals(sj.getSystemName()))) {
fail("Found system name " + si.getSystemName() + " at " + i + " and " + j);
}
}
}
}
@Test
public void testUniqueUserNames() {
DefaultSignalSystemManager d = (DefaultSignalSystemManager)l;
List<String> list = d.getListOfNames();
for (int i = 0; i < list.size(); i++) {
SignalSystem si = d.getSystem(list.get(i));
Assertions.assertNotNull(si);
for (int j = 0; j < list.size(); j++) {
SignalSystem sj = d.getSystem(list.get(j));
Assertions.assertNotNull(sj);
String siUserName = si.getUserName();
if ((i != j) && (siUserName != null) && (siUserName.equals(sj.getUserName()))) {
fail("Found user name " + si.getUserName() + " at " + i + " and " + j);
}
}
}
}
@Test
@Override
@Disabled("No manager-specific system name validation at present")
public void testMakeSystemNameWithNoPrefixNotASystemName() {}
@Test
@Override
@Disabled("No manager-specific system name validation at present")
public void testMakeSystemNameWithPrefixNotASystemName() {}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
l = new DefaultSignalSystemManager(InstanceManager.getDefault(InternalSystemConnectionMemo.class));
}
@AfterEach
public void tearDown() {
l = null;
JUnitUtil.tearDown();
}
}