source: trunk/quest-ui-core-test/src/test/java/de/ugoe/cs/quest/ui/GlobalDataContainerTest.java @ 655

Last change on this file since 655 was 655, checked in by pharms, 12 years ago
  • removed old copyright file header
  • Property svn:mime-type set to text/plain
File size: 15.1 KB
Line 
1package de.ugoe.cs.quest.ui;
2
3import java.io.ByteArrayInputStream;
4import java.io.ByteArrayOutputStream;
5import java.io.InputStream;
6import java.io.ObjectInputStream;
7import java.io.ObjectOutputStream;
8import java.lang.reflect.Constructor;
9import java.lang.reflect.Modifier;
10import java.util.Collection;
11import java.util.LinkedList;
12import java.util.List;
13
14import org.junit.*;
15
16import de.ugoe.cs.quest.eventcore.Event;
17import de.ugoe.cs.quest.usageprofiles.IStochasticProcess;
18
19import static org.junit.Assert.*;
20import static org.mockito.Mockito.*;
21
22/**
23 * The class <code>WindowsEventTest</code> contains tests for the class
24 * <code>{@link WindowsEvent}</code>.
25 *
26 * @author Steffen Herbold
27 * @version 1.0
28 */
29public class GlobalDataContainerTest {
30
31    private static void assertCollectionContent(Collection<?> c1, Collection<?> c2) {
32        assertEquals(c1.size(), c2.size());
33        for (Object obj : c1) {
34            assertTrue(c2.contains(obj));
35        }
36    }
37
38    @Test
39    public void testGlobalDataContainer_1() throws Exception {
40        // assure that all constructors are private
41        Constructor<?>[] constructors = GlobalDataContainer.class.getDeclaredConstructors();
42        for (int i = 0; i < constructors.length; i++) {
43            int modifier = constructors[i].getModifiers();
44            if (modifier != Modifier.PRIVATE) {
45                fail(constructors[i].getName() + " - " + Modifier.toString(modifier));
46            }
47        }
48    }
49
50    @Test
51    public void testGetInstance_1() throws Exception {
52        GlobalDataContainer instance1 = GlobalDataContainer.getInstance();
53        GlobalDataContainer instance2 = GlobalDataContainer.getInstance();
54        assertNotNull(instance1);
55        assertSame(instance1, instance2);
56    }
57
58    @Test
59    public void testDatahandling_1() throws Exception {
60        // test is data can be added and retrieved as expected
61        GlobalDataContainer instance = GlobalDataContainer.getInstance();
62
63        String key1 = "key1";
64        String data1 = "data1";
65        String key2 = "key2";
66        String data2 = "data2";
67        String key3 = "key3";
68        Integer data3 = 1;
69        String key4 = "key4";
70        Integer data4 = 2;
71        String key5 = "key5";
72        Integer data5 = 3;
73
74        assertFalse(instance.addData(key1, data1));
75        assertFalse(instance.addData(key2, data2));
76        assertFalse(instance.addData(key3, data3));
77        assertFalse(instance.addData(key4, data4));
78        assertFalse(instance.addData(key5, data5));
79
80        assertEquals(data1, instance.getData(key1));
81        assertEquals(data2, instance.getData(key2));
82        assertEquals(data3, instance.getData(key3));
83        assertEquals(data4, instance.getData(key4));
84        assertEquals(data5, instance.getData(key5));
85    }
86
87    @Test
88    public void testDatahandling_2() throws Exception {
89        // test is data can be added, overwritten, and retrieved as expected
90        GlobalDataContainer instance = GlobalDataContainer.getInstance();
91
92        String key1 = "key1";
93        String data1 = "data1";
94        String data1changed = "data1changed";
95        String key2 = "key2";
96        String data2 = "data2";
97        String data2changed = "data2changed";
98        String key3 = "key3";
99        Integer data3 = 1;
100        Integer data3changed = 11;
101        String key4 = "key4";
102        Integer data4 = 2;
103        Integer data4changed = 22;
104        String key5 = "key5";
105        Integer data5 = 3;
106        Integer data5changed = 33;
107
108        assertFalse(instance.addData(key1, data1));
109        assertFalse(instance.addData(key2, data2));
110        assertFalse(instance.addData(key3, data3));
111        assertFalse(instance.addData(key4, data4));
112        assertFalse(instance.addData(key5, data5));
113
114        assertTrue(instance.addData(key1, data1changed));
115        assertTrue(instance.addData(key2, data2changed));
116        assertTrue(instance.addData(key3, data3changed));
117        assertTrue(instance.addData(key4, data4changed));
118        assertTrue(instance.addData(key5, data5changed));
119
120        assertEquals(data1changed, instance.getData(key1));
121        assertEquals(data2changed, instance.getData(key2));
122        assertEquals(data3changed, instance.getData(key3));
123        assertEquals(data4changed, instance.getData(key4));
124        assertEquals(data5changed, instance.getData(key5));
125    }
126
127    @Test
128    public void testDatahandling_3() throws Exception {
129        // test is data can be removed as expected
130        GlobalDataContainer instance = GlobalDataContainer.getInstance();
131
132        String key1 = "key1";
133        String data1 = "data1";
134        String key2 = "key2";
135        String data2 = "data2";
136        String key3 = "key3";
137        Integer data3 = 1;
138        String key4 = "key4";
139        Integer data4 = 2;
140        String key5 = "key5";
141        Integer data5 = 3;
142
143        assertFalse(instance.addData(key1, data1));
144        assertFalse(instance.addData(key2, data2));
145        assertFalse(instance.addData(key3, data3));
146        assertFalse(instance.addData(key4, data4));
147        assertFalse(instance.addData(key5, data5));
148
149        assertFalse(instance.removeData("keyNotFound"));
150        assertTrue(instance.removeData(key1));
151
152        assertNull(instance.getData(key1));
153    }
154
155    @Test
156    public void testDatahandling_4() throws Exception {
157        // test is data can be removed as expected
158        GlobalDataContainer instance = GlobalDataContainer.getInstance();
159
160        String key1 = "key1";
161        String data1 = "data1";
162        String key2 = "key2";
163        String data2 = "data2";
164        String key3 = "key3";
165        Integer data3 = 1;
166        String key4 = "key4";
167        Integer data4 = 2;
168        String key5 = "key5";
169        Integer data5 = 3;
170
171        assertFalse(instance.addData(key1, data1));
172        assertFalse(instance.addData(key2, data2));
173        assertFalse(instance.addData(key3, data3));
174        assertFalse(instance.addData(key4, data4));
175        assertFalse(instance.addData(key5, data5));
176
177        assertNull(instance.getData("keyNotFound"));
178    }
179
180    @Test
181    public void testReset_1() throws Exception {
182        // check if data container is empty after reset
183        GlobalDataContainer instance = GlobalDataContainer.getInstance();
184        String key1 = "key1";
185        String data1 = "data1";
186        String key2 = "key2";
187        String data2 = "data2";
188        String key3 = "key3";
189        Integer data3 = 1;
190        String key4 = "key4";
191        Integer data4 = 2;
192        String key5 = "key5";
193        Integer data5 = 3;
194
195        assertFalse(instance.addData(key1, data1));
196        assertFalse(instance.addData(key2, data2));
197        assertFalse(instance.addData(key3, data3));
198        assertFalse(instance.addData(key4, data4));
199        assertFalse(instance.addData(key5, data5));
200
201        instance.reset();
202
203        assertNull(instance.getData(key1));
204        assertNull(instance.getData(key2));
205        assertNull(instance.getData(key3));
206        assertNull(instance.getData(key4));
207        assertNull(instance.getData(key5));
208    }
209
210    @Test
211    public void testGetAllKeys_1() throws Exception {
212        // check if data container is empty after reset
213        GlobalDataContainer instance = GlobalDataContainer.getInstance();
214        String key1 = "key1";
215        String data1 = "data1";
216        String key2 = "key2";
217        String data2 = "data2";
218        String key3 = "key3";
219        Integer data3 = 1;
220        String key4 = "key4";
221        Integer data4 = 2;
222        String key5 = "key5";
223        Integer data5 = 3;
224
225        assertFalse(instance.addData(key1, data1));
226        assertFalse(instance.addData(key2, data2));
227        assertFalse(instance.addData(key3, data3));
228        assertFalse(instance.addData(key4, data4));
229        assertFalse(instance.addData(key5, data5));
230
231        Collection<String> expected = new LinkedList<String>();
232        expected.add(key1);
233        expected.add(key2);
234        expected.add(key3);
235        expected.add(key4);
236        expected.add(key5);
237
238        assertCollectionContent(expected, instance.getAllKeys());
239    }
240
241    @Test
242    public void testGetAllSequencesNames_1() {
243        GlobalDataContainer instance = GlobalDataContainer.getInstance();
244        String key1 = "key1";
245        String data1 = "data1";
246        String key2 = "key2";
247        String data2 = "data2";
248        String key3 = "key3";
249        Integer data3 = 1;
250        String key4 = "key4";
251        Integer data4 = 2;
252        String key5 = "key5";
253        Integer data5 = 3;
254
255        assertFalse(instance.addData(key1, data1));
256        assertFalse(instance.addData(key2, data2));
257        assertFalse(instance.addData(key3, data3));
258        assertFalse(instance.addData(key4, data4));
259        assertFalse(instance.addData(key5, data5));
260
261        String keySeq1 = "seq1";
262        Collection<List<Event>> seq1 = new LinkedList<List<Event>>();
263        List<Event> subseq1 = new LinkedList<Event>();
264        subseq1.add(Event.STARTEVENT);
265        seq1.add(subseq1);
266
267        String keySeq2 = "seq2";
268        Collection<List<Event>> seq2 = new LinkedList<List<Event>>();
269        List<Event> subseq2 = new LinkedList<Event>();
270        subseq2.add(Event.STARTEVENT);
271        seq2.add(subseq2);
272
273        assertFalse(instance.addData(keySeq1, seq1));
274        assertFalse(instance.addData(keySeq2, seq2));
275
276        Collection<String> expected = new LinkedList<String>();
277        expected.add(keySeq1);
278        expected.add(keySeq2);
279
280        assertCollectionContent(expected, instance.getAllSequencesNames());
281    }
282
283    @Test
284    public void testGetAllSequencesNames_2() {
285        GlobalDataContainer instance = GlobalDataContainer.getInstance();
286        String key1 = "key1";
287        String data1 = "data1";
288        String key2 = "key2";
289        String data2 = "data2";
290        String key3 = "key3";
291        Integer data3 = 1;
292        String key4 = "key4";
293        Integer data4 = 2;
294        String key5 = "key5";
295        Integer data5 = 3;
296
297        assertFalse(instance.addData(key1, data1));
298        assertFalse(instance.addData(key2, data2));
299        assertFalse(instance.addData(key3, data3));
300        assertFalse(instance.addData(key4, data4));
301        assertFalse(instance.addData(key5, data5));
302
303        String keySeq1 = "seq1";
304        Collection<List<Event>> seq1 = new LinkedList<List<Event>>();
305        List<Event> subseq1 = new LinkedList<Event>();
306        subseq1.add(Event.STARTEVENT);
307        seq1.add(subseq1);
308
309        String keySeq2 = "seq2";
310        Collection<List<Event>> seq2 = new LinkedList<List<Event>>();
311
312        assertFalse(instance.addData(keySeq1, seq1));
313        assertFalse(instance.addData(keySeq2, seq2));
314
315        Collection<String> expected = new LinkedList<String>();
316        expected.add(keySeq1);
317
318        assertCollectionContent(expected, instance.getAllSequencesNames());
319    }
320
321    @Test
322    public void testGetAllSequencesNames_3() {
323        GlobalDataContainer instance = GlobalDataContainer.getInstance();
324        String key1 = "key1";
325        String data1 = "data1";
326        String key2 = "key2";
327        String data2 = "data2";
328        String key3 = "key3";
329        Integer data3 = 1;
330        String key4 = "key4";
331        Integer data4 = 2;
332        String key5 = "key5";
333        Integer data5 = 3;
334
335        assertFalse(instance.addData(key1, data1));
336        assertFalse(instance.addData(key2, data2));
337        assertFalse(instance.addData(key3, data3));
338        assertFalse(instance.addData(key4, data4));
339        assertFalse(instance.addData(key5, data5));
340
341        Collection<String> expected = new LinkedList<String>();
342
343        assertCollectionContent(expected, instance.getAllSequencesNames());
344    }
345
346    @Test
347    public void testGetAllModelNames_1() {
348        GlobalDataContainer instance = GlobalDataContainer.getInstance();
349        String key1 = "key1";
350        String data1 = "data1";
351        String key2 = "key2";
352        String data2 = "data2";
353        String key3 = "key3";
354        Integer data3 = 1;
355        String key4 = "key4";
356        Integer data4 = 2;
357        String key5 = "key5";
358        Integer data5 = 3;
359
360        assertFalse(instance.addData(key1, data1));
361        assertFalse(instance.addData(key2, data2));
362        assertFalse(instance.addData(key3, data3));
363        assertFalse(instance.addData(key4, data4));
364        assertFalse(instance.addData(key5, data5));
365
366        String modelKey1 = "model1";
367        IStochasticProcess model1 = mock(IStochasticProcess.class);
368        String modelKey2 = "model2";
369        IStochasticProcess model2 = mock(IStochasticProcess.class);
370
371        assertFalse(instance.addData(modelKey1, model1));
372        assertFalse(instance.addData(modelKey2, model2));
373
374        Collection<String> expected = new LinkedList<String>();
375        expected.add(modelKey1);
376        expected.add(modelKey2);
377
378        assertCollectionContent(expected, instance.getAllModelNames());
379    }
380
381    @Test
382    public void testGetAllModelNames_2() {
383        GlobalDataContainer instance = GlobalDataContainer.getInstance();
384        String key1 = "key1";
385        String data1 = "data1";
386        String key2 = "key2";
387        String data2 = "data2";
388        String key3 = "key3";
389        Integer data3 = 1;
390        String key4 = "key4";
391        Integer data4 = 2;
392        String key5 = "key5";
393        Integer data5 = 3;
394
395        assertFalse(instance.addData(key1, data1));
396        assertFalse(instance.addData(key2, data2));
397        assertFalse(instance.addData(key3, data3));
398        assertFalse(instance.addData(key4, data4));
399        assertFalse(instance.addData(key5, data5));
400
401        Collection<String> expected = new LinkedList<String>();
402
403        assertCollectionContent(expected, instance.getAllModelNames());
404    }
405
406    @Test
407    public void testSerialization_1() throws Exception {
408        GlobalDataContainer instance = GlobalDataContainer.getInstance();
409        String key1 = "key1";
410        String data1 = "data1";
411        String key2 = "key2";
412        String data2 = "data2";
413        String key3 = "key3";
414        Integer data3 = 1;
415        String key4 = "key4";
416        Integer data4 = 2;
417        String key5 = "key5";
418        Integer data5 = 3;
419
420        String key6 = "key6";
421        Double data6 = 6.0d;
422
423        assertFalse(instance.addData(key1, data1));
424        assertFalse(instance.addData(key2, data2));
425        assertFalse(instance.addData(key3, data3));
426        assertFalse(instance.addData(key4, data4));
427        assertFalse(instance.addData(key5, data5));
428
429        // serialize
430        ByteArrayOutputStream out = new ByteArrayOutputStream();
431        ObjectOutputStream oos = new ObjectOutputStream(out);
432        oos.writeObject(instance);
433        oos.close();
434
435        instance.reset();
436        assertFalse(instance.addData(key6, data6));
437
438        // deserialize
439        byte[] pickled = out.toByteArray();
440        InputStream in = new ByteArrayInputStream(pickled);
441        ObjectInputStream ois = new ObjectInputStream(in);
442        ois.readObject();
443        ois.close();
444
445        // test the result
446        assertEquals(data1, instance.getData(key1));
447        assertEquals(data2, instance.getData(key2));
448        assertEquals(data3, instance.getData(key3));
449        assertEquals(data4, instance.getData(key4));
450        assertEquals(data5, instance.getData(key5));
451        assertNull(instance.getData(key6));
452    }
453
454    @Before
455    public void setUp() {
456        GlobalDataContainer.getInstance().reset();
457    }
458
459}
Note: See TracBrowser for help on using the repository browser.