Warning: Can't use blame annotator:
svn blame failed on trunk/test/scriptbuilder/structures/ScriptIncidentTest.java: ("Can't find a temporary directory: Internal error", 20014)

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

Revision 56, 9.5 KB checked in by bmcguffin, 9 years ago (diff)

Added test files and began filling them out. Added an integration test for XML loading and saving. Added several reference files to test against.

RevLine 
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 addNewEvent method, of class ScriptIncident.
69     */
70    public void testAddNewEvent()
71    {
72        System.out.println("addNewEvent");
73        mockedScript = mock(SimulationScript.class);
74        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
75        assertEquals(0, instance.length);
76        assertEquals(0, instance.eventCount);
77        I_ScriptEvent ev1 = mock(I_ScriptEvent.class);
78        when(ev1.getLength()).thenReturn(1);
79        I_ScriptEvent ev2 = mock(I_ScriptEvent.class);
80        when(ev2.getLength()).thenReturn(4);
81        I_ScriptEvent ev3 = mock(I_ScriptEvent.class);
82        when(ev3.getLength()).thenReturn(4);
83        int start = 0;
84        instance.addNewEvent(ev1, start);
85        assertEquals(1, instance.length);
86        assertEquals(1, instance.eventCount);
87
88        start = 0;
89        instance.addNewEvent(ev2, start);
90        assertEquals(4, instance.length);
91        assertEquals(2, instance.eventCount);
92
93        start = 2;
94        instance.addNewEvent(ev3, start);
95        assertEquals(6, instance.length);
96        assertEquals(3, instance.eventCount);
97
98    }
99
100    /**
101     * Test of getSlices method, of class ScriptIncident.
102     */
103    public void testGetSlices()
104    {
105        System.out.println("getSlices");
106        mockedScript = mock(SimulationScript.class);
107        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
108        //Empty list; no events in incident
109        ArrayList<TimeSlice> result = instance.getSlices();
110        assertEquals(0, result.size());
111
112        I_ScriptEvent ev1 = mock(I_ScriptEvent.class);
113        when(ev1.getLength()).thenReturn(1);
114
115        //One event, one timeslice
116        instance.addNewEvent(ev1, 0);
117        result = instance.getSlices();
118        assertEquals(1, result.size());
119
120        //Two simultaneous events start in the same timeslice
121        instance.addNewEvent(ev1, 0);
122        result = instance.getSlices();
123        assertEquals(1, result.size());
124
125        //A third event starts at a different time so it requires a new timeslice
126        instance.addNewEvent(ev1, ev1.getLength() + 100);
127        result = instance.getSlices();
128        assertEquals(2, result.size());
129
130    }
131
132    /**
133     * Test of setSliceActive method, of class ScriptIncident.
134     */
135    public void testSetSliceActive()
136    {
137        boolean passFlag = false;
138        System.out.println("setSliceActive");
139        mockedScript = mock(SimulationScript.class);
140        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
141        int time_a = 0;
142        int time_b = 5;
143        instance.setSliceActive(time_a);
144        verify(mockedScript, never()).broadcastEvent(isA(SliceChangedEvent.class));
145        instance.setSliceActive(time_b);
146        verify(mockedScript, never()).broadcastEvent(isA(SliceChangedEvent.class));
147        instance.addNewEvent(mock(I_ScriptEvent.class), time_a);
148        instance.setSliceActive(time_a);
149        verify(mockedScript, times(1)).broadcastEvent(isA(SliceChangedEvent.class));
150        instance.setSliceActive(time_b);
151        verify(mockedScript, times(1)).broadcastEvent(isA(SliceChangedEvent.class));
152    }
153
154    /**
155     * Test of setIncidentActive method, of class ScriptIncident.
156     */
157    public void testSetIncidentActive()
158    {
159        System.out.println("setIncidentActive");
160        mockedScript = mock(SimulationScript.class);
161        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
162        verify(mockedScript, never()).broadcastEvent(isA(IncidentFocusedEvent.class));
163        instance.setIncidentActive();
164        verify(mockedScript, times(1)).broadcastEvent(isA(IncidentFocusedEvent.class));
165
166    }
167
168    /**
169     * Test of toString method, of class ScriptIncident.
170     */
171    public void testToString()
172    {
173        System.out.println("toString");
174        mockedScript = mock(SimulationScript.class);
175        ScriptIncident instance = new ScriptIncident(101, "Test_Incident", "Description", mockedScript);
176        String expResult = "101 - Test_Incident";
177        String result = instance.toString();
178        assertEquals(expResult, result);
179
180    }
181
182    /**
183     * Test of saveIncidentToFile method, of class ScriptIncident.
184     */
185    public void testSaveIncidentToFile()
186    {
187        try
188        {
189            System.out.println("saveIncidentToFile");
190            File inFile = new File("test/scriptbuilder/structures/test_input_file.xml");
191            assertTrue(inFile.exists());
192            File referenceFile = new File("test/scriptbuilder/structures/single_incident_output_expected.xml");
193            assertTrue(referenceFile.exists());
194
195            File outFile = new File("test/scriptbuilder/structures/test_output_file.xml");
196            if (outFile.exists())
197            {
198                outFile.delete();
199            }
200            assertFalse(outFile.exists());
201            outFile.createNewFile();
202            assertTrue(outFile.exists());
203
204            ScriptIncident instance = null;
205            SimulationScript script = new SimulationScript();
206            script.loadScriptFromFile(inFile);
207
208            for (ScriptIncident inc : script.incidents)
209            {
210                if (inc != null && inc.number == 187)
211                {
212                    instance = inc;
213                }
214            }
215            if (instance != null)
216            {
217                instance.saveIncidentToFile(outFile);
218            }
219
220            assertTrue(inFile.exists());
221            assertTrue(outFile.exists());
222
223            //Check to see if the two files are identical
224            boolean result = FileUtils.contentEquals(referenceFile, outFile);
225
226            assertTrue(result);
227
228        }
229        catch (IOException ex)
230        {
231            fail("There was an IO exception. Check file names and locations.");
232        }
233    }
234
235    /**
236     * Test of toXML method, of class ScriptIncident.
237     */
238    public void testToXML()
239    {
240        try
241        {
242            System.out.println("toXML");
243            File inFile = new File("test/scriptbuilder/structures/test_input_file.xml");
244            assertTrue(inFile.exists());
245            File referenceFile = new File("test/scriptbuilder/structures/single_incident_output_expected.xml");
246            assertTrue(referenceFile.exists());
247            ScriptIncident instance = null;
248            SimulationScript script = new SimulationScript();
249            script.loadScriptFromFile(inFile);
250            for (ScriptIncident inc : script.incidents)
251            {
252                if (inc != null && inc.number == 187)
253                {
254                    instance = inc;
255                }
256            }
257
258            String expResult;
259
260            byte[] data = Files.readAllBytes(referenceFile.toPath());
261
262            expResult = new String(data);
263
264            String result = instance.toXML();
265            assertEquals(expResult, result);
266
267        }
268        catch (Exception ex)
269        {
270            fail("There was an IO exception. Check file names and locations.");
271        }
272    }
273
274    /**
275     * Test of insertCadData method, of class ScriptIncident.
276     */
277    public void testInsertCadData()
278    {
279        System.out.println("insertCadData");
280        CadData cad = new CadData();
281        mockedScript = mock(SimulationScript.class);
282        ScriptIncident instance = new ScriptIncident(100, "test", "test", mockedScript);
283
284        assertEquals(0, instance.slices.size());
285        instance.insertCadData(10, cad);
286        assertEquals(1, instance.slices.size());
287    }
288}
Note: See TracBrowser for help on using the repository browser.