Index: /trunk/quest-ui-core-test/pom.xml
===================================================================
--- /trunk/quest-ui-core-test/pom.xml	(revision 529)
+++ /trunk/quest-ui-core-test/pom.xml	(revision 530)
@@ -1,127 +1,139 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>quest-ui-core-test</groupId>
-  <artifactId>quest-ui-core-test</artifactId>
-  <version>0.0.1-SNAPSHOT</version>
-  <scm>
-    <url>https://quest.informatik.uni-goettingen.de/svn/quest/trunk/quest-ui-core-test</url>
-  </scm>
-  <dependencies>
-    <dependency>
-        <groupId>de.ugoe.cs.quest</groupId>
-        <artifactId>quest-ui-core</artifactId>
-        <version>0.0.1-SNAPSHOT</version>
-        <scope>test</scope>
-    </dependency>
-    <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>4.8.1</version>
-        <scope>test</scope>
-    </dependency>
-  </dependencies>
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.eclipse.m2e</groupId>
-          <artifactId>lifecycle-mapping</artifactId>
-          <version>1.0.0</version>
-          <configuration>
-            <lifecycleMappingMetadata>
-              <pluginExecutions>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-dependency-plugin</artifactId>
-                    <versionRange>[1.0.0,)</versionRange>
-                    <goals>
-                      <goal>unpack</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore/>
-                  </action>
-                </pluginExecution>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.codehaus.mojo</groupId>
-                    <artifactId>emma-maven-plugin</artifactId>
-                    <versionRange>[1.0-alpha-3,)</versionRange>
-                    <goals>
-                      <goal>emma</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore/>
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.3.2</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <version>2.4</version>
-        <executions>
-          <execution>
-            <id>unpack</id>
-            <phase>process-classes</phase>
-            <goals>
-              <goal>unpack</goal>
-            </goals>
-            <configuration>
-              <artifactItems>
-                <artifactItem>
-                  <groupId>de.ugoe.cs.quest</groupId>
-                  <artifactId>quest-ui-core</artifactId>
-                  <version>0.0.1-SNAPSHOT</version>
-                  <outputDirectory>${project.build.directory}/classes</outputDirectory>
-                </artifactItem>
-              </artifactItems>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>emma-maven-plugin</artifactId>
-        <version>1.0-alpha-3</version>
-        <inherited>true</inherited>          
-        <executions>
-          <execution>
-            <phase>process-classes</phase>
-            <goals>
-              <goal>emma</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <version>2.3.2</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>test-jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>quest-ui-core-test</groupId>
+	<artifactId>quest-ui-core-test</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<scm>
+		<url>https://quest.informatik.uni-goettingen.de/svn/quest/trunk/quest-ui-core-test</url>
+	</scm>
+	<dependencies>
+		<dependency>
+			<groupId>de.ugoe.cs.quest</groupId>
+			<artifactId>quest-ui-core</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.8.1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit-addons</groupId>
+			<artifactId>junit-addons</artifactId>
+			<version>1.4</version>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-core</artifactId>
+			<version>1.9.0</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+	<build>
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>org.apache.maven.plugins</groupId>
+										<artifactId>maven-dependency-plugin</artifactId>
+										<versionRange>[1.0.0,)</versionRange>
+										<goals>
+											<goal>unpack</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore />
+									</action>
+								</pluginExecution>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>org.codehaus.mojo</groupId>
+										<artifactId>emma-maven-plugin</artifactId>
+										<versionRange>[1.0-alpha-3,)</versionRange>
+										<goals>
+											<goal>emma</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore />
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.3.2</version>
+				<configuration>
+					<source>1.6</source>
+					<target>1.6</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-dependency-plugin</artifactId>
+				<version>2.4</version>
+				<executions>
+					<execution>
+						<id>unpack</id>
+						<phase>process-classes</phase>
+						<goals>
+							<goal>unpack</goal>
+						</goals>
+						<configuration>
+							<artifactItems>
+								<artifactItem>
+									<groupId>de.ugoe.cs.quest</groupId>
+									<artifactId>quest-ui-core</artifactId>
+									<version>0.0.1-SNAPSHOT</version>
+									<outputDirectory>${project.build.directory}/classes</outputDirectory>
+								</artifactItem>
+							</artifactItems>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>emma-maven-plugin</artifactId>
+				<version>1.0-alpha-3</version>
+				<inherited>true</inherited>
+				<executions>
+					<execution>
+						<phase>process-classes</phase>
+						<goals>
+							<goal>emma</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<version>2.3.2</version>
+				<executions>
+					<execution>
+						<goals>
+							<goal>test-jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
 </project>
