package tmcsim.client.cadclientgui.data; import java.util.ArrayList; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.table.DefaultTableModel; import junit.framework.TestCase; import static junit.framework.TestCase.assertTrue; /** * Test of CADData tableForUnitStatus() * @author jdalbey */ public class CADDataConcurrencyTest extends TestCase { private Vector units; private Unit alpha; public CADDataConcurrencyTest(String testName) { super(testName); } @Override protected void setUp() throws Exception { super.setUp(); units = new Vector(); alpha = new Unit("14-1"); units.add(alpha); units.add(new Unit("14-2")); units.add(new Unit("14-3")); units.add(new Unit("14-4")); units.add(new Unit("14-5")); } @Override protected void tearDown() throws Exception { super.tearDown(); System.out.println("Tearing down"); try { Thread.sleep(100); } catch(InterruptedException e) { ; } } public void testThreads() { System.out.println("Testing tableForUnitStatus()"); CADData caddata = new CADData(); caddata.setUnitsFromXML(units); // add 5 units caddata.addIncident(new Incident(101,"Desc", 10L)); String unitNum = "14-1"; caddata.unitAssignedToIncident(unitNum, 101, true); caddata.unitAvailable(unitNum); Threadserve ts1=new Threadserve(caddata, "A"); Threadserve ts2=new Threadserve(caddata, "B"); Threadserve ts3=new Threadserve(caddata, "C"); DefaultTableModel m = caddata.tableForUnitStatus(); assertEquals("main Incorrect Row Count:",5,m.getRowCount()); } class Threadserve implements Runnable { private CADData caddata; private String id; private Thread th; Threadserve(CADData caddata, String id) { this.caddata = caddata; this.id = id; th=new Thread(this); th.start(); } public void run() { //System.out.println("Start "+ id); DefaultTableModel m = caddata.tableForUnitStatus(); int loopLimit = m.getRowCount(); assertEquals(id + " Incorrect Row Count:"+loopLimit,5,loopLimit); } } }