205 lines
8.0 KiB
Java
205 lines
8.0 KiB
Java
package jmri.jmrix.can.cbus.eventtable;
|
|
|
|
import java.io.File;
|
|
|
|
import jmri.jmrix.can.CanSystemConnectionMemo;
|
|
|
|
import jmri.util.JUnitAppender;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
import org.junit.jupiter.api.io.TempDir;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
/**
|
|
*
|
|
* @author Paul Bender Copyright (C) 2017
|
|
* @author Steve Young Copyright (C) 2019
|
|
*/
|
|
public class CbusEventTableXmlActionTest {
|
|
|
|
@Test
|
|
public void testLoadXmlNoFilePresent() {
|
|
|
|
assertEquals( 0, model.getRowCount());
|
|
|
|
CbusEventTableXmlAction.restoreEventsFromXmlTablestart(model);
|
|
assertEquals( 0, model.getRowCount());
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testLoadGoodFile() throws java.io.IOException, java.text.ParseException {
|
|
|
|
CbusEventTableXmlFile x = new CbusEventTableXmlFile(memo);
|
|
|
|
java.io.File dir = new java.io.File("java/test/jmri/jmrix/can/cbus/eventtable/");
|
|
java.io.File systemFile = new java.io.File(dir, "EventTableData-1.xml");
|
|
|
|
java.nio.file.Files.copy(systemFile.toPath(), x.getFile(true).toPath(),
|
|
java.nio.file.StandardCopyOption.REPLACE_EXISTING);
|
|
|
|
CbusEventTableXmlAction.restoreEventsFromXmlTablestart(model);
|
|
|
|
assertEquals( 3, model.getRowCount());
|
|
|
|
CbusTableEvent te = model.provideEvent(0,1);
|
|
assertNotNull(te);
|
|
assertEquals( "Short Event 1", te.getName() );
|
|
assertEquals( "Short Event 1 Comment", te.getComment() );
|
|
assertEquals( 0, te.getTotalOnOff(true) );
|
|
assertEquals( 0, te.getTotalOnOff(false) );
|
|
assertEquals( 0, te.getTotalInOut(true) );
|
|
assertEquals( 0, te.getTotalInOut(false) );
|
|
assertEquals(CbusTableEvent.EvState.UNKNOWN,te.getState());
|
|
assertNull( te.getDate());
|
|
|
|
te = model.provideEvent(0,2);
|
|
assertNotNull(te);
|
|
assertEquals( "Short Event 2",te.getName() );
|
|
assertEquals( "Short Event 2 Comment",te.getComment() );
|
|
assertEquals( 123456, te.getTotalOnOff(true) );
|
|
assertEquals( 234567, te.getTotalOnOff(false) );
|
|
assertEquals( 345678, te.getTotalInOut(true) );
|
|
assertEquals( 456789, te.getTotalInOut(false) );
|
|
assertEquals(CbusTableEvent.EvState.UNKNOWN,te.getState());
|
|
assertEquals(CbusEventTableXmlAction.getXmlDateStyle().parse("2019-08-22 15:23:49"), te.getDate());
|
|
|
|
te = model.provideEvent(65535,65535);
|
|
assertNotNull(te);
|
|
assertEquals( "Long Event Node 65535 Event 65535",te.getName() );
|
|
assertTrue( te.getComment().isEmpty() );
|
|
assertEquals( 0, te.getTotalOnOff(true) );
|
|
assertEquals( 20, te.getTotalOnOff(false) );
|
|
assertEquals( 30, te.getTotalInOut(true) );
|
|
assertEquals( 40, te.getTotalInOut(false) );
|
|
assertEquals(CbusTableEvent.EvState.UNKNOWN,te.getState());
|
|
assertNull(te.getDate());
|
|
|
|
assertEquals(3,model.getRowCount());
|
|
}
|
|
|
|
@Test
|
|
public void testLoadBadFile() throws java.io.IOException {
|
|
|
|
CbusEventTableXmlFile x = new CbusEventTableXmlFile(memo);
|
|
|
|
java.io.File dir = new java.io.File("java/test/jmri/jmrix/can/cbus/eventtable/");
|
|
java.io.File systemFile = new java.io.File(dir, "EventTableData-2.xml");
|
|
|
|
java.nio.file.Files.copy(systemFile.toPath(), x.getFile(true).toPath(),
|
|
java.nio.file.StandardCopyOption.REPLACE_EXISTING);
|
|
|
|
CbusEventTableXmlAction.restoreEventsFromXmlTablestart(model);
|
|
|
|
JUnitAppender.assertErrorMessageStartsWith("Node or event number missing in event [[Attribute: NodeNum");
|
|
JUnitAppender.assertErrorMessageStartsWith("Node or event number missing in event [[Attribute: EventNum");
|
|
JUnitAppender.assertErrorMessageStartsWith("Incorrect value in event [[Attribute:");
|
|
JUnitAppender.assertErrorMessageStartsWith("Incorrect value in event [[Attribute:");
|
|
JUnitAppender.assertErrorMessageStartsWith("Incorrect value in event [[Attribute:");
|
|
JUnitAppender.assertErrorMessageStartsWith("Incorrect value in event [[Attribute:");
|
|
JUnitAppender.assertErrorMessageStartsWith("Incorrect value in event [[Attribute:");
|
|
JUnitAppender.assertErrorMessageStartsWith("Incorrect value in event [[Attribute:");
|
|
JUnitAppender.assertErrorMessageStartsWith("Incorrect value in event [[Attribute:");
|
|
JUnitAppender.assertErrorMessageStartsWith("Incorrect value in event [[Attribute:");
|
|
JUnitAppender.assertErrorMessageStartsWith("Unable to parse date ");
|
|
JUnitAppender.assertErrorMessageStartsWith("Incorrect value in event [[Attribute:");
|
|
JUnitAppender.assertErrorMessageStartsWith("Unable to parse date ");
|
|
JUnitAppender.assertErrorMessageStartsWith("Incorrect value in event [[Attribute:");
|
|
|
|
assertEquals(9,model.getRowCount());
|
|
assertTrue(model.getEventTableRow(0,1) >=0 );
|
|
assertTrue(model.getEventTableRow(11,22) >=0 );
|
|
assertTrue(model.getEventTableRow(11,33) >=0 );
|
|
assertTrue(model.getEventTableRow(11,44) >=0 );
|
|
assertTrue(model.getEventTableRow(11,55) >=0 );
|
|
assertTrue(model.getEventTableRow(22,22) >=0 );
|
|
assertTrue(model.getEventTableRow(22,33) >=0 );
|
|
assertTrue(model.getEventTableRow(22,44) >=0 );
|
|
assertTrue(model.getEventTableRow(22,55) >=0 );
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testSaveFile() throws java.text.ParseException {
|
|
|
|
assertEquals( 0, model.getRowCount());
|
|
|
|
CbusTableEvent event1 = model.provideEvent(111,222);
|
|
event1.setCounts(1, 2, 0, 0);
|
|
event1.setName("My Test Event 1 Name");
|
|
event1.setDate(CbusEventTableXmlAction.getXmlDateStyle().parse("2019-08-22 13:45:49"));
|
|
|
|
CbusTableEvent event2 = model.provideEvent(333,444);
|
|
event2.setCounts(0, 0, 3, 4);
|
|
event2.setComment("My Test Event 2 Comment");
|
|
|
|
assertEquals( 2, model.getRowCount());
|
|
|
|
CbusEventTableXmlAction.storeEventsToXml(model);
|
|
|
|
model.clearAllEvents();
|
|
assertEquals( 0, model.getRowCount());
|
|
|
|
CbusEventTableXmlAction.restoreEventsFromXmlTablestart(model);
|
|
assertEquals( 2, model.getRowCount());
|
|
|
|
CbusTableEvent te = model.provideEvent(111,222);
|
|
assertNotNull(te);
|
|
assertEquals( "My Test Event 1 Name",te.getName() );
|
|
assertEquals( "",te.getComment() );
|
|
assertEquals( 1, te.getTotalOnOff(true) );
|
|
assertEquals( 2, te.getTotalOnOff(false) );
|
|
assertEquals( 0, te.getTotalInOut(true) );
|
|
assertEquals( 0, te.getTotalInOut(false) );
|
|
assertEquals(CbusTableEvent.EvState.UNKNOWN,te.getState());
|
|
assertEquals(CbusEventTableXmlAction.getXmlDateStyle().parse("2019-08-22 13:45:49"), te.getDate());
|
|
|
|
te = model.provideEvent(333,444);
|
|
assertNotNull(te);
|
|
assertTrue(te.getName().isEmpty() );
|
|
assertEquals( "My Test Event 2 Comment",te.getComment() );
|
|
assertEquals( 0, te.getTotalOnOff(true) );
|
|
assertEquals( 0, te.getTotalOnOff(false) );
|
|
assertEquals( 3, te.getTotalInOut(true) );
|
|
assertEquals( 4, te.getTotalInOut(false) );
|
|
assertEquals(CbusTableEvent.EvState.UNKNOWN,te.getState());
|
|
assertNull(te.getDate());
|
|
}
|
|
|
|
private CbusEventTableDataModel model;
|
|
private CanSystemConnectionMemo memo = null;
|
|
|
|
@BeforeEach
|
|
public void setUp( @TempDir File tempDir ) throws java.io.IOException {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.resetInstanceManager();
|
|
JUnitUtil.resetProfileManager( new jmri.profile.NullProfile( tempDir));
|
|
|
|
memo = new CanSystemConnectionMemo();
|
|
memo.setProtocol(jmri.jmrix.can.CanConfigurationManager.SPROGCBUS);
|
|
|
|
model = new CbusEventTableDataModel( memo, 2);
|
|
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
|
|
model.skipSaveOnDispose();
|
|
|
|
CbusEventTableShutdownTask task = new CbusEventTableShutdownTask("Test Dispose",model);
|
|
task.run();
|
|
Assertions.assertNotNull(memo);
|
|
memo.dispose();
|
|
memo = null;
|
|
|
|
JUnitUtil.tearDown();
|
|
|
|
}
|
|
|
|
// private static final Logger log = LoggerFactory.getLogger(CbusEventTableActionTest.class);
|
|
|
|
}
|