Index: unk/quest-ui-core-test/src/test/java/de/ugoe/cs/quest/TestAll.java
===================================================================
--- /trunk/quest-ui-core-test/src/test/java/de/ugoe/cs/quest/TestAll.java	(revision 529)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package de.ugoe.cs.quest;
-
-import org.junit.runner.JUnitCore;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * The class <code>TestAll</code> builds a suite that can be used to run all
- * of the tests within its package as well as within any subpackages of its
- * package.
- *
- * @author Steffen Herbold
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-	de.ugoe.cs.quest.plugin.jfc.eventcore.TestAll.class
-})
-public class TestAll {
-	public static void main(String[] args) {
-		JUnitCore.runClasses(new Class[] { TestAll.class });
-	}
-}
Index: unk/quest-ui-core-test/src/test/java/de/ugoe/cs/quest/plugin/jfc/eventcore/TestAll.java
===================================================================
--- /trunk/quest-ui-core-test/src/test/java/de/ugoe/cs/quest/plugin/jfc/eventcore/TestAll.java	(revision 529)
+++ 	(revision )
@@ -1,25 +1,0 @@
-package de.ugoe.cs.quest.plugin.jfc.eventcore;
-
-import org.junit.runner.JUnitCore;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-import de.ugoe.cs.quest.plugin.jfc.eventcore.TestAll;
-
-/**
- * The class <code>TestAll</code> builds a suite that can be used to run all
- * of the tests within its package as well as within any subpackages of its
- * package.
- *
- * @author Steffen Herbold
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-	JFCEventTest.class
-})
-public class TestAll {
-
-	public static void main(String[] args) {
-		JUnitCore.runClasses(new Class[] { TestAll.class });
-	}
-}
Index: /trunk/quest-ui-core-test/src/test/java/de/ugoe/cs/quest/ui/GlobalDataContainerTest.java
===================================================================
--- /trunk/quest-ui-core-test/src/test/java/de/ugoe/cs/quest/ui/GlobalDataContainerTest.java	(revision 530)
+++ /trunk/quest-ui-core-test/src/test/java/de/ugoe/cs/quest/ui/GlobalDataContainerTest.java	(revision 530)
@@ -0,0 +1,462 @@
+package de.ugoe.cs.quest.ui;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Modifier;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.junit.*;
+
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.usageprofiles.IStochasticProcess;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+/**
+ * The class <code>WindowsEventTest</code> contains tests for the class
+ * <code>{@link WindowsEvent}</code>.
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class GlobalDataContainerTest {
+
+	private static void assertCollectionContent(Collection<?> c1,
+			Collection<?> c2) {
+		assertEquals(c1.size(), c2.size());
+		for (Object obj : c1) {
+			assertTrue(c2.contains(obj));
+		}
+	}
+	
+	@Test
+	public void testGlobalDataContainer_1() throws Exception {
+		// assure that all constructors are private
+		Constructor<?>[] constructors = GlobalDataContainer.class.getDeclaredConstructors();
+		for (int i = 0; i < constructors.length; i++) { 
+			int modifier = constructors[i].getModifiers();
+			if(modifier != Modifier.PRIVATE) {
+				fail(constructors[i].getName()+" - "+Modifier.toString(modifier));
+			}
+		}
+	}
+
+	@Test
+	public void testGetInstance_1() throws Exception {
+		GlobalDataContainer instance1 = GlobalDataContainer.getInstance();
+		GlobalDataContainer instance2 = GlobalDataContainer.getInstance();
+		assertNotNull(instance1);
+		assertSame(instance1, instance2);
+	}
+
+	@Test
+	public void testDatahandling_1() throws Exception {
+		// test is data can be added and retrieved as expected
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+
+		assertEquals(data1, instance.getData(key1));
+		assertEquals(data2, instance.getData(key2));
+		assertEquals(data3, instance.getData(key3));
+		assertEquals(data4, instance.getData(key4));
+		assertEquals(data5, instance.getData(key5));
+	}
+
+	@Test
+	public void testDatahandling_2() throws Exception {
+		// test is data can be added, overwritten, and retrieved as expected
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+
+		String key1 = "key1";
+		String data1 = "data1";
+		String data1changed = "data1changed";
+		String key2 = "key2";
+		String data2 = "data2";
+		String data2changed = "data2changed";
+		String key3 = "key3";
+		Integer data3 = 1;
+		Integer data3changed = 11;
+		String key4 = "key4";
+		Integer data4 = 2;
+		Integer data4changed = 22;
+		String key5 = "key5";
+		Integer data5 = 3;
+		Integer data5changed = 33;
+
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+
+		assertTrue(instance.addData(key1, data1changed));
+		assertTrue(instance.addData(key2, data2changed));
+		assertTrue(instance.addData(key3, data3changed));
+		assertTrue(instance.addData(key4, data4changed));
+		assertTrue(instance.addData(key5, data5changed));
+
+		assertEquals(data1changed, instance.getData(key1));
+		assertEquals(data2changed, instance.getData(key2));
+		assertEquals(data3changed, instance.getData(key3));
+		assertEquals(data4changed, instance.getData(key4));
+		assertEquals(data5changed, instance.getData(key5));
+	}
+	
+	@Test
+	public void testDatahandling_3() throws Exception {
+		// test is data can be removed as expected
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+
+		assertFalse(instance.removeData("keyNotFound"));
+		assertTrue(instance.removeData(key1));
+		
+		assertNull(instance.getData(key1));
+	}
+	
+	@Test
+	public void testDatahandling_4() throws Exception {
+		// test is data can be removed as expected
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+
+		assertNull(instance.getData("keyNotFound"));
+	}
+	
+	@Test
+	public void testReset_1() throws Exception {
+		// check if data container is empty after reset
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+		
+		instance.reset();
+		
+		assertNull(instance.getData(key1));
+		assertNull(instance.getData(key2));
+		assertNull(instance.getData(key3));
+		assertNull(instance.getData(key4));
+		assertNull(instance.getData(key5));
+	}
+	 
+	@Test
+	public void testGetAllKeys_1() throws Exception {
+		// check if data container is empty after reset
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+		
+		Collection<String> expected = new LinkedList<String>();
+		expected.add(key1);
+		expected.add(key2);
+		expected.add(key3);
+		expected.add(key4);
+		expected.add(key5);
+		
+		assertCollectionContent(expected, instance.getAllKeys());
+	}
+	
+	@Test
+	public void testGetAllSequencesNames_1() {
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+		
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+		
+		String keySeq1 = "seq1";
+		Collection<List<Event<?>>> seq1 = new LinkedList<List<Event<?>>>();
+		List<Event<?>> subseq1 = new LinkedList<Event<?>>();
+		subseq1.add(Event.STARTEVENT);
+		seq1.add(subseq1);
+		
+		String keySeq2 = "seq2";
+		Collection<List<Event<?>>> seq2 = new LinkedList<List<Event<?>>>();
+		List<Event<?>> subseq2 = new LinkedList<Event<?>>();
+		subseq2.add(Event.STARTEVENT);
+		seq2.add(subseq2);
+		
+		assertFalse(instance.addData(keySeq1, seq1));
+		assertFalse(instance.addData(keySeq2, seq2));
+		
+		Collection<String> expected = new LinkedList<String>();
+		expected.add(keySeq1);
+		expected.add(keySeq2);
+		
+		assertCollectionContent(expected, instance.getAllSequencesNames());
+	}
+	
+	@Test
+	public void testGetAllSequencesNames_2() {
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+		
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+		
+		String keySeq1 = "seq1";
+		Collection<List<Event<?>>> seq1 = new LinkedList<List<Event<?>>>();
+		List<Event<?>> subseq1 = new LinkedList<Event<?>>();
+		subseq1.add(Event.STARTEVENT);
+		seq1.add(subseq1);
+		
+		String keySeq2 = "seq2";
+		Collection<List<Event<?>>> seq2 = new LinkedList<List<Event<?>>>();
+		
+		assertFalse(instance.addData(keySeq1, seq1));
+		assertFalse(instance.addData(keySeq2, seq2));
+		
+		Collection<String> expected = new LinkedList<String>();
+		expected.add(keySeq1);
+		
+		assertCollectionContent(expected, instance.getAllSequencesNames());
+	}
+	
+	@Test
+	public void testGetAllSequencesNames_3() {
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+		
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+		
+		Collection<String> expected = new LinkedList<String>();
+		
+		assertCollectionContent(expected, instance.getAllSequencesNames());
+	}
+	
+	@Test
+	public void testGetAllModelNames_1() {
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+		
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+		
+		String modelKey1 = "model1";
+		IStochasticProcess model1 = mock(IStochasticProcess.class);
+		String modelKey2 = "model2";
+		IStochasticProcess model2 = mock(IStochasticProcess.class);
+				
+		assertFalse(instance.addData(modelKey1, model1));
+		assertFalse(instance.addData(modelKey2, model2));
+		
+		Collection<String> expected = new LinkedList<String>();
+		expected.add(modelKey1);
+		expected.add(modelKey2);
+		
+		assertCollectionContent(expected, instance.getAllModelNames());
+	}
+	
+	@Test
+	public void testGetAllModelNames_2() {
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+		
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+		
+		Collection<String> expected = new LinkedList<String>();
+		
+		assertCollectionContent(expected, instance.getAllModelNames());
+	}
+	
+	@Test
+	public void testSerialization_1() throws Exception {
+		GlobalDataContainer instance = GlobalDataContainer.getInstance();
+		String key1 = "key1";
+		String data1 = "data1";
+		String key2 = "key2";
+		String data2 = "data2";
+		String key3 = "key3";
+		Integer data3 = 1;
+		String key4 = "key4";
+		Integer data4 = 2;
+		String key5 = "key5";
+		Integer data5 = 3;
+		
+		String key6 = "key6";
+		Double data6 = 6.0d;
+
+		assertFalse(instance.addData(key1, data1));
+		assertFalse(instance.addData(key2, data2));
+		assertFalse(instance.addData(key3, data3));
+		assertFalse(instance.addData(key4, data4));
+		assertFalse(instance.addData(key5, data5));
+		
+		 // serialize
+	    ByteArrayOutputStream out = new ByteArrayOutputStream();
+	    ObjectOutputStream oos = new ObjectOutputStream(out);
+	    oos.writeObject(instance);
+	    oos.close();
+	    
+	    instance.reset();
+	    assertFalse(instance.addData(key6, data6));
+	    
+
+	    //deserialize
+	    byte[] pickled = out.toByteArray();
+	    InputStream in = new ByteArrayInputStream(pickled);
+	    ObjectInputStream ois = new ObjectInputStream(in);
+	    ois.readObject();
+	    ois.close();
+
+	    // test the result
+	    assertEquals(data1, instance.getData(key1));
+		assertEquals(data2, instance.getData(key2));
+		assertEquals(data3, instance.getData(key3));
+		assertEquals(data4, instance.getData(key4));
+		assertEquals(data5, instance.getData(key5));
+		assertNull(instance.getData(key6));
+	}
+	
+
+	@Before
+	public void setUp() {
+		GlobalDataContainer.getInstance().reset();
+	}
+
+}
