Index: trunk/quest-plugin-jfc-test/src/test/java/de/ugoe/cs/quest/plugin/jfc/JFCReplayIDCalculatorTest.java
===================================================================
--- trunk/quest-plugin-jfc-test/src/test/java/de/ugoe/cs/quest/plugin/jfc/JFCReplayIDCalculatorTest.java	(revision 796)
+++ trunk/quest-plugin-jfc-test/src/test/java/de/ugoe/cs/quest/plugin/jfc/JFCReplayIDCalculatorTest.java	(revision 797)
@@ -6,4 +6,9 @@
 import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
 
 import junit.framework.TestCase;
@@ -12,4 +17,7 @@
 import org.junit.Before;
 import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 import de.ugoe.cs.quest.eventcore.Event;
@@ -18,4 +26,5 @@
 import de.ugoe.cs.quest.plugin.jfc.guimodel.JFCGUIElement;
 import de.ugoe.cs.quest.plugin.jfc.guimodel.JFCGUIElementSpec;
+import de.ugoe.cs.util.console.TextConsole;
 
 /**
@@ -96,4 +105,83 @@
 		assertEquals("e3561778462", result);
 	}
+	
+	/**
+	 * Run the String calculateReplayID(List<JFCGUIElementSpec>) method test.
+	 *
+	 * @throws Exception
+	 */
+	@Test
+	public void testCalculateReplayIDAllEvents()
+		throws Exception {
+		// generate list of known replayIDs from guitar efg file
+		File guiFile = new File(ClassLoader.getSystemResource("freemind.efg").getFile());
+		
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		DocumentBuilder builder = factory.newDocumentBuilder();
+		Document freemindGUI = builder.parse(guiFile);
+		
+		Node currentNode = freemindGUI.getFirstChild().getFirstChild();
+		NodeList eventNodes = null;
+		List<String> knownIDs = new ArrayList<String>();
+		
+		while ((currentNode = currentNode.getNextSibling()) != null){
+			if (currentNode.getNodeName().equals("Events"))
+				eventNodes = currentNode.getChildNodes();
+		}
+		
+		for (int i = 0; i < eventNodes.getLength(); i++){
+			if (eventNodes.item(i).getNodeName().equals("Event")){
+				NodeList attributes = eventNodes.item(i).getChildNodes();
+				for (int j = 0; j < attributes.getLength(); j++){
+					if (attributes.item(j).getNodeName().equals("EventId")){
+						knownIDs.add(attributes.item(j).getTextContent());
+					}
+				}
+			}
+		}
+		
+		// calculate replayIDs from trace file
+		Collection<JFCEventId> ignoredEvents = new HashSet<JFCEventId>();
+		ignoredEvents.add(JFCEventId.FOCUS_GAINED);
+		JFCLogParser parser = new JFCLogParser(ignoredEvents);
+		parser.parseFile(new File(ClassLoader.getSystemResource("freemind_trace2.xml").getFile()));
+		JFCReplayIDCalculator calculator = new JFCReplayIDCalculator();
+		
+		Set<String> generatedIDs = new HashSet<String>(); 
+		
+		Collection<List<Event>> sequences = parser.getSequences();
+		
+		assertTrue(sequences.size() > 0);
+		
+		
+		for (List<Event> currentSequence: sequences){
+			for (Event currentEvent: currentSequence){
+				String replayID = calculator.calculateReplayID(currentEvent);
+				generatedIDs.add(replayID);
+				System.out.println("Generated ID: " + replayID);
+			}
+		}
+		
+		System.out.println();
+		
+		// check if generatedIDs are known
+		int known = 0;
+		for (String replayID: generatedIDs){
+			if (knownIDs.contains(replayID)){
+				System.out.println(replayID + "\t is known.");
+				known++;
+			}
+			else
+				System.out.println(replayID + "\t is unknown.");
+		}
+		System.out.println();
+		
+		float percentage = (float) known/generatedIDs.size()*100;
+		System.out.println(percentage + "% of the generated IDs are known.");
+		
+		assertTrue(percentage > 75);
+		
+		
+	}
 
 	/**
@@ -108,5 +196,5 @@
 	public void setUp()
 		throws Exception {
-		// add additional set up code here
+		    new TextConsole(Level.FINEST);
 	}
 
