source: tmcsimulator/trunk/test/tmcsim/cadsimulator/CADSimulatorGUITest.java @ 558

Revision 558, 7.1 KB checked in by jdalbey, 6 years ago (diff)

Change hardcoded "scripts" as name of folder to a constant in SimulationManager?. See #228.

Line 
1package tmcsim.cadsimulator;
2
3import java.io.File;
4import java.rmi.RemoteException;
5import java.util.logging.Level;
6import java.util.logging.Logger;
7import static junit.framework.Assert.assertEquals;
8import static junit.framework.Assert.fail;
9import static org.mockito.Mockito.*;
10import org.uispec4j.*;
11import org.uispec4j.interception.WindowInterceptor;
12import tmcsim.cadsimulator.managers.ParamicsSimulationManager;
13import tmcsim.common.CADEnums;
14import tmcsim.common.ScriptException;
15import tmcsim.common.SimulationException;
16import tmcsim.interfaces.CADClientInterface;
17import tmcsim.interfaces.SimulationManagerInterface;
18import static tmcsim.simulationmanager.SimulationManager.kScenarioFolder;
19
20/**
21 * Test of CADSimulator GUI
22 *
23 * @author jdalbey
24 */
25public class CADSimulatorGUITest extends UISpecTestCase
26{
27
28    static final String configData =
29            "CADClientPort          = 4444 \n"
30            + "CoordinatorRMIPort     = 4445 \n"
31            + "CADRmiPort             = 4446 \n"
32            + "UserInterface          = tmcsim.cadsimulator.viewer.CADSimulatorViewer\n"
33            + "ParamicsProperties     = pconfig.txt\n"
34            + "ATMSProperties         = empty.txt\n"
35            + "MediaProperties        = empty.txt\n";
36
37    public CADSimulatorGUITest(String testName)
38    {
39        super(testName);
40    }
41
42    @Override
43    public void tearDown() throws java.io.IOException
44    {
45        File removeMe = new File("config.txt");
46        removeMe.delete();
47        removeMe = new File("pconfig.txt");
48        removeMe.delete();
49        removeMe = new File("empty.txt");
50        removeMe.delete();
51    }
52    /**
53     * Test of main method, of class CADSimulator.
54     */
55    CADServer app;
56
57    public void testConstructor() throws SimulationException, RemoteException, ScriptException
58    {
59        System.out.println("CADSimulator constructor");
60        CADSimulatorFixture.writeConfigData();
61        CADSimulatorFixture.writedata("config.txt", configData);
62        Window cadwindow = null;
63//        try
64//        {
65//            app = new CADSimulator("config.txt");
66//        } catch (Exception e)
67//        {
68//            fail("Couldn't launch CADSimulator" + e.getMessage());
69//        }
70
71        System.setProperty("CONFIG_DIR", "config/");
72        if (System.getProperty("CONFIG_DIR") != null)
73        {
74            cadwindow = WindowInterceptor.run(new Trigger()
75            {
76                public void run()
77                {
78                    try
79                    {
80                        app = new CADServer(System.getProperty("CONFIG_DIR") + System.getProperty("file.separator") + "cad_simulator_config.properties");
81
82                    } catch (Exception e)
83                    {
84                        fail("Couldn't launch CADSimulator" + e.getMessage());
85                    }
86                }
87            });
88        }
89        else
90        {
91            fail("CONFIG_DIR system property not defined.");
92        }
93
94        System.out.println("Tests for text fields.");
95        // Create a UISpec window from the CADSimulator's Viewer (gui)
96//        cadwindow = new Window((CADSimulatorViewer) app.theViewer);
97        assertTrue("Title bar incorrect", cadwindow.getTitle().startsWith("CAD Server revision:"));
98        Panel mainPanel = cadwindow.getPanel("contentPane");
99        TextBox txtStatus = mainPanel.getTextBox("simulationStatus");
100        assertEquals("simulation status should say No Script", "No Script", txtStatus.getText().trim());
101        TextBox terminals = mainPanel.getTextBox("termConnectedTF");
102        assertEquals("should be 0 terminals", "0", terminals.getText().trim());
103        assertEquals("mgr connected should be no", "No", mainPanel.getTextBox("managerConnectedTF").getText().trim());
104        assertEquals("paramics connected should be no", "No", mainPanel.getTextBox("paramicsConnectedTF").getText().trim());
105        assertEquals("initial time should be 0:00:00", "0:00:00", mainPanel.getTextBox("simulationClockLabel").getText().trim());
106
107        CADClientInterface ci = mock(CADClientInterface.class);
108        app.theCoordinator.registerForCallback(ci);
109        assertEquals("should be 1 terminal", "1", terminals.getText().trim());
110        app.theCoordinator.registerForCallback(ci);
111        assertEquals("should be 2 terminals", "2", terminals.getText().trim());
112
113        SimulationManagerInterface si = mock(SimulationManagerInterface.class);
114
115        app.theCoordinator.registerForCallback(si);
116        assertEquals("mgr connected should be yes", "Yes", mainPanel.getTextBox("managerConnectedTF").getText().trim());
117
118        Logger cadSimLogger = Logger.getLogger("tmcsim.cadsimulator");
119        cadSimLogger.logp(Level.INFO, "", "", "Sample Info Message.");
120
121        System.out.println("Tests for message panes.");
122        Panel infoPane = mainPanel.getPanel("infoMessagesPane");
123        TextBox infoText = infoPane.getTextBox("infoMessagesTA");
124        assertEquals("wrong info msg text", ". = Sample Info Message.", infoText.getText().trim());
125
126        cadSimLogger.logp(Level.SEVERE, "", "", "Sample Error Message.");
127
128        Panel errPane = mainPanel.getPanel("errorMessagesPane");
129        TextBox errText = errPane.getTextBox("errorMessagesTA");
130        assertEquals("wrong error msg text", ". = Sample Error Message.", errText.getText().trim());
131
132        System.out.println("Tests for status changes.");
133        app.theCoordinator.setParamicsStatus(CADEnums.PARAMICS_STATUS.CONNECTED);
134        CADSimulatorFixture.pause(500);
135        assertEquals("paramics connected should be yes", "Yes", mainPanel.getTextBox("paramicsConnectedTF").getText().trim());
136        assertEquals("network id should be None", "None", mainPanel.getTextBox("networkLoadedTF").getText().trim());
137
138//        app.theCoordinator.setScriptStatus(CADEnums.SCRIPT_STATUS.SCRIPT_RUNNING);
139//        assertEquals("Running", mainPanel.getTextBox("simulationStatus").getText().trim());
140
141        // Load a script file
142        String autoloadScriptname = kScenarioFolder+"/one-incident.xml";
143        app.theCoordinator.loadScriptFile(new File(autoloadScriptname));
144        // The status should now say Ready
145        assertEquals("sim status should be ready", "Ready", mainPanel.getTextBox("simulationStatus").getText().trim());
146
147        app.theCoordinator.startSimulation();
148        CADSimulatorFixture.pause(900);
149        assertEquals("sim status should be running", "Running", mainPanel.getTextBox("simulationStatus").getText().trim());
150        assertEquals("sim time should be 0:00:01", "0:00:01", mainPanel.getTextBox("simulationClockLabel").getText().trim());
151
152        ParamicsSimulationManager psm = mock(ParamicsSimulationManager.class);
153        when(psm.isConnected()).thenReturn(Boolean.TRUE);
154        when(psm.getParamicsNetworkLoaded()).thenReturn(1); // provide the network ID to return
155        app.theParamicsSimMgr = psm;
156        // this will tell the model it has a new network ID
157        app.theCoordinator.setParamicsStatus(CADEnums.PARAMICS_STATUS.LOADED);
158        CADSimulatorFixture.pause(500);
159        assertEquals("network id should be 1", "1", mainPanel.getTextBox("networkLoadedTF").getText().trim());
160        //mainPanel.getMenu().getItem("Exit").click();
161        boolean breakpoint = true;
162    }
163}
Note: See TracBrowser for help on using the repository browser.