public void AddPluginSourceCanOnlyAddOnce() { PluginRepository tested = new PluginRepository(); MockPluginSource pluginSource = new MockPluginSource(); tested.AddPluginSource(pluginSource); DoAssert.Throws<ArgumentException>(() => tested.AddPluginSource(pluginSource) ); }
public void AddPluginSourceShouldListenToAllEventsOnPluginSourceAfterAdd() { PluginRepository tested = new PluginRepository(); MockPluginSource pluginSource = new MockPluginSource(); tested.AddPluginSource(pluginSource); Assert.AreEqual(pluginSource.NumPluginAddedListeners, 1); Assert.AreEqual(pluginSource.NumPluginRemovedListeners, 1); }
public void ForgetLostPlugins() { PluginRepository tested = new PluginRepository(); MockPluginSource pluginSource = new MockPluginSource(); tested.AddPluginSource(pluginSource); PluginDescriptor thePlugin = new PluginDescriptor() { QualifiedName = typeof(UnitTest_PluginRepository) }; pluginSource.RaisePluginAdded(thePlugin); var pluginsBefore = tested.Plugins(null).ToArray(); pluginSource.RaisePluginRemoved(thePlugin); var pluginsAfter = tested.Plugins(null).ToArray(); Assert.IsTrue(pluginsAfter.Length - pluginsBefore.Length == -1); Assert.IsFalse(pluginsAfter.Contains(thePlugin)); }
public void RememberFoundPlugins() { PluginRepository tested = new PluginRepository(); MockPluginSource pluginSource = new MockPluginSource(); tested.AddPluginSource(pluginSource); var pluginsBefore = tested.Plugins(null).ToArray(); PluginDescriptor thePlugin = new PluginDescriptor() { QualifiedName = typeof(UnitTest_PluginRepository) }; pluginSource.RaisePluginAdded(thePlugin); var pluginsAfter = tested.Plugins(null).ToArray(); Assert.IsTrue(pluginsAfter.Length - pluginsBefore.Length == 1); Assert.AreSame(thePlugin, pluginsAfter.Except(pluginsBefore).First()); }
public void ShouldStopListeningToAllEventsOnPluginSourceAfterRemove() { PluginRepository tested = new PluginRepository(); MockPluginSource pluginSource = new MockPluginSource(); tested.AddPluginSource(pluginSource); tested.RemovePluginSource(pluginSource); Assert.AreEqual(pluginSource.NumPluginAddedListeners, 0); Assert.AreEqual(pluginSource.NumPluginRemovedListeners, 0); }
public void ShouldOnlyReportPluginsThatMatchesFilter() { PluginRepository tested = new PluginRepository(); MockPluginSource pluginSource = new MockPluginSource(); tested.AddPluginSource(pluginSource); PluginDescriptor plugin1 = new PluginDescriptor() { QualifiedName = typeof(MockPlugin1), Name = "plugin1" }; PluginDescriptor plugin2 = new PluginDescriptor() { QualifiedName = typeof(MockPlugin2), Name = "plugin2" }; pluginSource.RaisePluginAdded(plugin1); pluginSource.RaisePluginAdded(plugin2); PluginFilter filter = PluginFilter.Create.IsNamed("plugin1"); var foundPlugins = tested.Plugins(filter); Assert.AreEqual(1, foundPlugins.Count()); Assert.AreSame(plugin1, foundPlugins.First()); }
public void RemovePluginSourceMustBeAddedToBeRemoved() { PluginRepository tested = new PluginRepository(); MockPluginSource pluginSource = new MockPluginSource(); DoAssert.Throws<ArgumentException>(() => tested.RemovePluginSource(pluginSource) ); }