package tmcsim.cadsimulator.viewer; import java.io.StringWriter; import java.util.logging.Level; import java.util.logging.Logger; import junit.framework.TestCase; import tmcsim.cadsimulator.viewer.model.CADSimulatorState; import tmcsim.common.CADEnums; /** * * @author jdalbey */ public class CADConsoleViewerTest extends TestCase { CADConsoleViewer console; CADSimulatorState cadmodel; StringWriter sw; public CADConsoleViewerTest(String testName) { super(testName); } @Override protected void setUp() throws Exception { super.setUp(); console = new CADConsoleViewer("config/cad_simulator_config.properties"); cadmodel = new CADSimulatorState(); cadmodel.addObserver(console); sw = new StringWriter(); console.setWriter(sw); } /** compare StringWriter contents against expected * @param expected contains just the most recent lines of output * @param errmsg message to be displayed if test fails * improved to verify line by line */ private void verify(String errmsg, String expect) { String result = sw.toString().trim().replace("\r",""); // Remove windows line feed characters String[] results = result.split("\n"); //System.getProperty("line.separator")); // split into lines String[] expecteds = expect.trim().split("\n"); int rIdx = results.length-1; // index to results array // Work backwards from the most recent line of output for (int eIdx=expecteds.length-1; eIdx >= 0; eIdx--) { //System.out.println("Verifying "+eIdx+". "+expecteds[eIdx]+" against "+results[rIdx]); assertEquals(errmsg + " line "+eIdx, expecteds[eIdx], results[rIdx]); rIdx--; } } public static void pause(int millis) { try { Thread.sleep(millis); } catch (InterruptedException ex) { } } /** * Test of setVisible method, of class CADConsoleViewer. */ public void testSetVisible() { String expected1 = "--- CAD Simulator ---\n" + "Elapsed Simulation Time : 0:00:00\n" + "Status : No Script\n" + "Connected CAD Terminals : 0\n" + "Simulation Manager Connected: No\n" + "Connected to Paramics : No\n" + "Network Loaded : None\n" + "-- Info Messages --\n\n" + "-- Error Messages --"; System.out.println("setVisible"); console.setVisible(true); String out = sw.toString().trim(); assertEquals(expected1, out); } public void testConnect() { String expected2 = "--- CAD Simulator ---\n" + "Elapsed Simulation Time : 0:00:00\n" + "Status : No Script\n" + "Connected CAD Terminals : 1\n" + "Simulation Manager Connected: No\n" + "Connected to Paramics : No\n" + "Network Loaded : None\n" + "-- Info Messages --\n\n" + "-- Error Messages --\n\n"; cadmodel.connectClient(); verify("connected 1 terminal output incorrect: ", expected2); } public void testConnect2() { String expected3 = "--- CAD Simulator ---\n" + "Elapsed Simulation Time : 0:00:00\n" + "Status : No Script\n" + "Connected CAD Terminals : 2\n" + "Simulation Manager Connected: No\n" + "Connected to Paramics : No\n" + "Network Loaded : None\n" + "-- Info Messages --\n\n" + "-- Error Messages --\n\n"; cadmodel.connectClient(); cadmodel.connectClient(); verify("connected 2 terminals output incorrect: ", expected3); } public void testDisconnect() { String expected3 = "--- CAD Simulator ---\n" + "Elapsed Simulation Time : 0:00:00\n" + "Status : No Script\n" + "Connected CAD Terminals : 2\n" + "Simulation Manager Connected: No\n" + "Connected to Paramics : No\n" + "Network Loaded : None\n" + "-- Info Messages --\n\n" + "-- Error Messages --\n\n"; cadmodel.connectClient(); cadmodel.connectClient(); cadmodel.connectClient(); cadmodel.disconnectClient(); verify("disconnect terminal output incorrect: ", expected3); } public void testSimMgrConnect() { String expected4 = "--- CAD Simulator ---\n" + "Elapsed Simulation Time : 0:00:00\n" + "Status : No Script\n" + "Connected CAD Terminals : 0\n" + "Simulation Manager Connected: Yes\n" + "Connected to Paramics : No\n" + "Network Loaded : None\n" + "-- Info Messages --\n\n" + "-- Error Messages --\n\n"; cadmodel.setSimManagerStatus(true); verify("sim mgr connected output incorrect: ", expected4); } public void testInfoPane() { String expected5 = "--- CAD Simulator ---\n" + "Elapsed Simulation Time : 0:00:00\n" + "Status : No Script\n" + "Connected CAD Terminals : 0\n" + "Simulation Manager Connected: No\n" + "Connected to Paramics : No\n" + "Network Loaded : None\n" + "-- Info Messages --\n" + ". = Console Info Message.\n" + "-- Error Messages --\n\n"; Logger cadSimLogger = Logger.getLogger("tmcsim.cadsimulator"); cadSimLogger.logp(Level.INFO, "", "", "Console Info Message."); verify("Info message output incorrect: ", expected5); } public void testErrorPane() { String expected7 = "--- CAD Simulator ---\n" + "Elapsed Simulation Time : 0:00:00\n" + "Status : No Script\n" + "Connected CAD Terminals : 0\n" + "Simulation Manager Connected: No\n" + "Connected to Paramics : No\n" + "Network Loaded : None\n" + "-- Info Messages --\n\n" + "-- Error Messages --\n" + "Someclass.Somemethod = Sample error message.\n"; Logger cadSimLogger = Logger.getLogger("tmcsim.cadsimulator"); cadSimLogger.logp(Level.SEVERE, "Someclass", "Somemethod", "Sample error message."); verify("Error message output incorrect: ", expected7); } public void testParamicsChg() { String expected6 = "--- CAD Simulator ---\n" + "Elapsed Simulation Time : 0:00:00\n" + "Status : No Script\n" + "Connected CAD Terminals : 0\n" + "Simulation Manager Connected: No\n" + "Connected to Paramics : Yes\n" + "Network Loaded : None\n" + "-- Info Messages --\n\n" + "-- Error Messages --\n\n"; cadmodel.setParamicsStatus(CADEnums.PARAMICS_STATUS.CONNECTED); pause(500); verify("paramics connected should be yes", expected6); } public void testSimStatus() { String expected8 = "--- CAD Simulator ---\n" + "Elapsed Simulation Time : 0:00:00\n" + "Status : Ready\n" + "Connected CAD Terminals : 0\n" + "Simulation Manager Connected: No\n" + "Connected to Paramics : No\n" + "Network Loaded : None\n" + "-- Info Messages --\n\n" + "-- Error Messages --\n\n"; cadmodel.setScriptStatus(CADEnums.SCRIPT_STATUS.SCRIPT_STOPPED_NOT_STARTED); verify("sim status should be ready", expected8); cadmodel.setScriptStatus(CADEnums.SCRIPT_STATUS.SCRIPT_RUNNING); String result = sw.toString(); assertTrue("sim status should be running: " + result, result.contains("Running")); } public void testSimTime() { String expected9 = "--- CAD Simulator ---\n" + "Elapsed Simulation Time : 0:01:01\n" + "Status : No Script\n" + "Connected CAD Terminals : 0\n" + "Simulation Manager Connected: No\n" + "Connected to Paramics : No\n" + "Network Loaded : None\n" + "-- Info Messages --\n\n" + "-- Error Messages --\n\n"; cadmodel.setTime(61L); verify("sim time should be 0:01:01", expected9); } }