/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.core; import org.dspace.AbstractDSpaceTest; import org.dspace.core.factory.CoreServiceFactory; import org.dspace.core.service.PluginService; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.junit.Test; /** * Tests for Plugin Service. * <P> * NOTE: Plugin definitions/configurations which are used for this test are * defined in /src/test/data/dspaceFolder/config/local.cfg * * @author Tim Donohue */ public class PluginServiceTest extends AbstractDSpaceTest { // Get our enabled pluginService private PluginService pluginService = CoreServiceFactory.getInstance().getPluginService(); /** * Test of getAllPluginNames() method */ @Test public void testGetAllPluginNames() { // Get all plugins defined from List interface (see test local.cfg) String[] names = pluginService.getAllPluginNames(java.util.List.class); // There should be exactly 3 List plugins assertEquals("Plugin count", 3, names.length); } /** * Test of getNamedPlugin() method */ @Test public void testGetNamedPlugin() { // Get the plugin named "MyArrayList" Object plugin = pluginService.getNamedPlugin(java.util.List.class, "MyArrayList"); assertNotNull("Plugin exists", plugin); assertTrue("Plugin is List", plugin instanceof java.util.List); assertTrue("Plugin is ArrayList", plugin instanceof java.util.ArrayList); // Get a plugin that doesn't exist plugin = pluginService.getNamedPlugin(java.util.List.class, "MyOtherList"); assertNull("Plugin 2 doesn't exist", plugin); // Test for one plugin that is "selfnamed" // The DCInputAuthority plugin enabled in test local.cfg reads all <form-value-pairs> in input-forms.xml // and defines a self named plugin for each. So, we SHOULD have a "common_types" plugin. plugin = pluginService.getNamedPlugin(org.dspace.content.authority.ChoiceAuthority.class, "common_types"); assertNotNull("Plugin 3 exists", plugin); assertTrue("Plugin 3 is ChoiceAuthority", plugin instanceof org.dspace.content.authority.ChoiceAuthority); assertTrue("Plugin 3 is DCInputAuthority", plugin instanceof org.dspace.content.authority.DCInputAuthority); // NOTE: Additional "selfnamed" plugins are tested in DSpaceControlledVocabularyTest } /** * Test of hasNamedPlugin() method */ @Test public void testHasNamedPlugin() { // Assert there is a plugin named "MyLinkedList" assertTrue(pluginService.hasNamedPlugin(java.util.List.class, "MyLinkedList")); // Assert there is NOT a plugin named "MyList" assertFalse(pluginService.hasNamedPlugin(java.util.List.class, "MyList")); // Assert existence of a self named plugin assertTrue(pluginService.hasNamedPlugin(org.dspace.content.authority.ChoiceAuthority.class, "common_types")); } /** * Test of getSinglePlugin() method */ @Test public void testGetSinglePlugin() { // There should be a SINGLE Map plugin (unnamed) Object plugin = pluginService.getSinglePlugin(java.util.Map.class); assertNotNull("Plugin exists", plugin); assertTrue("Plugin is Map", plugin instanceof java.util.Map); assertTrue("Plugin is HashMap", plugin instanceof java.util.HashMap); } /** * Test of getSinglePlugin() method */ @Test public void testGetPluginSequence() { // There should be a sequence of Collection plugins Object[] plugins = pluginService.getPluginSequence(java.util.Collection.class); // There should be four of them assertEquals("Plugin count", 4, plugins.length); // They should be in an EXACT ORDER (as defined in test local.cfg) assertTrue("Plugin 0 is ArrayList", plugins[0] instanceof java.util.ArrayList); assertTrue("Plugin 1 is LinkedList", plugins[1] instanceof java.util.LinkedList); assertTrue("Plugin 2 is Stack", plugins[2] instanceof java.util.Stack); assertTrue("Plugin 3 is TreeSet", plugins[3] instanceof java.util.TreeSet); } }