public void ConnectTo() { var commands = new Mock<ICommandContainer>(); var notificationNames = new MockNotificationNameConstants(); var systemDiagnostics = new SystemDiagnostics((p, s) => { }, null); var builder = new ContainerBuilder(); { builder.Register(c => commands.Object).As<ICommandContainer>(); builder.Register(c => notificationNames).As<INotificationNameConstants>(); builder.Register(c => systemDiagnostics).As<SystemDiagnostics>(); } Action<IContainer> onStartService = c => { }; var service = new UserInterfaceService( builder.Build(), onStartService, systemDiagnostics); Assert.IsFalse(service.IsConnectedToAllDependencies); var proxy = new CoreProxy(new Mock<IKernel>().Object, systemDiagnostics); service.ConnectTo(proxy); ITimeline timeline = new Timeline(BuildStorage); var proxyLayer = new Mock<IProxyCompositionLayer>(); var projects = new ProjectService( () => timeline, d => new DatasetStorageProxy( d, new GroupSelector( new Mock<IConnectGroups>().Object, proxyLayer.Object), proxyLayer.Object), new Mock<IHelpDistributingDatasets>().Object, new Mock<ICollectNotifications>().Object, systemDiagnostics, new Mock<IBuildProjects>().Object); service.ConnectTo(projects); Assert.IsTrue(service.IsConnectedToAllDependencies); }
/// <summary> /// Provides one of the services on which the current service depends. /// </summary> /// <param name="dependency">The dependency service.</param> public override void ConnectTo(KernelService dependency) { var core = dependency as CoreProxy; if (core != null) { m_Core = core; m_Core.OnStartupComplete += OnStartupComplete; } var projects = dependency as ProjectService; if (projects != null) { m_Projects = projects; } }
public void StopWithMultipleNotifications() { var commands = new Mock<ICommandContainer>(); var notificationNames = new MockNotificationNameConstants(); var systemDiagnostics = new SystemDiagnostics((p, s) => { }, null); var builder = new ContainerBuilder(); { builder.Register(c => commands.Object).As<ICommandContainer>(); builder.Register(c => notificationNames).As<INotificationNameConstants>(); builder.Register(c => systemDiagnostics).As<SystemDiagnostics>(); } Action<IContainer> onStartService = c => { }; var service = new UserInterfaceService( builder.Build(), onStartService, systemDiagnostics); bool wasFirstInvoked = false; service.RegisterNotification(notificationNames.SystemShuttingDown, obj => { wasFirstInvoked = true; }); bool wasSecondInvoked = false; service.RegisterNotification(notificationNames.SystemShuttingDown, obj => { wasSecondInvoked = true; }); var proxy = new CoreProxy(new Mock<IKernel>().Object, systemDiagnostics); service.ConnectTo(proxy); ITimeline timeline = new Timeline(BuildStorage); var proxyLayer = new Mock<IProxyCompositionLayer>(); var projects = new ProjectService( () => timeline, d => new DatasetStorageProxy( d, new GroupSelector( new Mock<IConnectGroups>().Object, proxyLayer.Object), proxyLayer.Object), new Mock<IHelpDistributingDatasets>().Object, new Mock<ICollectNotifications>().Object, systemDiagnostics, new Mock<IBuildProjects>().Object); service.ConnectTo(projects); service.Start(); Assert.AreEqual(StartupState.Started, service.StartupState); service.Stop(); Assert.AreEqual(StartupState.Stopped, service.StartupState); Assert.IsTrue(wasFirstInvoked); Assert.IsTrue(wasSecondInvoked); }
public void StopWithMissingAction() { var commands = new Mock<ICommandContainer>(); var notificationNames = new MockNotificationNameConstants(); var systemDiagnostics = new SystemDiagnostics((p, s) => { }, null); var builder = new ContainerBuilder(); { builder.Register(c => commands.Object).As<ICommandContainer>(); builder.Register(c => notificationNames).As<INotificationNameConstants>(); builder.Register(c => systemDiagnostics).As<SystemDiagnostics>(); } Action<IContainer> onStartService = c => { }; var service = new UserInterfaceService( builder.Build(), onStartService, systemDiagnostics); var proxy = new CoreProxy(new Mock<IKernel>().Object, systemDiagnostics); service.ConnectTo(proxy); ITimeline timeline = new Timeline(BuildStorage); var proxyLayer = new Mock<IProxyCompositionLayer>(); var projects = new ProjectService( () => timeline, d => new DatasetStorageProxy( d, new GroupSelector( new Mock<IConnectGroups>().Object, proxyLayer.Object), proxyLayer.Object), new Mock<IHelpDistributingDatasets>().Object, new Mock<ICollectNotifications>().Object, systemDiagnostics, new Mock<IBuildProjects>().Object); service.ConnectTo(projects); service.Start(); Assert.AreEqual(StartupState.Started, service.StartupState); Assert.Throws<MissingNotificationActionException>(service.Stop); }
public void InvokeWithIdFullyFunctional() { var commands = new Mock<ICommandContainer>(); { commands.Setup(c => c.Invoke(It.IsAny<CommandId>())) .Verifiable(); } var notificationNames = new MockNotificationNameConstants(); var systemDiagnostics = new SystemDiagnostics((p, s) => { }, null); var builder = new ContainerBuilder(); { builder.Register(c => commands.Object).As<ICommandContainer>(); builder.Register(c => notificationNames).As<INotificationNameConstants>(); builder.Register(c => systemDiagnostics).As<SystemDiagnostics>(); } Action<IContainer> onStartService = c => { }; var service = new UserInterfaceService( builder.Build(), onStartService, systemDiagnostics); var proxy = new CoreProxy(new Mock<IKernel>().Object, systemDiagnostics); service.ConnectTo(proxy); ITimeline timeline = new Timeline(BuildStorage); var proxyLayer = new Mock<IProxyCompositionLayer>(); var projects = new ProjectService( () => timeline, d => new DatasetStorageProxy( d, new GroupSelector( new Mock<IConnectGroups>().Object, proxyLayer.Object), proxyLayer.Object), new Mock<IHelpDistributingDatasets>().Object, new Mock<ICollectNotifications>().Object, systemDiagnostics, new Mock<IBuildProjects>().Object); service.ConnectTo(projects); service.Start(); service.Invoke(new CommandId("bla")); commands.Verify(c => c.Invoke(It.IsAny<CommandId>()), Times.Exactly(1)); }
public void HandleApplicationStartupCompleteMessage() { var commands = new Mock<ICommandContainer>(); var notificationNames = new MockNotificationNameConstants(); var systemDiagnostics = new SystemDiagnostics((p, s) => { }, null); bool isStarted = false; Action<INotificationArguments> onApplicationStartup = obj => { isStarted = true; }; var builder = new ContainerBuilder(); { builder.Register(c => commands.Object).As<ICommandContainer>(); builder.Register(c => notificationNames).As<INotificationNameConstants>(); builder.Register(c => systemDiagnostics).As<SystemDiagnostics>(); } Action<IContainer> onStartService = c => { }; var service = new UserInterfaceService( builder.Build(), onStartService, systemDiagnostics); service.RegisterNotification(notificationNames.StartupComplete, onApplicationStartup); var proxy = new CoreProxy(new Mock<IKernel>().Object, systemDiagnostics); service.ConnectTo(proxy); ITimeline timeline = new Timeline(BuildStorage); var proxyLayer = new Mock<IProxyCompositionLayer>(); var projects = new ProjectService( () => timeline, d => new DatasetStorageProxy( d, new GroupSelector( new Mock<IConnectGroups>().Object, proxyLayer.Object), proxyLayer.Object), new Mock<IHelpDistributingDatasets>().Object, new Mock<ICollectNotifications>().Object, systemDiagnostics, new Mock<IBuildProjects>().Object); service.ConnectTo(projects); service.Start(); proxy.NotifyServicesOfStartupCompletion(); Assert.IsTrue(isStarted); }
public void CreateNewProject() { var systemDiagnostics = new SystemDiagnostics((p, s) => { }, null); ITimeline timeline = new Timeline(BuildStorage); var distributor = new Mock<IHelpDistributingDatasets>(); var project = new Mock<IProject>(); project.As<ICanClose>(); var builder = new Mock<IBuildProjects>(); { builder.Setup(b => b.Define()) .Returns(builder.Object) .Verifiable(); builder.Setup(b => b.WithTimeline(It.IsAny<ITimeline>())) .Returns(builder.Object) .Verifiable(); builder.Setup( b => b.WithDatasetDistributor( It.IsAny<Func<DatasetActivationRequest, CancellationToken, IEnumerable<DistributionPlan>>>())) .Returns(builder.Object) .Verifiable(); builder.Setup(b => b.WithDataStorageBuilder(It.IsAny<Func<DatasetOnlineInformation, DatasetStorageProxy>>())) .Returns(builder.Object) .Verifiable(); builder.Setup(b => b.WithNotifications(It.IsAny<ICollectNotifications>())) .Returns(builder.Object) .Verifiable(); builder.Setup(b => b.WithDiagnostics(It.IsAny<SystemDiagnostics>())) .Returns(builder.Object) .Verifiable(); builder.Setup(b => b.Build()) .Returns(project.Object) .Verifiable(); } var proxyLayer = new Mock<IProxyCompositionLayer>(); var service = new ProjectService( () => timeline, d => new DatasetStorageProxy( d, new GroupSelector( new Mock<IConnectGroups>().Object, proxyLayer.Object), proxyLayer.Object), distributor.Object, new Mock<ICollectNotifications>().Object, systemDiagnostics, builder.Object); service.CreateNewProject(); builder.Verify(b => b.Define(), Times.Exactly(1)); builder.Verify( b => b.WithDatasetDistributor(It.IsAny<Func<DatasetActivationRequest, CancellationToken, IEnumerable<DistributionPlan>>>()), Times.Exactly(1)); builder.Verify(b => b.Build(), Times.Exactly(1)); }
public void StopWithProject() { var systemDiagnostics = new SystemDiagnostics((p, s) => { }, null); ITimeline timeline = new Timeline(BuildStorage); var distributor = new Mock<IHelpDistributingDatasets>(); bool wasClosed = false; var project = new Mock<IProject>(); var closable = project.As<ICanClose>(); { closable.Setup(c => c.Close()) .Callback(() => { wasClosed = true; }); } var builder = new Mock<IBuildProjects>(); { builder.Setup(b => b.Define()) .Returns(builder.Object) .Verifiable(); builder.Setup(b => b.WithTimeline(It.IsAny<ITimeline>())) .Returns(builder.Object) .Verifiable(); builder.Setup( b => b.WithDatasetDistributor( It.IsAny<Func<DatasetActivationRequest, CancellationToken, IEnumerable<DistributionPlan>>>())) .Returns(builder.Object) .Verifiable(); builder.Setup(b => b.WithDataStorageBuilder(It.IsAny<Func<DatasetOnlineInformation, DatasetStorageProxy>>())) .Returns(builder.Object) .Verifiable(); builder.Setup(b => b.WithNotifications(It.IsAny<ICollectNotifications>())) .Returns(builder.Object) .Verifiable(); builder.Setup(b => b.WithDiagnostics(It.IsAny<SystemDiagnostics>())) .Returns(builder.Object) .Verifiable(); builder.Setup(b => b.Build()) .Returns(project.Object) .Verifiable(); } var proxyLayer = new Mock<IProxyCompositionLayer>(); var service = new ProjectService( () => timeline, d => new DatasetStorageProxy( d, new GroupSelector( new Mock<IConnectGroups>().Object, proxyLayer.Object), proxyLayer.Object), distributor.Object, new Mock<ICollectNotifications>().Object, systemDiagnostics, builder.Object); service.Start(); Assert.AreEqual(StartupState.Started, service.StartupState); service.CreateNewProject(); var createdProject = service.Current; Assert.IsNotNull(createdProject); service.Stop(); Assert.AreEqual(StartupState.Stopped, service.StartupState); Assert.IsTrue(wasClosed); }
public void Stop() { var systemDiagnostics = new SystemDiagnostics((p, s) => { }, null); ITimeline timeline = new Timeline(BuildStorage); var distributor = new Mock<IHelpDistributingDatasets>(); var builder = new Mock<IBuildProjects>(); var proxyLayer = new Mock<IProxyCompositionLayer>(); var service = new ProjectService( () => timeline, d => new DatasetStorageProxy( d, new GroupSelector( new Mock<IConnectGroups>().Object, proxyLayer.Object), proxyLayer.Object), distributor.Object, new Mock<ICollectNotifications>().Object, systemDiagnostics, builder.Object); service.Start(); Assert.AreEqual(StartupState.Started, service.StartupState); service.Stop(); Assert.AreEqual(StartupState.Stopped, service.StartupState); }
public void LoadProjectWithNullPersistenceInformation() { var systemDiagnostics = new SystemDiagnostics((p, s) => { }, null); ITimeline timeline = new Timeline(BuildStorage); var distributor = new Mock<IHelpDistributingDatasets>(); var builder = new Mock<IBuildProjects>(); var proxyLayer = new Mock<IProxyCompositionLayer>(); var service = new ProjectService( () => timeline, d => new DatasetStorageProxy( d, new GroupSelector( new Mock<IConnectGroups>().Object, proxyLayer.Object), proxyLayer.Object), distributor.Object, new Mock<ICollectNotifications>().Object, systemDiagnostics, builder.Object); Assert.Throws<ArgumentNullException>(() => service.LoadProject(null)); }