Index: /trunk/autoquest-plugin-core-test/.classpath
===================================================================
--- /trunk/autoquest-plugin-core-test/.classpath	(revision 904)
+++ /trunk/autoquest-plugin-core-test/.classpath	(revision 904)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
Index: /trunk/autoquest-plugin-core-test/.project
===================================================================
--- /trunk/autoquest-plugin-core-test/.project	(revision 904)
+++ /trunk/autoquest-plugin-core-test/.project	(revision 904)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>quest-plugin-core-test</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
Index: /trunk/autoquest-plugin-core-test/pom.xml
===================================================================
--- /trunk/autoquest-plugin-core-test/pom.xml	(revision 904)
+++ /trunk/autoquest-plugin-core-test/pom.xml	(revision 904)
@@ -0,0 +1,23 @@
+<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"
+>
+    <parent>
+        <groupId>de.ugoe.cs.quest</groupId>
+        <artifactId>quest-test</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>quest-plugin-core-test</artifactId>
+    <properties>
+        <tested-artifactId>quest-plugin-core</tested-artifactId>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>junit-addons</groupId>
+            <artifactId>junit-addons</artifactId>
+            <version>1.4</version>
+        </dependency>
+    </dependencies>
+</project>
Index: /trunk/autoquest-plugin-core-test/src/test/java/de/ugoe/cs/quest/plugin/PluginLoaderTest.java
===================================================================
--- /trunk/autoquest-plugin-core-test/src/test/java/de/ugoe/cs/quest/plugin/PluginLoaderTest.java	(revision 904)
+++ /trunk/autoquest-plugin-core-test/src/test/java/de/ugoe/cs/quest/plugin/PluginLoaderTest.java	(revision 904)
@@ -0,0 +1,208 @@
+package de.ugoe.cs.quest.plugin;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collection;
+
+import junitx.framework.ArrayAssert;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * The class <code>PluginLoaderTest</code> contains tests for the class
+ * <code>{@link PluginLoader}</code>.
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class PluginLoaderTest {
+	
+	@Test
+	public void testPluginLoader_1() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		assertNotNull(loader);
+	}
+	
+	@Test(expected = java.lang.IllegalArgumentException.class)
+	public void testPluginLoader_2() throws Exception {
+		new PluginLoader(null);
+	}
+	
+	@Test(expected = java.lang.IllegalArgumentException.class)
+	public void testPluginLoader_3() throws Exception {
+		new PluginLoader(new File("testdata/de.ugoe.cs.quest.plugin.PluginLoaderTest/jfcmonitor.jar"));
+	}
+		
+	@Test
+	public void testCheckNameConformity_1() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		String filename = "quest-plugin-jfc-1.0.jar";
+		boolean expected = true;
+		
+		boolean result = loader.checkNameConformity(filename);
+		
+		assertEquals(expected, result);
+	}
+	
+	@Test
+	public void testCheckNameConformity_2() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		String filename = "quest-plugin-jf-c-1.0.jar";
+		boolean expected = false;
+		
+		boolean result = loader.checkNameConformity(filename);
+		
+		assertEquals(expected, result);
+	}
+	
+	@Test
+	public void testCheckNameConformity_3() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		String filename = "quest-plugin-jfc.jar";
+		boolean expected = false;
+		
+		boolean result = loader.checkNameConformity(filename);
+		
+		assertEquals(expected, result);
+	}
+	
+	@Test
+	public void testCheckNameConformity_4() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		String filename = "quest-plugi-jfc-1.0.jar";
+		boolean expected = false;
+		
+		boolean result = loader.checkNameConformity(filename);
+		
+		assertEquals(expected, result);
+	}
+	
+	@Test
+	public void testCheckNameConformity_5() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		String filename = "quest-pluginjfc-1.0.jar";
+		boolean expected = false;
+		
+		boolean result = loader.checkNameConformity(filename);
+		
+		assertEquals(expected, result);
+	}
+	
+	@Test
+	public void testCheckNameConformity_6() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		String filename = "quest-plugin-jfc-1-0.jar";
+		boolean expected = false;
+		
+		boolean result = loader.checkNameConformity(filename);
+		
+		assertEquals(expected, result);
+	}
+	
+	@Test
+	public void testCheckNameConformity_7() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		String filename = "quest-plugin-jfc-1.0.nojar";
+		boolean expected = false;
+		
+		boolean result = loader.checkNameConformity(filename);
+		
+		assertEquals(expected, result);
+	}
+	
+	@Test
+	public void testCheckNameConformity_8() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		String filename = null;
+		boolean expected = false;
+		
+		boolean result = loader.checkNameConformity(filename);
+		
+		assertEquals(expected, result);
+	}
+	
+	@Test
+	public void testCheckNameConformity_9() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		String filename = "";
+		boolean expected = false;
+		
+		boolean result = loader.checkNameConformity(filename);
+		
+		assertEquals(expected, result);
+	}
+	
+	@Test
+	public void testGetClassPathFromJar_1() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		File jarFile = new File("testdata/de.ugoe.cs.quest.plugin.PluginLoaderTest/jfcmonitor.jar");
+		
+		String[] expected = new String[]{ "file:" + jarFile.getParentFile().getAbsolutePath()+"/javahelperlib.jar" };
+				
+		String[] result = loader.getClassPathFromJar(jarFile);
+		
+		ArrayAssert.assertEquivalenceArrays(expected, result);
+	}
+	
+	@Test
+	public void testGetClassPathFromJar_2() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("."));
+		File jarFile = new File("testdata/de.ugoe.cs.quest.plugin.PluginLoaderTest/jmi.jar");
+		
+		String[] expected = new String[]{ };
+				
+		String[] result = loader.getClassPathFromJar(jarFile);
+		
+		ArrayAssert.assertEquivalenceArrays(expected, result);
+	}
+	
+	@Test 
+	public void testLoad_1() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("testdata/de.ugoe.cs.quest.plugin.PluginLoaderTest"));
+		
+		loader.load();
+		
+		Collection<QuestPlugin> plugins = loader.getPlugins();
+		
+		assertEquals(1, plugins.size());
+		QuestPlugin plugin = plugins.iterator().next();
+		assertNotNull(plugin);
+		assertEquals("Mock Plugin", plugin.getTitle());
+		assertEquals(Arrays.asList(new String[]{"de.ugoe.cs.quest.plugin.mock.commands"}), plugin.getCommandPackages());
+	}
+	
+	@Test 
+	public void testLoad_2() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("testdata/de.ugoe.cs.quest.plugin.PluginLoaderTestInvalid_1"));
+		
+		try {
+			loader.load();
+		} catch(PluginLoaderException e) {
+			e.getMessage().endsWith("not instance of QuestPlugin");
+		}
+	}
+	
+	@Test 
+	public void testLoad_3() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("testdata/de.ugoe.cs.quest.plugin.PluginLoaderTestInvalid_2"));
+		
+		try {
+			loader.load();
+		} catch(PluginLoaderException e) {
+			e.getMessage().startsWith("No class");
+		}
+	}
+	
+	@Test 
+	public void testLoad_4() throws Exception {
+		PluginLoader loader = new PluginLoader(new File("testdata/de.ugoe.cs.quest.plugin.PluginLoaderTestInvalid_3"));
+		
+		try {
+			loader.load();
+		} catch(PluginLoaderException e) {
+			e.getMessage().endsWith("Could not access");
+		}
+	}
+
+}
