source: trunk/java-utils-test/src/test/java/de/ugoe/cs/util/console/GlobalDataContainerTest.java @ 927

Last change on this file since 927 was 927, checked in by sherbold, 12 years ago
  • added copyright under the Apache License, Version 2.0
  • Property svn:mime-type set to text/plain
File size: 10.4 KB
Line 
1//   Copyright 2012 Georg-August-Universität Göttingen, Germany
2//
3//   Licensed under the Apache License, Version 2.0 (the "License");
4//   you may not use this file except in compliance with the License.
5//   You may obtain a copy of the License at
6//
7//       http://www.apache.org/licenses/LICENSE-2.0
8//
9//   Unless required by applicable law or agreed to in writing, software
10//   distributed under the License is distributed on an "AS IS" BASIS,
11//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12//   See the License for the specific language governing permissions and
13//   limitations under the License.
14
15package de.ugoe.cs.util.console;
16
17import static org.junit.Assert.assertEquals;
18import static org.junit.Assert.assertFalse;
19import static org.junit.Assert.assertNotNull;
20import static org.junit.Assert.assertNull;
21import static org.junit.Assert.assertSame;
22import static org.junit.Assert.assertTrue;
23import static org.junit.Assert.fail;
24
25import java.io.ByteArrayInputStream;
26import java.io.ByteArrayOutputStream;
27import java.io.InputStream;
28import java.io.ObjectInputStream;
29import java.io.ObjectOutputStream;
30import java.lang.reflect.Constructor;
31import java.lang.reflect.Modifier;
32import java.util.Collection;
33import java.util.LinkedList;
34
35import org.junit.Before;
36import org.junit.Test;
37
38import de.ugoe.cs.util.console.GlobalDataContainer;
39
40/**
41 * The class <code>WindowsEventTest</code> contains tests for the class
42 * <code>{@link WindowsEvent}</code>.
43 *
44 * @author Steffen Herbold
45 * @version 1.0
46 */
47public class GlobalDataContainerTest {
48
49    private static void assertCollectionContent(Collection<?> c1, Collection<?> c2) {
50        assertEquals(c1.size(), c2.size());
51        for (Object obj : c1) {
52            assertTrue(c2.contains(obj));
53        }
54    }
55
56    @Test
57    public void testGlobalDataContainer_1() throws Exception {
58        // assure that all constructors are private
59        Constructor<?>[] constructors = GlobalDataContainer.class.getDeclaredConstructors();
60        for (int i = 0; i < constructors.length; i++) {
61            int modifier = constructors[i].getModifiers();
62            if (modifier != Modifier.PRIVATE) {
63                fail(constructors[i].getName() + " - " + Modifier.toString(modifier));
64            }
65        }
66    }
67
68    @Test
69    public void testGetInstance_1() throws Exception {
70        GlobalDataContainer instance1 = GlobalDataContainer.getInstance();
71        GlobalDataContainer instance2 = GlobalDataContainer.getInstance();
72        assertNotNull(instance1);
73        assertSame(instance1, instance2);
74    }
75
76    @Test
77    public void testDatahandling_1() throws Exception {
78        // test is data can be added and retrieved as expected
79        GlobalDataContainer instance = GlobalDataContainer.getInstance();
80
81        String key1 = "key1";
82        String data1 = "data1";
83        String key2 = "key2";
84        String data2 = "data2";
85        String key3 = "key3";
86        Integer data3 = 1;
87        String key4 = "key4";
88        Integer data4 = 2;
89        String key5 = "key5";
90        Integer data5 = 3;
91
92        assertFalse(instance.addData(key1, data1));
93        assertFalse(instance.addData(key2, data2));
94        assertFalse(instance.addData(key3, data3));
95        assertFalse(instance.addData(key4, data4));
96        assertFalse(instance.addData(key5, data5));
97
98        assertEquals(data1, instance.getData(key1));
99        assertEquals(data2, instance.getData(key2));
100        assertEquals(data3, instance.getData(key3));
101        assertEquals(data4, instance.getData(key4));
102        assertEquals(data5, instance.getData(key5));
103    }
104
105    @Test
106    public void testDatahandling_2() throws Exception {
107        // test is data can be added, overwritten, and retrieved as expected
108        GlobalDataContainer instance = GlobalDataContainer.getInstance();
109
110        String key1 = "key1";
111        String data1 = "data1";
112        String data1changed = "data1changed";
113        String key2 = "key2";
114        String data2 = "data2";
115        String data2changed = "data2changed";
116        String key3 = "key3";
117        Integer data3 = 1;
118        Integer data3changed = 11;
119        String key4 = "key4";
120        Integer data4 = 2;
121        Integer data4changed = 22;
122        String key5 = "key5";
123        Integer data5 = 3;
124        Integer data5changed = 33;
125
126        assertFalse(instance.addData(key1, data1));
127        assertFalse(instance.addData(key2, data2));
128        assertFalse(instance.addData(key3, data3));
129        assertFalse(instance.addData(key4, data4));
130        assertFalse(instance.addData(key5, data5));
131
132        assertTrue(instance.addData(key1, data1changed));
133        assertTrue(instance.addData(key2, data2changed));
134        assertTrue(instance.addData(key3, data3changed));
135        assertTrue(instance.addData(key4, data4changed));
136        assertTrue(instance.addData(key5, data5changed));
137
138        assertEquals(data1changed, instance.getData(key1));
139        assertEquals(data2changed, instance.getData(key2));
140        assertEquals(data3changed, instance.getData(key3));
141        assertEquals(data4changed, instance.getData(key4));
142        assertEquals(data5changed, instance.getData(key5));
143    }
144
145    @Test
146    public void testDatahandling_3() throws Exception {
147        // test is data can be removed as expected
148        GlobalDataContainer instance = GlobalDataContainer.getInstance();
149
150        String key1 = "key1";
151        String data1 = "data1";
152        String key2 = "key2";
153        String data2 = "data2";
154        String key3 = "key3";
155        Integer data3 = 1;
156        String key4 = "key4";
157        Integer data4 = 2;
158        String key5 = "key5";
159        Integer data5 = 3;
160
161        assertFalse(instance.addData(key1, data1));
162        assertFalse(instance.addData(key2, data2));
163        assertFalse(instance.addData(key3, data3));
164        assertFalse(instance.addData(key4, data4));
165        assertFalse(instance.addData(key5, data5));
166
167        assertFalse(instance.removeData("keyNotFound"));
168        assertTrue(instance.removeData(key1));
169
170        assertNull(instance.getData(key1));
171    }
172
173    @Test
174    public void testDatahandling_4() throws Exception {
175        // test is data can be removed as expected
176        GlobalDataContainer instance = GlobalDataContainer.getInstance();
177
178        String key1 = "key1";
179        String data1 = "data1";
180        String key2 = "key2";
181        String data2 = "data2";
182        String key3 = "key3";
183        Integer data3 = 1;
184        String key4 = "key4";
185        Integer data4 = 2;
186        String key5 = "key5";
187        Integer data5 = 3;
188
189        assertFalse(instance.addData(key1, data1));
190        assertFalse(instance.addData(key2, data2));
191        assertFalse(instance.addData(key3, data3));
192        assertFalse(instance.addData(key4, data4));
193        assertFalse(instance.addData(key5, data5));
194
195        assertNull(instance.getData("keyNotFound"));
196    }
197
198    @Test
199    public void testReset_1() throws Exception {
200        // check if data container is empty after reset
201        GlobalDataContainer instance = GlobalDataContainer.getInstance();
202        String key1 = "key1";
203        String data1 = "data1";
204        String key2 = "key2";
205        String data2 = "data2";
206        String key3 = "key3";
207        Integer data3 = 1;
208        String key4 = "key4";
209        Integer data4 = 2;
210        String key5 = "key5";
211        Integer data5 = 3;
212
213        assertFalse(instance.addData(key1, data1));
214        assertFalse(instance.addData(key2, data2));
215        assertFalse(instance.addData(key3, data3));
216        assertFalse(instance.addData(key4, data4));
217        assertFalse(instance.addData(key5, data5));
218
219        instance.reset();
220
221        assertNull(instance.getData(key1));
222        assertNull(instance.getData(key2));
223        assertNull(instance.getData(key3));
224        assertNull(instance.getData(key4));
225        assertNull(instance.getData(key5));
226    }
227
228    @Test
229    public void testGetAllKeys_1() throws Exception {
230        // check if data container is empty after reset
231        GlobalDataContainer instance = GlobalDataContainer.getInstance();
232        String key1 = "key1";
233        String data1 = "data1";
234        String key2 = "key2";
235        String data2 = "data2";
236        String key3 = "key3";
237        Integer data3 = 1;
238        String key4 = "key4";
239        Integer data4 = 2;
240        String key5 = "key5";
241        Integer data5 = 3;
242
243        assertFalse(instance.addData(key1, data1));
244        assertFalse(instance.addData(key2, data2));
245        assertFalse(instance.addData(key3, data3));
246        assertFalse(instance.addData(key4, data4));
247        assertFalse(instance.addData(key5, data5));
248
249        Collection<String> expected = new LinkedList<String>();
250        expected.add(key1);
251        expected.add(key2);
252        expected.add(key3);
253        expected.add(key4);
254        expected.add(key5);
255
256        assertCollectionContent(expected, instance.getAllKeys());
257    }
258
259    @Test
260    public void testSerialization_1() throws Exception {
261        GlobalDataContainer instance = GlobalDataContainer.getInstance();
262        String key1 = "key1";
263        String data1 = "data1";
264        String key2 = "key2";
265        String data2 = "data2";
266        String key3 = "key3";
267        Integer data3 = 1;
268        String key4 = "key4";
269        Integer data4 = 2;
270        String key5 = "key5";
271        Integer data5 = 3;
272
273        String key6 = "key6";
274        Double data6 = 6.0d;
275
276        assertFalse(instance.addData(key1, data1));
277        assertFalse(instance.addData(key2, data2));
278        assertFalse(instance.addData(key3, data3));
279        assertFalse(instance.addData(key4, data4));
280        assertFalse(instance.addData(key5, data5));
281
282        // serialize
283        ByteArrayOutputStream out = new ByteArrayOutputStream();
284        ObjectOutputStream oos = new ObjectOutputStream(out);
285        oos.writeObject(instance);
286        oos.close();
287
288        instance.reset();
289        assertFalse(instance.addData(key6, data6));
290
291        // deserialize
292        byte[] pickled = out.toByteArray();
293        InputStream in = new ByteArrayInputStream(pickled);
294        ObjectInputStream ois = new ObjectInputStream(in);
295        ois.readObject();
296        ois.close();
297
298        // test the result
299        assertEquals(data1, instance.getData(key1));
300        assertEquals(data2, instance.getData(key2));
301        assertEquals(data3, instance.getData(key3));
302        assertEquals(data4, instance.getData(key4));
303        assertEquals(data5, instance.getData(key5));
304        assertNull(instance.getData(key6));
305    }
306
307    @Before
308    public void setUp() {
309        GlobalDataContainer.getInstance().reset();
310    }
311
312}
Note: See TracBrowser for help on using the repository browser.