Author: dlanglais Date: 2010-03-18 14:33:07 +0100 (Thu, 18 Mar 2010) New Revision: 256 Log: et maintenant ? Added: trunk/msm/src/test/java/org/nuiton/mapstoragemanager/pluginloader/ trunk/msm/src/test/java/org/nuiton/mapstoragemanager/pluginloader/PluginLoaderTest.java Added: trunk/msm/src/test/java/org/nuiton/mapstoragemanager/pluginloader/PluginLoaderTest.java =================================================================== --- trunk/msm/src/test/java/org/nuiton/mapstoragemanager/pluginloader/PluginLoaderTest.java (rev 0) +++ trunk/msm/src/test/java/org/nuiton/mapstoragemanager/pluginloader/PluginLoaderTest.java 2010-03-18 13:33:07 UTC (rev 256) @@ -0,0 +1,248 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.nuiton.mapstoragemanager.pluginloader; + +import com.opensymphony.xwork2.interceptor.annotations.After; +import java.io.File; +import java.lang.reflect.Field; +import java.net.MalformedURLException; +import java.util.Collection; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import javax.swing.filechooser.FileFilter; +import junit.framework.Assert; +import junit.framework.TestCase; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.mapstoragemanager.plugins.BigTable; +import org.nuiton.mapstoragemanager.plugins.Exporter; +import org.nuiton.mapstoragemanager.plugins.Importer; +import org.nuiton.mapstoragemanager.plugins.Plugin; + +/** + * + * @author Dorian Langlais + */ +public class PluginLoaderTest extends TestCase { + + /** + * Logger. + */ + private static final Log LOG = LogFactory.getLog(PluginLoaderTest.class); + + /** + * pluginsMapActual. + */ + Map<String, Plugin> pluginsMapActual; + /** + * pluginLoader. + */ + PluginLoader pl; + + /** + * initialisation to prepare test. + */ + @Override + public void setUp() { + /** + * Initialisation. + */ + try { + String basedir = new File("").getAbsolutePath(); + File pluginFolder = new File(basedir, "/src/test/resources"); + pl = new PluginLoader(pluginFolder.getAbsolutePath(), + this.getClass().getClassLoader()); + Field fPlugins = pl.getClass().getDeclaredField("plugins"); + fPlugins.setAccessible(true); + pluginsMapActual = (Map<String, Plugin>) fPlugins.get(pl); + + /** Remise à zéro de la Map */ + pluginsMapActual.clear(); + } catch (IllegalArgumentException ex) { + LOG.fatal(ex, ex); + Assert.fail(); + } catch (IllegalAccessException ex) { + LOG.fatal(ex, ex); + Assert.fail(); + } catch (NoSuchFieldException ex) { + LOG.fatal(ex, ex); + Assert.fail(); + } catch (SecurityException ex) { + LOG.fatal(ex, ex); + Assert.fail(); + } catch (MalformedURLException ex) { + LOG.fatal(ex, ex); + Assert.fail(); + } + } + + /** + * + */ + @Override + @After + public void tearDown() { + String basedir = new File("").getAbsolutePath(); + File properties = new File(basedir, "/src/test/resources/.properties"); + properties.deleteOnExit(); + } + + public void testGetAllPluginNames() { + this.setUp(); + + Set<String> pluginsNamesExpected = new HashSet<String>(); + Set<String> pluginsNamesActual = pl.getAllPluginNames(); + + assertEquals(pluginsNamesExpected, pluginsNamesActual); + + pluginsNamesExpected.add("Test"); + pluginsMapActual.put("Test", null); + pluginsNamesActual = pl.getAllPluginNames(); + + assertEquals(pluginsNamesExpected, pluginsNamesActual); + + } + + public void testGetAllPlugin() { + this.setUp(); + + Collection<Plugin> pluginsExpected = new HashSet<Plugin>(); + Collection<Plugin> pluginsActual = pl.getAllPlugin(null); + + assertEquals(pluginsExpected, pluginsActual); + + Plugin test = new Importer() { + + @Override + public void importFrom(BigTable bigTable, File file) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public FileFilter getFileFilter() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getPluginName() { + return "test"; + } + + @Override + public String getDescription() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void load() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void unload() { + throw new UnsupportedOperationException("Not supported yet."); + } + + }; + + pluginsExpected.clear(); + pluginsExpected.add(test); + pluginsMapActual.put(test.getPluginName(), test); + pluginsActual = pl.getAllPlugin(Importer.class); + assertEquals(pluginsExpected, pluginsActual); + + pluginsExpected.clear(); + pluginsActual = pl.getAllPlugin(Exporter.class); + assertEquals(pluginsExpected, pluginsActual); + + pluginsExpected.clear(); + pluginsActual = pl.getAllPlugin(BigTable.class); + assertEquals(pluginsExpected, pluginsActual); + + pluginsExpected.clear(); + pluginsExpected.add(test); + pluginsActual = pl.getAllPlugin(null); + assertEquals(pluginsExpected, pluginsActual); + + } + + public void testGetPlugin() { + this.setUp(); + + Collection<Plugin> pluginsActual = pl.getAllPlugin(null); + + assertNull(pl.getPlugin(null)); + + Plugin testImporter = new Importer() { + + @Override + public void importFrom(BigTable bigTable, File file) { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override + public FileFilter getFileFilter() { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override + public String getPluginName() { + return "testImporter"; + } + + @Override + public String getDescription() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void load() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void unload() { + throw new UnsupportedOperationException("Not supported yet."); + } + }; + Plugin testExporter = new Exporter() { + + @Override + public void exportTo(BigTable bigTable, File file) { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override + public FileFilter getFileFilter() { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override + public String getPluginName() { + return "testExporter"; + } + + @Override + public String getDescription() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void load() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void unload() { + throw new UnsupportedOperationException("Not supported yet."); + } + }; + + pluginsMapActual.put(testImporter.getPluginName(), testImporter); + pluginsMapActual.put(testExporter.getPluginName(), testExporter); + + assertNull(pl.getPlugin("")); + assertEquals(testImporter, pl.getPlugin(testImporter.getPluginName())); + assertEquals(testExporter, pl.getPlugin(testExporter.getPluginName())); + } +}
participants (1)
-
dlanglais@users.nuiton.org