package tmcsim.cadsimulator; import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; import java.rmi.RemoteException; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; import org.uispec4j.*; import org.uispec4j.interception.WindowInterceptor; import tmcsim.common.ScriptException; import tmcsim.common.SimulationException; import tmcsim.paramicscommunicator.ParamicsCommunicator; import tmcsim.paramicscommunicator.gui.ParamicsCommunicatorGUI; import tmcsim.simulationmanager.SimulationManager; import static tmcsim.simulationmanager.SimulationManager.SCENARIOS_DIR; /** * System test (include CADSimulator) with emulated Paramics Modeler NO ATMS * server. Captures GUI display using UISpec4J. * * @author jdalbey */ public class SystemTest extends UISpecTestCase { SimulationManager simMgrApp; CADServer engine; // ParamicsCommunicator paramicscomm; public SystemTest(String testName) { super(testName); } @Override protected void setUp() throws Exception { super.setUp(); } /** * Test of run method, of class ParamicsCommunicator. */ public void testRun() throws ScriptException, SimulationException, RemoteException { System.out.println("Invisible System Test"); Window cadwindow = null; cadwindow = WindowInterceptor.run(new Trigger() { public void run() { try { engine = new CADServer("config/cad_server.properties"); } catch (Exception e) { fail("Couldn't launch CADSimulator"); } } }); // Check CAD Server appears with no script and nothing connected assertTrue("Title bar incorrect", cadwindow.getTitle().trim().startsWith("CAD Server")); Panel mainPanel = cadwindow.getPanel("contentPane"); TextBox txtStatus = mainPanel.getTextBox("simulationStatus"); assertEquals("No Script", txtStatus.getText()); TextBox terms = mainPanel.getTextBox("termConnectedTF"); assertEquals("0", terms.getText().trim()); assertEquals("No", mainPanel.getTextBox("managerConnectedTF").getText().trim()); assertEquals("network id should be None", "None", mainPanel.getTextBox("networkLoadedTF").getText().trim()); // Note: Can't set visible ANY windows during UISpec test Window simMgrWindow = null; simMgrWindow = WindowInterceptor.run(new Trigger() { public void run() { try { simMgrApp = new SimulationManager("config/sim_manager.properties"); } catch (Exception ex) { fail("Couldn't launch Simulation Manager"); } } }); // TODO: Check that the Sim Mgr GUI appears without a script loaded yet Panel contentPanel = simMgrWindow.getPanel("contentPane"); TextBox txtSimStatus = contentPanel.getTextBox("simulationStatusText"); assertEquals("No Script", txtSimStatus.getText()); // Load a script file String autoloadScriptname = SCENARIOS_DIR+"/system_test_script.xml"; simMgrApp.loadScript(new File(autoloadScriptname)); try { Thread.sleep(500); } catch (Exception ex) { } // The status should now say Ready assertEquals("Ready", txtSimStatus.getText()); // Click "Start" simMgrWindow.getButton("Start").click(); try { Thread.sleep(200); } catch (Exception ex) { ex.printStackTrace(); } assertEquals("Running", txtSimStatus.getText()); System.out.println("Running Passed"); try { Thread.sleep(9000); } catch (InterruptedException ex) { } simMgrWindow.getButton("Pause").click(); try { Thread.sleep(3000); } catch (InterruptedException ex) { } simMgrWindow.getButton("Resume").click(); try { Thread.sleep(3000); } catch (InterruptedException ex) { } simMgrWindow.getButton("Pause").click(); simMgrWindow.getMenuBar().getMenu("File").getSubMenu("Exit").click(); System.out.println("Exiting."); } // Write the test data to a file public static void writedata(String filename, String data) { PrintWriter writer = null; try { writer = new PrintWriter(new FileWriter(filename)); writer.println(data); writer.close(); } catch (Exception ex) { ex.printStackTrace(); } } }