package tmcsim.cadsimulator.viewer; import java.util.logging.Level; import java.util.logging.Logger; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import org.uispec4j.*; import tmcsim.cadsimulator.viewer.model.CADSimulatorState; import tmcsim.common.CADEnums; /** * * @author jdalbey */ public class CADSimulatorViewModelTest extends junit.framework.TestCase //extends UISpecTestCase { CADServerViewer viewer; Window cadwindow; CADSimulatorState model; Panel mainPanel; public CADSimulatorViewModelTest(String testName) { super(testName); } @Override protected void setUp() throws Exception { super.setUp(); viewer = new CADServerViewer("config/cad_server.properties"); cadwindow = new Window(viewer); model = new CADSimulatorState(); model.addObserver(viewer); mainPanel = cadwindow.getPanel("contentPane"); } public void testInitialView() { String actual; assertTrue("Title bar incorrect", cadwindow.getTitle().trim().startsWith("CAD Server")); TextBox txtStatus = mainPanel.getTextBox("simulationStatus"); actual = txtStatus.getText().trim(); assertEquals("simulation status should say No Script", "No Script", actual); TextBox terminals = mainPanel.getTextBox("termConnectedTF"); actual = terminals.getText().trim(); assertEquals("should be 0 terminals", "0", actual); actual = mainPanel.getTextBox("managerConnectedTF").getText().trim(); assertEquals("mgr connected should be no", "No", actual); actual = mainPanel.getTextBox("paramicsConnectedTF").getText().trim(); assertEquals("paramics connected should be no", "No", actual); actual = mainPanel.getTextBox("simulationClockLabel").getText().trim(); assertEquals("initial time should be 0:00:00", "0:00:00", actual); actual = mainPanel.getTextBox("networkLoadedTF").getText().trim(); assertEquals("network id should be None", "None", actual); } public void testClients() { String actual; model.connectClient(); TextBox terminals = mainPanel.getTextBox("termConnectedTF"); assertEquals(1, model.getNumClients()); assertEquals("should be 1 terminal", "1", terminals.getText().trim()); model.connectClient(); assertEquals("should be 2 terminals", "2", terminals.getText().trim()); model.disconnectClient(); assertEquals("should be 1 terminal after disconnect", "1", terminals.getText().trim()); } public void testSimMgr() { String actual; model.setSimManagerStatus(true); actual = mainPanel.getTextBox("managerConnectedTF").getText().trim(); assertEquals("mgr connected should be yes", "Yes", actual); assertTrue(model.isSimManagerConnected()); } public void testMessagePanes() { String actual; System.out.println("Tests for message panes."); Logger cadSimLogger = Logger.getLogger("tmcsim.cadsimulator"); cadSimLogger.logp(Level.INFO, "", "", "Sample Info Message."); Panel infoPane = mainPanel.getPanel("infoMessagesPane"); TextBox infoText = infoPane.getTextBox("infoMessagesTA"); actual = infoText.getText().trim(); assertEquals("wrong info msg text", ". = Sample Info Message.", actual); cadSimLogger.logp(Level.SEVERE, "", "", "Sample Error Message."); Panel errPane = mainPanel.getPanel("errorMessagesPane"); TextBox errText = errPane.getTextBox("errorMessagesTA"); actual = errText.getText().trim(); assertEquals("wrong error msg text", ". = Sample Error Message.", actual); } public void testStatusChg() { String actual; System.out.println("Tests for status changes."); model.setParamicsStatus(CADEnums.PARAMICS_STATUS.CONNECTED); pause(500); actual = mainPanel.getTextBox("paramicsConnectedTF").getText().trim(); assertEquals("paramics connected should be yes", "Yes", actual); actual = mainPanel.getTextBox("networkLoadedTF").getText().trim(); assertEquals("network id should be None", "None", actual); model.setScriptStatus(CADEnums.SCRIPT_STATUS.SCRIPT_STOPPED_NOT_STARTED); // The status should now say Ready actual = mainPanel.getTextBox("simulationStatus").getText().trim(); assertEquals("sim status should be ready", "Ready", actual); model.setScriptStatus(CADEnums.SCRIPT_STATUS.SCRIPT_RUNNING); model.setTime(61L); actual = mainPanel.getTextBox("simulationStatus").getText().trim(); assertEquals("sim status should be running", "Running", actual); actual = mainPanel.getTextBox("simulationClockLabel").getText().trim(); assertEquals("sim time should be 0:01:01", "0:01:01", actual); } public void testNetworkID() { String actual; // this will tell the model it has a new network ID model.setParamicsNetworkLoaded("1"); model.setParamicsStatus(CADEnums.PARAMICS_STATUS.LOADED); pause(500); actual = mainPanel.getTextBox("networkLoadedTF").getText().trim(); assertEquals("network id should be 1", "1", actual); // model.updateDVDStatus(new DVDStatusUpdate("1", false, new Throwable())); } public static void pause(int millis) { try { Thread.sleep(millis); } catch (InterruptedException ex) { } } }