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 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 InvokeWithIdAndContextFullyFunctional()
        {
            var commands = new Mock <ICommandContainer>();
            {
                commands.Setup(c => c.Invoke(It.IsAny <CommandId>(), It.IsAny <ICommandContext>()))
                .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"), new Mock <ICommandContext>().Object);
            commands.Verify(c => c.Invoke(It.IsAny <CommandId>(), It.IsAny <ICommandContext>()), Times.Exactly(1));
        }
        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 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);
        }
        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);
        }
        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));
        }
Exemplo n.º 10
0
        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);
        }