package tmcsim.simulationmanager; import java.awt.Component; import java.io.File; import javax.swing.JButton; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; import org.uispec4j.Panel; import org.uispec4j.TextBox; import org.uispec4j.Trigger; import org.uispec4j.UISpecTestCase; import org.uispec4j.Window; import org.uispec4j.interception.WindowInterceptor; import tmcsim.cadsimulator.CADSimulator; import tmcsim.common.ScriptException; import tmcsim.common.SimulationException; /** * Smoke Test of system. Start the CAD server, Start the Sim Mgr, see if the Sim * Mgr view shows "No Script". * * @author jdalbey */ public class SimulationManagerSmokeTest extends UISpecTestCase { SimulationManager simMgrApp; CADSimulator engine; public SimulationManagerSmokeTest(String testName) { super(testName); } /** * Call constructors for both classes */ public void testBothGUIs() throws ScriptException, SimulationException { System.out.println("Smoke Test Sim Mgr & CADSimulator"); Window cadwindow = null; System.setProperty("CAD_SIM_PROPERTIES", "config/cad_simulator_smoketest_config.properties"); if (System.getProperty("CAD_SIM_PROPERTIES") != null) { cadwindow = WindowInterceptor.run(new Trigger() { public void run() { try { engine = new CADSimulator(System.getProperty("CAD_SIM_PROPERTIES")); } catch (Exception e) { fail("Couldn't launch CADSimulator"); } } }); } else { fail("CAD_SIM_PROPERTIES system property not defined."); } // Check CAD Simulator appears with no script and nothing connected assertTrue("Window title incorrect", cadwindow.getTitle().startsWith("CAD Simulator")); 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()); Window simMgrWindow = null; System.setProperty("SIM_MGR_PROPERTIES", "config/sim_manager_smoketest_config.properties"); if (System.getProperty("SIM_MGR_PROPERTIES") != null) { simMgrWindow = WindowInterceptor.run(new Trigger() { public void run() { try { simMgrApp = new SimulationManager(System.getProperty("SIM_MGR_PROPERTIES")); } catch (Exception ex) { fail("Couldn't launch Simulation Manager"); } } }); } else { fail("SIM_MGR_PROPERTIES system property not defined."); } // Check that the Sim Mgr GUI appears without a script loaded yet SimulationManagerView view = simMgrApp.theSimManagerView; assertFalse(view.isSimulationStarted()); Window win = new Window(view); Panel contentPanel = win.getPanel("contentPane"); TextBox txtSimStatus = contentPanel.getTextBox("simulationStatusText"); assertEquals("No Script", txtSimStatus.getText()); assertEquals("Yes", mainPanel.getTextBox("managerConnectedTF").getText().trim()); // Load a script file String autoloadScriptname = "scripts/practice_script_2016.xml"; SimulationManagerModel simMgrModel = simMgrApp.theSimManagerModel; simMgrModel.loadScript(new File(autoloadScriptname)); // The status should now say Ready assertEquals("Ready", txtSimStatus.getText()); // Click "Start" win.getButton("Start").click(); try { Thread.sleep(200); } catch (Exception ex) { ex.printStackTrace(); } assertEquals("Running", txtSimStatus.getText()); //List all available buttons Component[] buttons = win.getSwingComponents(JButton.class); for (Component comp : buttons) { System.out.println(comp); } win.getButton("Load Script"); win.getButton("Pause"); win.getButton("Disconnect from Paramics"); win.getButton("Reset"); win.getButton("Load Network"); // Quit engine = null; win.getMenuBar().getMenu("File").getSubMenu("Exit").click(); //simMgrApp = null; } }