source: tmcsimulator-scriptbuilder/trunk/test/scriptbuilder/structures/ScriptIncidentTest.java @ 150

Revision 150, 10.5 KB checked in by sdanthin, 6 years ago (diff)

IncidentTimelinePanel?.java added right-click menu popup functionality to add time
ScriptIncident?.java Added moveAllFollowingEvents function
ScriptIncidentTest?.java Added test to test moveAllFollowingEvents - may need better edge cases

Line 
1package scriptbuilder.structures;
2
3import java.io.File;
4import java.io.IOException;
5import java.nio.file.Files;
6import java.util.ArrayList;
7import static junit.framework.Assert.assertTrue;
8import junit.framework.TestCase;
9import org.apache.commons.io.FileUtils;
10import scriptbuilder.structures.events.*;
11import static org.mockito.Mockito.*;
12import scriptbuilder.structures.ScriptIncident.IncidentFocusedEvent;
13import scriptbuilder.structures.ScriptIncident.SliceChangedEvent;
14
15/**
16 *
17 * @author Bryan McGuffin
18 */
19public class ScriptIncidentTest extends TestCase
20{
21
22    SimulationScript mockedScript;
23
24    public ScriptIncidentTest(String testName)
25    {
26        super(testName);
27    }
28
29    /**
30     * Test of setCollapsed method, of class ScriptIncident.
31     */
32    public void testSetCollapsed()
33    {
34        System.out.println("setCollapsed");
35        mockedScript = mock(SimulationScript.class);
36        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
37        assertFalse(instance.collapsed);
38        verify(mockedScript, times(0)).update();
39        instance.setCollapsed(false);
40        assertFalse(instance.collapsed);
41        verify(mockedScript, times(1)).update();
42        instance.setCollapsed(true);
43        assertTrue(instance.collapsed);
44
45        verify(mockedScript, times(2)).update();
46    }
47
48    /**
49     * Test of setOffset method, of class ScriptIncident.
50     */
51    public void testSetOffset()
52    {
53        System.out.println("setOffset");
54        mockedScript = mock(SimulationScript.class);
55        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
56        int offset = 10;
57        assertEquals(0, instance.offset);
58        verify(mockedScript, times(0)).update();
59        instance.setOffset(offset);
60        assertEquals(10, instance.offset);
61        verify(mockedScript, times(1)).update();
62        instance.setOffset(0);
63        assertEquals(0, instance.offset);
64        verify(mockedScript, times(2)).update();
65    }
66   
67    /**
68     * Test of moveAllFollowingEvents method, of class ScriptIncident.
69     */
70    public void testMoveAllFollowingEvents()
71    {
72        System.out.println("moveAllFollowingEvents");
73        mockedScript = mock(SimulationScript.class);
74        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
75        CADEvent cad = (CADEvent) ScriptEvent.factoryByType(ScriptEvent.ScriptEventType.CAD_EVENT);
76        instance.addNewEvent(ScriptEvent.factoryByType(ScriptEvent.ScriptEventType.CAD_EVENT),0);
77        instance.addNewEvent(cad,40);
78        int offset = 20;
79        int timeAdd = 20;
80        assertEquals(0, instance.offset);
81        verify(mockedScript, times(0)).update();
82       
83        instance.moveAllFollowingEvents(offset,20);
84        assertTrue(instance.slices.get(60).events.get(0).equals(cad));
85        verify(mockedScript, times(1)).update();
86        instance.setOffset(0);
87        assertEquals(0, instance.offset);
88        verify(mockedScript, times(2)).update();
89    }
90
91    /**
92     * Test of addNewEvent method, of class ScriptIncident.
93     */
94    public void testAddNewEvent()
95    {
96        System.out.println("addNewEvent");
97        mockedScript = mock(SimulationScript.class);
98        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
99        assertEquals(0, instance.length);
100        assertEquals(0, instance.eventCount);
101        I_ScriptEvent ev1 = mock(I_ScriptEvent.class);
102        when(ev1.getLength()).thenReturn(1);
103        I_ScriptEvent ev2 = mock(I_ScriptEvent.class);
104        when(ev2.getLength()).thenReturn(4);
105        I_ScriptEvent ev3 = mock(I_ScriptEvent.class);
106        when(ev3.getLength()).thenReturn(4);
107        int start = 0;
108        instance.addNewEvent(ev1, start);
109        assertEquals(1, instance.length);
110        assertEquals(1, instance.eventCount);
111
112        start = 0;
113        instance.addNewEvent(ev2, start);
114        assertEquals(4, instance.length);
115        assertEquals(2, instance.eventCount);
116
117        start = 60;
118        instance.addNewEvent(ev3, start);
119        assertEquals(64, instance.length);
120        assertEquals(3, instance.eventCount);
121
122    }
123
124    /**
125     * Test of getSlices method, of class ScriptIncident.
126     */
127    public void testGetSlices()
128    {
129        System.out.println("getSlices");
130        mockedScript = mock(SimulationScript.class);
131        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
132        //Empty list; no events in incident
133        ArrayList<TimeSlice> result = instance.getSlices();
134        assertEquals(0, result.size());
135
136        I_ScriptEvent ev1 = mock(I_ScriptEvent.class);
137        when(ev1.getLength()).thenReturn(1);
138
139        //One event, one timeslice
140        instance.addNewEvent(ev1, 0);
141        result = instance.getSlices();
142        assertEquals(1, result.size());
143
144        //Two simultaneous events start in the same timeslice
145        instance.addNewEvent(ev1, 0);
146        result = instance.getSlices();
147        assertEquals(1, result.size());
148
149        //A third event starts at a different time so it requires a new timeslice
150        instance.addNewEvent(ev1, ev1.getLength() + 100);
151        result = instance.getSlices();
152        assertEquals(2, result.size());
153
154    }
155
156    /**
157     * Test of setSliceActive method, of class ScriptIncident.
158     */
159    public void testSetSliceActive()
160    {
161        boolean passFlag = false;
162        System.out.println("setSliceActive");
163        mockedScript = mock(SimulationScript.class);
164        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
165        int time_a = 0;
166        int time_b = 5;
167        instance.setSliceActive(time_a);
168        verify(mockedScript, never()).broadcastEvent(isA(SliceChangedEvent.class));
169        instance.setSliceActive(time_b);
170        verify(mockedScript, never()).broadcastEvent(isA(SliceChangedEvent.class));
171        instance.addNewEvent(mock(I_ScriptEvent.class), time_a);
172        instance.setSliceActive(time_a);
173        verify(mockedScript, times(1)).broadcastEvent(isA(SliceChangedEvent.class));
174        instance.setSliceActive(time_b);
175        verify(mockedScript, times(1)).broadcastEvent(isA(SliceChangedEvent.class));
176    }
177
178    /**
179     * Test of setIncidentActive method, of class ScriptIncident.
180     */
181    public void testSetIncidentActive()
182    {
183        System.out.println("setIncidentActive");
184        mockedScript = mock(SimulationScript.class);
185        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
186        verify(mockedScript, never()).broadcastEvent(isA(IncidentFocusedEvent.class));
187        instance.setIncidentActive();
188        verify(mockedScript, times(1)).broadcastEvent(isA(IncidentFocusedEvent.class));
189
190    }
191
192    /**
193     * Test of toString method, of class ScriptIncident.
194     */
195    public void testToString()
196    {
197        System.out.println("toString");
198        mockedScript = mock(SimulationScript.class);
199        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
200        String expResult = "101 - Test_Incident";
201        String result = instance.toString();
202        assertEquals(expResult, result);
203
204    }
205
206    /**
207     * Test of saveIncidentToFile method, of class ScriptIncident.
208     */
209    public void testSaveIncidentToFile()
210    {
211        try
212        {
213            System.out.println("saveIncidentToFile");
214            File inFile = new File("test/scriptbuilder/structures/test_input_file.xml");
215            assertTrue(inFile.exists());
216            File referenceFile = new File("test/scriptbuilder/structures/single_incident_output_expected.xml");
217            assertTrue(referenceFile.exists());
218
219            File outFile = new File("test/scriptbuilder/structures/test_output_file.xml");
220            if (outFile.exists())
221            {
222                outFile.delete();
223            }
224            assertFalse(outFile.exists());
225            outFile.createNewFile();
226            assertTrue(outFile.exists());
227
228            ScriptIncident instance = null;
229            SimulationScript script = new SimulationScript();
230            script.loadScriptFromFile(inFile);
231
232            for (ScriptIncident inc : script.incidents)
233            {
234                if (inc != null && inc.number == 187)
235                {
236                    instance = inc;
237                }
238            }
239            if (instance != null)
240            {
241                instance.saveIncidentToFile(outFile);
242            }
243
244            assertTrue(inFile.exists());
245            assertTrue(outFile.exists());
246
247            //Check to see if the two files are identical
248            boolean result = FileUtils.contentEquals(referenceFile, outFile);
249
250            assertTrue(result);
251
252        }
253        catch (IOException ex)
254        {
255            fail("There was an IO exception. Check file names and locations.");
256        }
257    }
258
259    /**
260     * Test of toXML method, of class ScriptIncident.
261     */
262    public void testToXML()
263    {
264        try
265        {
266            System.out.println("toXML");
267            File inFile = new File("test/scriptbuilder/structures/test_input_file.xml");
268            assertTrue(inFile.exists());
269            File referenceFile = new File("test/scriptbuilder/structures/single_incident_output_expected.xml");
270            assertTrue(referenceFile.exists());
271            ScriptIncident instance = null;
272            SimulationScript script = new SimulationScript();
273            script.loadScriptFromFile(inFile);
274            for (ScriptIncident inc : script.incidents)
275            {
276                if (inc != null && inc.number == 187)
277                {
278                    instance = inc;
279                }
280            }
281
282            String expResult;
283
284            byte[] data = Files.readAllBytes(referenceFile.toPath());
285
286            expResult = new String(data);
287
288            String result = instance.toXML();
289            assertEquals(expResult, result);
290
291        }
292        catch (Exception ex)
293        {
294            fail("There was an IO exception. Check file names and locations.");
295        }
296    }
297
298    /**
299     * Test of insertCadData method, of class ScriptIncident.
300     */
301    public void testInsertCadData()
302    {
303        System.out.println("insertCadData");
304        CadData cad = new CadData();
305        mockedScript = mock(SimulationScript.class);
306        ScriptIncident instance = new ScriptIncident(100, "test", "test", mockedScript);
307
308        assertEquals(0, instance.slices.size());
309        instance.insertCadData(10, cad);
310        assertEquals(1, instance.slices.size());
311    }
312}
Note: See TracBrowser for help on using the repository browser.