Index: trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java	(revision 8938)
+++ trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java	(revision 8938)
@@ -0,0 +1,74 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
+
+/**
+ * Unit tests of {@link PluginHandler} class.
+ */
+public class PluginHandlerTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init(true);
+    }
+
+    /**
+     * Test that available plugins rules can be loaded.
+     */
+    @Test
+    public void testValidityOfAvailablePlugins() {
+        // Download complete list of plugins
+        ReadRemotePluginInformationTask pluginInfoDownloadTask = new ReadRemotePluginInformationTask(
+                Main.pref.getOnlinePluginSites());
+        pluginInfoDownloadTask.run();
+        List<PluginInformation> plugins = pluginInfoDownloadTask.getAvailablePlugins();
+        System.out.println("Original plugin list contains " + plugins.size() + " plugins");
+        assertFalse(plugins.isEmpty());
+        PluginInformation info = plugins.get(0);
+        assertFalse(info.getName().isEmpty());
+        assertFalse(info.getClass().getName().isEmpty());
+
+        // Filter deprecated and unmaintained ones
+        Set<String> deprecatedPlugins = PluginHandler.getDeprecatedAndUnmaintainedPlugins();
+        for (Iterator<PluginInformation> it = plugins.iterator(); it.hasNext();) {
+            PluginInformation pi = it.next();
+            if (deprecatedPlugins.contains(pi.name)) {
+                it.remove();
+            }
+        }
+        System.out.println("Filtered plugin list contains " + plugins.size() + " plugins");
+
+        // Update the locally installed plugins
+        PluginDownloadTask pluginDownloadTask = new PluginDownloadTask(NullProgressMonitor.INSTANCE, plugins, null);
+        pluginDownloadTask.run();
+        assertTrue(pluginDownloadTask.getFailedPlugins().toString(), pluginDownloadTask.getFailedPlugins().isEmpty());
+        assertEquals(plugins.size(), pluginDownloadTask.getDownloadedPlugins().size());
+
+        // Update Plugin info for downloaded plugins
+        PluginHandler.refreshLocalUpdatedPluginInfo(pluginDownloadTask.getDownloadedPlugins());
+
+        // Load early plugins
+        PluginHandler.loadEarlyPlugins(null, plugins, null);
+
+        // Load late plugins
+        PluginHandler.loadLatePlugins(null, plugins, null);
+
+        assertTrue(PluginHandler.pluginLoadingExceptions.toString(), PluginHandler.pluginLoadingExceptions.isEmpty());
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTaskTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTaskTest.java	(revision 8937)
+++ 	(revision )
@@ -1,40 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.plugins;
-
-import static org.junit.Assert.assertFalse;
-
-import java.util.List;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.Main;
-
-/**
- * Unit tests of {@link ReadRemotePluginInformationTask} class.
- */
-public class ReadRemotePluginInformationTaskTest {
-
-    /**
-     * Setup test.
-     */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
-
-    /**
-     * Test of plugin list download.
-     */
-    @Test
-    public void testDownloadPluginList() {
-        ReadRemotePluginInformationTask pluginInfoDownloadTask = new ReadRemotePluginInformationTask(
-                Main.pref.getOnlinePluginSites());
-        pluginInfoDownloadTask.run();
-        List<PluginInformation> list = pluginInfoDownloadTask.getAvailablePlugins();
-        assertFalse(list.isEmpty());
-        PluginInformation info = list.get(0);
-        assertFalse(info.getName().isEmpty());
-        assertFalse(info.getClass().getName().isEmpty());
-    }
-}
