public void Should_Commit_IPlugin() { IExecutionManager manager = new ExecutionManager( new PluginManager() ); IAllocationDefinition definition = new AllocationDefinition( 2 ); IExecutionSlot slot = new ExecutionSlot(definition); definition.Add( DTO.NewPluginInfoTestPlugin ); manager.PluginManager.Install( definition ); manager.Add( slot ); IPlugin completedPlugin = null; TestPlugin testPlugin = new TestPlugin(100); manager.CommitCompleted += delegate(object sender, ObjectEventArgs<IPlugin> eventArgs) { completedPlugin = eventArgs.EventObject; }; manager.Commit( testPlugin ); Assert.AreEqual( slot, manager[ definition ] ); Assert.AreEqual( 1, manager[ definition ].UsedSlots ); Timing.WaitWhile(() => completedPlugin == null, 1000); Assert.AreEqual( testPlugin, completedPlugin ); Assert.AreEqual( 0, manager[ definition ].UsedSlots ); Assert.AreEqual( PluginStatus.Committed, testPlugin.Status ); }