Index: trunk/test/tmcsim/client/cadclientgui/data/CADDataConcurrencyTest.java
===================================================================
--- trunk/test/tmcsim/client/cadclientgui/data/CADDataConcurrencyTest.java	(revision 476)
+++ trunk/test/tmcsim/client/cadclientgui/data/CADDataConcurrencyTest.java	(revision 476)
@@ -0,0 +1,84 @@
+
+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<Unit> units;
+    private Unit alpha;
+    public CADDataConcurrencyTest(String testName) {
+        super(testName);
+    }
+    
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        units = new Vector<Unit>();
+        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);
+        }
+    }    
+}
Index: trunk/test/tmcsim/client/cadclientgui/data/ThreadDemo.java
===================================================================
--- trunk/test/tmcsim/client/cadclientgui/data/ThreadDemo.java	(revision 476)
+++ trunk/test/tmcsim/client/cadclientgui/data/ThreadDemo.java	(revision 476)
@@ -0,0 +1,76 @@
+
+package tmcsim.client.cadclientgui.data;
+
+import java.util.ArrayList;
+import java.util.Vector;
+import javax.swing.table.DefaultTableModel;
+
+
+/**
+ * A simple demo of how to use threads and "synchronized"
+ *
+ * @author jdalbey
+ */
+public class ThreadDemo
+{
+    static ArrayList<Integer> numbers;
+
+    public static void main(String args[])
+    {
+        System.out.println("Testing threads");
+        PrintFunctor pf=new PrintFunctor();
+        Threadserve ts1=new Threadserve(pf,12,"A");
+        Threadserve ts2=new Threadserve(pf,8,"B");
+        Threadserve ts3=new Threadserve(pf,6,"C");
+    }
+
+static class Threadserve implements Runnable
+{
+        int max;
+        String id;
+        PrintFunctor pf;
+        Thread th;
+        Threadserve(PrintFunctor printer,int x, String id)
+        {
+            this.max = x;
+            this.id = id;
+            pf = printer;
+            th=new Thread(this);
+            th.start();
+        }
+        public void run()
+        {       
+            pf.countdown(max,id);
+        }
+}    
+static class PrintFunctor
+{
+    public PrintFunctor()
+    {
+    }
+    synchronized 
+    void countdown(int max, String id)
+    {
+        numbers = new ArrayList<Integer>();
+        for (int num=0; num <100; num++)
+        {
+            numbers.add(num);
+        }
+        System.out.println("Start" + id);
+        for(int idx=max; idx>0; idx--)
+        {
+            try
+            {
+                // when halfway, pause
+                if(idx==max/2) Thread.sleep(100);
+            }
+            catch(InterruptedException e)
+            { ; }
+            System.out.println(id + ": " + idx + "," + numbers.get(idx));
+        }
+        System.out.println();
+        numbers.clear();
+        System.out.println("Done countdown." + id);
+    }
+}
+}
Index: trunk/test/tmcsim/client/cadclientgui/data/CADDataTest.java
===================================================================
--- trunk/test/tmcsim/client/cadclientgui/data/CADDataTest.java	(revision 476)
+++ trunk/test/tmcsim/client/cadclientgui/data/CADDataTest.java	(revision 476)
@@ -0,0 +1,80 @@
+
+package tmcsim.client.cadclientgui.data;
+
+import java.util.Vector;
+import javax.swing.table.DefaultTableModel;
+import junit.framework.TestCase;
+
+/**
+ *
+ * @author jdalbey
+ */
+public class CADDataTest extends TestCase {
+    private Vector<Unit> units;
+    private Unit alpha;
+    public CADDataTest(String testName) {
+        super(testName);
+    }
+    
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        units = new Vector<Unit>();
+        alpha = new Unit("1");
+        units.add(alpha);
+    }
+    
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    /**
+     * Test of clearData method, of class CADData.
+     */
+    public void testClearData() {
+        System.out.println("clearData");
+        CADData instance = new CADData();
+        instance.setUnitsFromXML(units);
+        assertEquals(alpha,instance.getUnit("1"));
+        instance.clearData();
+        assertFalse(instance.checkForValidId(1));
+    }
+
+    /**
+     * Test of setUnitsFromXML method, of class CADData.
+     */
+    public void testSetUnitsFromXML() {
+        System.out.println("setUnitsFromXML");
+        CADData instance = new CADData();
+        instance.setUnitsFromXML(units);
+        assertEquals(alpha,instance.getUnit("1"));
+    }
+
+
+    /**
+     * Test of tableForUnitStatus method, of class CADData.
+     */
+    public void testTableForUnitStatus() {
+        System.out.println("tableForUnitStatus");
+        CADData instance = new CADData();
+        instance.setUnitsFromXML(units);
+        DefaultTableModel result = instance.tableForUnitStatus();
+        assertEquals(1, result.getRowCount());
+    }
+
+    /**
+     * Test of unitAvailable method, of class CADData.
+     */
+    public void testUnitAvailable() {
+        System.out.println("unitAvailable");
+        String unitNum = "1";
+        CADData instance = new CADData();
+        instance.setUnitsFromXML(units);
+        instance.addIncident(new Incident(1,"Desc", 10L));
+        instance.unitAssignedToIncident(unitNum, 1, true);
+        instance.unitAvailable(unitNum);
+        assertEquals("10-98",instance.getUnit("1").getStatus());
+    }
+    
+}
