Files
JIMRI/java/test/jmri/jmrix/can/cbus/node/CbusNodeFromBackupTest.java
T
2026-06-17 14:00:51 +02:00

209 lines
8.0 KiB
Java

package jmri.jmrix.can.cbus.node;
import java.util.Date;
import jmri.jmrix.can.cbus.node.CbusNodeConstants.BackupType;
import jmri.util.JUnitUtil;
import org.junit.Assert;
import org.junit.jupiter.api.*;
/**
*
* @author Paul Bender Copyright (C) 2017
* @author Steve Young Copyright (C) 2019
*/
public class CbusNodeFromBackupTest {
@Test
public void testCTor() {
CbusNodeFromBackup t = new CbusNodeFromBackup(null,256);
Assert.assertNotNull("exists",t);
t.dispose();
}
@Test
public void testCTorNodeDate() {
CbusNode existingNode = new CbusNode(null,257);
// existingNode.setParameters(new int[]{8,1,2,3,4,5,6,7,8});
CbusNodeFromBackup t = new CbusNodeFromBackup(existingNode,new Date());
Assert.assertNotNull("exists",t);
Assert.assertTrue("Backup No Params",t.getBackupResult() == BackupType.COMPLETEDWITHERROR);
existingNode.getNodeParamManager().setParameters(new int[]{8,1,2,3,4,5,6,7,8});
t = new CbusNodeFromBackup(existingNode,new Date());
Assert.assertTrue("Backup No NVs",t.getBackupResult() == BackupType.COMPLETEDWITHERROR);
existingNode.getNodeNvManager().setNVs(new int[]{6,1,2,3,4,5,6});
t = new CbusNodeFromBackup(existingNode,new Date());
Assert.assertTrue("Backup No EVs",t.getBackupResult() == BackupType.COMPLETEDWITHERROR);
existingNode.getNodeEventManager().resetNodeEventsToZero();
t = new CbusNodeFromBackup(existingNode,new Date());
Assert.assertTrue("Backup No EVs",t.getBackupResult() == BackupType.COMPLETE);
Assert.assertNotNull("Backup Time Set by Constructor",t.getBackupTimeStamp());
existingNode.dispose();
t.dispose();
}
@Test
public void testBasicSetGets() {
CbusNodeFromBackup t = new CbusNodeFromBackup(null,258);
Assert.assertNull("Backup Time Unset",t.getBackupTimeStamp());
t.setBackupTimeStamp(new Date());
Assert.assertNotNull("Backup Time Set",t.getBackupTimeStamp());
Assert.assertNull("Backup result unset",t.getBackupResult());
t.setBackupResult(BackupType.NOTONNETWORK);
Assert.assertNotNull("Backup result set",t.getBackupResult());
Assert.assertTrue("Comment unset",t.getBackupComment().isEmpty());
t.setBackupComment("My Comment 123");
Assert.assertEquals("Comment set","My Comment 123",t.getBackupComment());
t.dispose();
}
@Test
public void testAddEvent() {
CbusNodeFromBackup t = new CbusNodeFromBackup(null,258);
// set node to 5 ev vars per event, para 5, 6NV's, param 6
t.getNodeParamManager().setParameters(new int[]{8,1,2,3,4,5,6,7,8});
t.addBupEvent(0,1,"01020304FF");
Assert.assertNull("Random event not found",t.getNodeEventManager().getNodeEvent(123,123));
CbusNodeEvent ndEv = t.getNodeEventManager().getNodeEvent(0,1);
Assert.assertNotNull("Event Found",ndEv);
Assert.assertEquals("Event 0,1 Ev Var 1",1,ndEv.getEvVar(1));
Assert.assertEquals("Event 0,1 Ev Var 2",2,ndEv.getEvVar(2));
Assert.assertEquals("Event 0,1 Ev Var 5",255,ndEv.getEvVar(5));
t.dispose();
}
@Test
@SuppressWarnings("unlikely-arg-type") // Makes sures different objects do not pass
public void testEquals() {
CbusNodeFromBackup t = new CbusNodeFromBackup(null,259);
CbusNodeFromBackup tt = new CbusNodeFromBackup(null,259);
Assert.assertEquals("node t 259",259,t.getNodeNumber());
Assert.assertTrue("Same node t 259",t.equals(t));
Assert.assertTrue("Same node t tt 259",t.equals(tt));
Assert.assertTrue("node t tt hash",tt.hashCode()==t.hashCode());
t.setNodeNumber(258);
Assert.assertFalse("Node 258 / 259",t.equals(tt));
Assert.assertFalse("Node hash 258 / 259",t.hashCode()==tt.hashCode());
t.setNodeNumber(259);
t.getNodeParamManager().setParameters(new int[]{8,1,2,3,4,5,6,7,8});
Assert.assertFalse("No Params eq",t.equals(tt));
Assert.assertFalse("No params hash",t.hashCode()==tt.hashCode());
tt.getNodeParamManager().setParameters(new int[]{8,1,2,3,4,5,6,7,9});
Assert.assertFalse("diff Params eq",t.equals(tt));
Assert.assertFalse("diff params hash",t.hashCode()==tt.hashCode());
tt.getNodeParamManager().setParameter(8,8);
Assert.assertTrue("Same params eq",t.equals(tt));
Assert.assertTrue("Same params hash",tt.hashCode()==t.hashCode());
t.getNodeNvManager().setNVs(new int[]{6,1,2,3,4,5,6});
Assert.assertFalse("No nv eq",t.equals(tt));
Assert.assertFalse("No nv hash",t.hashCode()==tt.hashCode());
tt.getNodeNvManager().setNVs(new int[]{6,1,2,3,4,5,7});
Assert.assertFalse("diff nv eq",t.equals(tt));
Assert.assertFalse("diff nv hash",t.hashCode()==tt.hashCode());
tt.getNodeNvManager().setNV(6,6);
Assert.assertTrue("Same nv eq",t.equals(tt));
Assert.assertTrue("Same nv hash",tt.hashCode()==t.hashCode());
t.addBupEvent(0,1,"01020304FF");
Assert.assertFalse("No ev eq",t.equals(tt));
Assert.assertFalse("No ev hash",t.hashCode()==tt.hashCode());
tt.addBupEvent(0,1,"01020304FE");
Assert.assertFalse("diff ev eq",t.equals(tt));
Assert.assertFalse("diff ev hash",t.hashCode()==tt.hashCode());
CbusNodeEvent ndEv = tt.getNodeEventManager().getNodeEvent(0,1);
Assert.assertNotNull(ndEv);
ndEv.setEvVar(5,255);
Assert.assertTrue("Same ev eq",t.equals(tt));
Assert.assertTrue("Same ev hash",tt.hashCode()==t.hashCode());
t.addBupEvent(0,2,"0102030405");
tt.addBupEvent(0,3,"0102030405");
Assert.assertFalse("diff event eq",t.equals(tt));
Assert.assertFalse("diff event hash",t.hashCode()==tt.hashCode());
t.addBupEvent(0,3,"0102030405");
tt.addBupEvent(0,2,"0102030405");
Assert.assertTrue("Same ev added in different order eq",t.equals(tt));
Assert.assertTrue("Same ev added in different order hash",tt.hashCode()==t.hashCode());
t.addBupEvent(0,7,"0102030405");
tt.addBupEvent(7,7,"0102030405");
Assert.assertFalse("diff ev node eq",t.equals(tt));
Assert.assertFalse("diff ev node hash",t.hashCode()==tt.hashCode());
}
@Test
public void testCompareWithString() {
CbusNodeFromBackup t = new CbusNodeFromBackup(null,259);
CbusNodeFromBackup tt = new CbusNodeFromBackup(null,259);
Assert.assertEquals("Same Nodes",Bundle.getMessage("NoChanges"),t.compareWithString(tt));
}
@Test
public void testIgnoredFunctions() {
jmri.jmrix.can.CanSystemConnectionMemo memo = new jmri.jmrix.can.CanSystemConnectionMemo();
jmri.jmrix.can.TrafficControllerScaffold tcis = new jmri.jmrix.can.TrafficControllerScaffold();
memo.setTrafficController(tcis);
CbusNodeFromBackup t = new CbusNodeFromBackup(memo,1234);
jmri.jmrix.can.CanReply r = new jmri.jmrix.can.CanReply(0x12);
r.setNumDataElements(1);
r.setElement(0,17);
t.getCanListener().reply(r);
t.getCanListener().message(new jmri.jmrix.can.CanMessage(r));
Assert.assertEquals("default getNodeInLearnMode ",false,t.getNodeInLearnMode() );
Assertions.assertInstanceOf(CbusNodeFromBackup.DoNothingCanListener.class,
t.getCanListener(), "No Traffic Controler");
tcis.terminateThreads();
memo.dispose();
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
// private static final Logger log = LoggerFactory.getLogger(CbusNodeFromBackupTest.class);
}