source: tmcsimulator-scriptbuilder/trunk/test/scriptbuilder/structures/SimulationScriptTest.java @ 60

Revision 60, 8.3 KB checked in by bmcguffin, 9 years ago (diff)

Filled out test cases for SimulationScript?.

Line 
1package scriptbuilder.structures;
2
3import java.io.File;
4import java.io.IOException;
5import java.nio.file.Files;
6import java.util.ArrayList;
7import java.util.Observable;
8import java.util.Observer;
9import java.util.logging.Level;
10import java.util.logging.Logger;
11import static junit.framework.Assert.assertFalse;
12import static junit.framework.Assert.assertTrue;
13import static junit.framework.Assert.fail;
14import junit.framework.TestCase;
15import org.apache.commons.io.FileUtils;
16import scriptbuilder.structures.events.ATMSEvaluationEvent;
17import scriptbuilder.structures.events.AudioEvent;
18import scriptbuilder.structures.events.CHPRadioEvent;
19import scriptbuilder.structures.events.TMTRadioEvent;
20
21/**
22 *
23 * @author Bryan McGuffin
24 */
25public class SimulationScriptTest extends TestCase implements Observer
26{
27
28    private boolean updateFlag = false;
29
30    public SimulationScriptTest(String testName)
31    {
32        super(testName);
33    }
34
35    /**
36     * Test of update method, of class SimulationScript.
37     */
38    public void testUpdate()
39    {
40        System.out.println("update");
41        SimulationScript instance = new SimulationScript();
42
43        updateFlag = false;
44        assertFalse(updateFlag);
45
46        instance.addObserver(this);
47        instance.update();
48        assertTrue(updateFlag);
49    }
50
51    /**
52     * Test of broadcastEvent method, of class SimulationScript.
53     */
54    public void testBroadcastEvent_ScriptIncidentSliceChangedEvent()
55    {
56        System.out.println("broadcastEvent");
57        ScriptIncident.SliceChangedEvent ev = new ScriptIncident.SliceChangedEvent(null);
58        SimulationScript instance = new SimulationScript();
59
60        updateFlag = false;
61        assertFalse(updateFlag);
62
63        instance.addObserver(this);
64        instance.broadcastEvent(ev);
65        assertTrue(updateFlag);
66    }
67
68    /**
69     * Test of broadcastEvent method, of class SimulationScript.
70     */
71    public void testBroadcastEvent_ScriptIncidentIncidentFocusedEvent()
72    {
73        System.out.println("broadcastEvent");
74        ScriptIncident.IncidentFocusedEvent ev = new ScriptIncident.IncidentFocusedEvent(null);
75        SimulationScript instance = new SimulationScript();
76
77        updateFlag = false;
78        assertFalse(updateFlag);
79
80        instance.addObserver(this);
81        instance.broadcastEvent(ev);
82        assertTrue(updateFlag);
83    }
84
85    /**
86     * Test of loadScriptFromFile method, of class SimulationScript.
87     */
88    public void testLoadScriptFromFile()
89    {
90        System.out.println("loadScriptFromFile");
91        File inFile = new File("test/scriptbuilder/structures/test_input_file.xml");
92        SimulationScript instance = new SimulationScript();
93        assertEquals(0, instance.incidentCount());
94
95        instance.loadScriptFromFile(inFile);
96        assertEquals(6, instance.incidentCount());
97    }
98
99    /**
100     * Test of saveScriptToFile method, of class SimulationScript.
101     */
102    public void testSaveScriptToFile()
103    {
104        //This is basically identical to the integration test for saving and loading
105        System.out.println("saveScriptToFile");
106        try
107        {
108            File inFile = new File("test/scriptbuilder/structures/test_input_file.xml");
109            assertTrue(inFile.exists());
110
111            File outFile = new File("test/scriptbuilder/structures/test_output_file.xml");
112            if (outFile.exists())
113            {
114                outFile.delete();
115            }
116            assertFalse(outFile.exists());
117
118            outFile.createNewFile();
119
120            assertTrue(outFile.exists());
121
122            SimulationScript script = new SimulationScript();
123
124            //Read in from test_input_file.xml
125            script.loadScriptFromFile(inFile);
126
127            //Save to test_output_file.xml
128            script.saveScriptToFile(outFile);
129
130            assertTrue(inFile.exists());
131            assertTrue(outFile.exists());
132
133            //Check to see if the two files are identical
134            boolean result = FileUtils.contentEquals(inFile, outFile);
135
136            assertTrue(result);
137            //If so, data model does in fact read in all data and write it back in the correct format
138        }
139        catch (IOException ex)
140        {
141            fail("There was an IO exception. Check file names and locations.");
142        }
143    }
144
145    /**
146     * Test of toXML method, of class SimulationScript.
147     */
148    public void testToXML()
149    {
150        try
151        {
152            System.out.println("toXML");
153            File inFile = new File("test/scriptbuilder/structures/test_input_file.xml");
154            assertTrue(inFile.exists());
155            SimulationScript instance = new SimulationScript();
156
157            instance.loadScriptFromFile(inFile);
158
159            String expResult = "";
160
161            byte[] data = Files.readAllBytes(inFile.toPath());
162
163            expResult = new String(data);
164            String result = instance.toXML();
165            assertEquals(expResult, result);
166        }
167        catch (IOException ex)
168        {
169            fail("There was an IO exception. Check file names and locations.");
170        }
171    }
172
173    /**
174     * Test of allSlices method, of class SimulationScript.
175     */
176    public void testAllSlices()
177    {
178        System.out.println("allSlices");
179        SimulationScript instance = new SimulationScript();
180
181        instance.incidents.set(0, new ScriptIncident(121, null, null, instance));
182
183        instance.incidents.set(1, new ScriptIncident(101, null, null, instance));
184
185        ScriptEvent ev1_101 = new AudioEvent();
186
187        ScriptEvent ev2_101 = new CHPRadioEvent();
188
189        ScriptEvent ev1_121 = new TMTRadioEvent();
190
191        ScriptEvent ev2_121 = new ATMSEvaluationEvent();
192
193        instance.incidents.get(1).addNewEvent(ev1_101, 25);//Fourth
194        instance.incidents.get(1).addNewEvent(ev2_101, 0);//Earliest; higher index. Second
195
196        instance.incidents.get(0).addNewEvent(ev1_121, 0);//Earliest; lowest index. First
197        instance.incidents.get(0).addNewEvent(ev2_121, 10);//Third
198
199        ArrayList<TimeSlice> result = instance.allSlices();
200        assertEquals(4, result.size());
201        assertEquals(ev1_121, result.get(0).events.get(0));
202        assertEquals(ev2_101, result.get(1).events.get(0));
203        assertEquals(ev2_121, result.get(2).events.get(0));
204        assertEquals(ev1_101, result.get(3).events.get(0));
205
206    }
207
208    /**
209     * Test of absoluteLength method, of class SimulationScript.
210     */
211    public void testAbsoluteLength()
212    {
213        System.out.println("absoluteLength");
214        SimulationScript instance = new SimulationScript();
215        int result = instance.absoluteLength();
216        assertEquals(0, result);
217
218        instance.incidents.set(0, new ScriptIncident(101, null, null, instance));
219        instance.incidents.get(0).updateLength();
220        assertEquals(0, instance.incidents.get(0).offset);
221        assertEquals(0, instance.incidents.get(0).length);
222        result = instance.absoluteLength();
223        assertEquals(0, result);
224
225        instance.incidents.get(0).addNewEvent(new AudioEvent(), 0);
226        instance.incidents.get(0).updateLength();
227        assertEquals(0, instance.incidents.get(0).offset);
228        assertEquals(1, instance.incidents.get(0).length);
229        result = instance.absoluteLength();
230        assertEquals(1, result);
231
232        instance.incidents.get(0).setOffset(10);
233        instance.incidents.get(0).updateLength();
234        assertEquals(10, instance.incidents.get(0).offset);
235        assertEquals(1, instance.incidents.get(0).length);
236        result = instance.absoluteLength();
237        assertEquals(11, result);
238
239        ((ScriptEvent) instance.incidents.get(0).slices.get(0).events.get(0)).length = 45;
240        instance.incidents.get(0).updateLength();
241        assertEquals(10, instance.incidents.get(0).offset);
242        assertEquals(45, instance.incidents.get(0).length);
243        result = instance.absoluteLength();
244        assertEquals(55, result);
245    }
246
247    @Override
248    public void update(Observable o, Object arg)
249    {
250        updateFlag = true;
251    }
252
253    /**
254     * Test of incidentCount method, of class SimulationScript.
255     */
256    public void testIncidentCount()
257    {
258        System.out.println("incidentCount");
259        SimulationScript instance = new SimulationScript();
260        int result = instance.incidentCount();
261        assertEquals(0, result);
262        instance.incidents.set(0, new ScriptIncident(101, null, null, instance));
263        result = instance.incidentCount();
264        assertEquals(1, result);
265
266    }
267
268}
Note: See TracBrowser for help on using the repository browser.