// Copyright 2012 Georg-August-Universität Göttingen, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package de.ugoe.cs.autoquest.plugin; import java.io.File; import java.util.Arrays; import java.util.Collection; import org.junit.*; import de.ugoe.cs.autoquest.plugin.PluginLoader; import de.ugoe.cs.autoquest.plugin.PluginLoaderException; import de.ugoe.cs.autoquest.plugin.AutoQUESTPlugin; import static org.junit.Assert.*; /** * The class PluginLoaderTest contains tests for the class * {@link PluginLoader}. * * @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.autoquest.plugin.PluginLoaderTest/jfcmonitor.jar")); } @Test public void testCheckNameConformity_1() throws Exception { PluginLoader loader = new PluginLoader(new File(".")); String filename = "autoquest-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 = "autoquest-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 = "autoquest-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 = "autoquest-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 = "autoquest-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 = "autoquest-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.autoquest.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.autoquest.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.autoquest.plugin.PluginLoaderTest")); loader.load(); Collection plugins = loader.getPlugins(); assertEquals(1, plugins.size()); AutoQUESTPlugin plugin = plugins.iterator().next(); assertNotNull(plugin); assertEquals("Mock Plugin", plugin.getTitle()); assertEquals(Arrays.asList(new String[]{"de.ugoe.cs.autoquest.plugin.mock.commands"}), plugin.getCommandPackages()); } @Test public void testLoad_2() throws Exception { PluginLoader loader = new PluginLoader(new File("testdata/de.ugoe.cs.autoquest.plugin.PluginLoaderTestInvalid_1")); try { loader.load(); } catch(PluginLoaderException e) { assertTrue(e.getMessage().endsWith("not instance of AutoQUESTPlugin")); } } @Test public void testLoad_3() throws Exception { PluginLoader loader = new PluginLoader(new File("testdata/de.ugoe.cs.autoquest.plugin.PluginLoaderTestInvalid_2")); try { loader.load(); } catch(PluginLoaderException e) { assertTrue(e.getMessage().startsWith("No class")); } } @Test public void testLoad_4() throws Exception { PluginLoader loader = new PluginLoader(new File("testdata/de.ugoe.cs.autoquest.plugin.PluginLoaderTestInvalid_3")); try { loader.load(); } catch(PluginLoaderException e) { assertTrue(e.getMessage().endsWith("Could not access")); } } }