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

318 lines
9.2 KiB
Java

package jmri.managers.configurexml;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import jmri.NamedBean;
import jmri.implementation.AbstractNamedBean;
import jmri.util.JUnitUtil;
import org.jdom2.Element;
import org.junit.Assert;
import org.junit.jupiter.api.*;
/**
* Checks of basic NamedBean storage.
*
* @author Bob Jacobsen Copyright 2009
*/
public class AbstractNamedBeanManagerConfigXMLTest {
@Test
public void testStoreBean() {
// Create the manager to test
AbstractNamedBeanManagerConfigXML x = new NamedBeanManagerConfigXMLTest();
// create a NamedBean with two properties to store
NamedBean from = new AbstractNamedBean("sys", "usr") {
@Override
public int getState() {
return 0;
}
@Override
public void setState(int i) {
}
@Override
public String getBeanType() {
return "";
}
};
from.setProperty("foo", "bar");
from.setProperty("biff", true);
// create element for properties
Element p = new Element("test");
x.storeProperties(from, p);
// create NamedBean to load
NamedBean to = new AbstractNamedBean("sys", "usr") {
@Override
public int getState() {
return 0;
}
@Override
public void setState(int i) {
}
@Override
public String getBeanType() {
return "";
}
};
x.loadProperties(to, p);
// and test
Assert.assertEquals("bar", to.getProperty("foo"));
Assert.assertTrue( (Boolean)to.getProperty("biff"));
}
@Test
public void testStoreNoProperties() {
// Create the manager to test
AbstractNamedBeanManagerConfigXML x = new NamedBeanManagerConfigXMLTest();
// create a NamedBean with two properties to store
NamedBean from = new AbstractNamedBean("sys", "usr") {
@Override
public int getState() {
return 0;
}
@Override
public void setState(int i) {
}
@Override
public String getBeanType() {
return "";
}
};
// create element for properties
Element p = new Element("test");
x.storeProperties(from, p);
// create NamedBean to load
NamedBean to = new AbstractNamedBean("sys", "usr") {
@Override
public int getState() {
return 0;
}
@Override
public void setState(int i) {
}
@Override
public String getBeanType() {
return "";
}
};
x.loadProperties(to, p);
// and test
Assert.assertEquals(null, to.getProperty("foo"));
Assert.assertNotNull(to.getPropertyKeys());
Assert.assertEquals(0, to.getPropertyKeys().size());
}
@Test
public void testStoreNullProperty() {
// Create the manager to test
AbstractNamedBeanManagerConfigXML x = new NamedBeanManagerConfigXMLTest();
// create a NamedBean with two properties to store
NamedBean from = new AbstractNamedBean("sys", "usr") {
@Override
public int getState() {
return 0;
}
@Override
public void setState(int i) {
}
@Override
public String getBeanType() {
return "";
}
};
from.setProperty("foo", null);
from.setProperty("biff", true);
// create element for properties
Element p = new Element("test");
x.storeProperties(from, p);
// create NamedBean to load
NamedBean to = new AbstractNamedBean("sys", "usr") {
@Override
public int getState() {
return 0;
}
@Override
public void setState(int i) {
}
@Override
public String getBeanType() {
return "";
}
};
x.loadProperties(to, p);
// and test
Assert.assertEquals(null, to.getProperty("foo"));
Assert.assertTrue((Boolean)to.getProperty("biff"));
}
@Test
public void testGetUserName() {
AbstractNamedBeanManagerConfigXML x = new NamedBeanManagerConfigXMLTest();
Element e = new Element("test");
Assert.assertEquals(null, x.getUserName(e));
e = new Element("test");
Element e2 = new Element("userName");
e2.addContent("foo");
e.addContent(e2);
Assert.assertEquals("foo", x.getUserName(e));
e = new Element("test");
e.setAttribute("userName", "bar");
Assert.assertEquals("bar", x.getUserName(e));
e = new Element("test");
e2 = new Element("userName");
e2.addContent("foo");
e.addContent(e2);
e.setAttribute("userName", "bar");
Assert.assertEquals("foo", x.getUserName(e));
}
@Test
public void testGetSystemName() {
AbstractNamedBeanManagerConfigXML x = new NamedBeanManagerConfigXMLTest();
Element e = new Element("test");
Assert.assertEquals(null, x.getSystemName(e));
e = new Element("test");
Element e2 = new Element("systemName");
e2.addContent("foo");
e.addContent(e2);
Assert.assertEquals("foo", x.getSystemName(e));
e = new Element("test");
e.setAttribute("systemName", "bar");
Assert.assertEquals("bar", x.getSystemName(e));
e = new Element("test");
e2 = new Element("systemName");
e2.addContent("foo");
e.addContent(e2);
e.setAttribute("systemName", "bar");
Assert.assertEquals("foo", x.getSystemName(e));
}
@Test
@SuppressFBWarnings( value = "NP_LOAD_OF_KNOWN_NULL_VALUE", justification = "ok to pass null if type is set")
public void testCheckedNamedBeanName() {
AbstractNamedBeanManagerConfigXML x = new NamedBeanManagerConfigXMLTest();
jmri.Turnout t = null;
jmri.TurnoutManager tm = jmri.InstanceManager.turnoutManagerInstance();
tm.provideTurnout("IT01").setUserName("foo");
Assert.assertEquals(null, x.checkedNamedBeanName(null, t, tm));
Assert.assertEquals(null, x.checkedNamedBeanName("", t, tm));
Assert.assertEquals(null, x.checkedNamedBeanName("bar", t, tm));
Assert.assertEquals("IT01", x.checkedNamedBeanName("IT01", t, tm));
Assert.assertEquals("foo", x.checkedNamedBeanName("foo", t, tm));
}
@Test
@SuppressFBWarnings( value = {"NP_LOAD_OF_KNOWN_NULL_VALUE","NP_NONNULL_PARAM_VIOLATION"},
justification = "ok to pass null if type is set")
public void testCheckedNamedBeanReference() {
AbstractNamedBeanManagerConfigXML x = new NamedBeanManagerConfigXMLTest();
jmri.Turnout t = null;
jmri.TurnoutManager tm = jmri.InstanceManager.turnoutManagerInstance();
NamedBean nb = tm.provideTurnout("IT01");
nb.setUserName("foo");
Assert.assertEquals(null, x.checkedNamedBeanReference(null, t, tm));
Assert.assertEquals(null, x.checkedNamedBeanReference("", t, tm));
Assert.assertEquals(null, x.checkedNamedBeanReference("bar", t, tm));
Assert.assertEquals(nb, x.checkedNamedBeanReference("IT01", t, tm));
Assert.assertEquals(nb, x.checkedNamedBeanReference("foo", t, tm));
}
@Test
@SuppressFBWarnings( value = {"NP_LOAD_OF_KNOWN_NULL_VALUE","NP_NONNULL_PARAM_VIOLATION"},
justification = "ok to pass null if type is set")
public void testCheckedNamedBeanHandle() {
AbstractNamedBeanManagerConfigXML x = new NamedBeanManagerConfigXMLTest();
jmri.util.JUnitUtil.resetInstanceManager();
jmri.Turnout t = null;
jmri.TurnoutManager tm = jmri.InstanceManager.turnoutManagerInstance();
jmri.Turnout nb = tm.provideTurnout("IT01");
nb.setUserName("foo");
Assert.assertEquals(null, x.checkedNamedBeanHandle(null, t, tm));
Assert.assertEquals(null, x.checkedNamedBeanHandle("", t, tm));
Assert.assertEquals(null, x.checkedNamedBeanHandle("bar", t, tm));
Assert.assertEquals(new jmri.NamedBeanHandle<jmri.Turnout>("IT01", nb), x.checkedNamedBeanHandle("IT01", t, tm));
Assert.assertEquals(new jmri.NamedBeanHandle<jmri.Turnout>("foo", nb), x.checkedNamedBeanHandle("foo", t, tm));
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
JUnitUtil.resetInstanceManager();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
private static class NamedBeanManagerConfigXMLTest extends AbstractNamedBeanManagerConfigXML {
@Override
public boolean load(Element shared, Element perNode) {
return false;
}
@Override
public void load(Element e, Object o) {
}
@Override
public Element store(Object o) {
return null;
}
}
}