public void ExecuteHost_InWindowsServiceContext_AssertExecutionOrder()
        {
            var consoleWriterQueue = new ConsoleWriterQueue();

            using (var waitBlock = new WaitBlock())
            {
                Execute(waitBlock, consoleWriterQueue, asWindowsService: true);
            }

            StringAssert.Contains("[Integration Service]: Started", consoleWriterQueue.Dequeue());
            StringAssert.Contains("WindowsService.Starting", consoleWriterQueue.Dequeue());
            StringAssert.Contains("WindowsService.Running", consoleWriterQueue.Dequeue());
            StringAssert.Contains("Host.Handling", consoleWriterQueue.Dequeue());
            StringAssert.Contains("WindowsService.Stopping", consoleWriterQueue.Dequeue());
            StringAssert.Contains("[Integration Service]: Shutdown requested.", consoleWriterQueue.Dequeue());
            StringAssert.Contains("Host.Handled", consoleWriterQueue.Dequeue());
            StringAssert.Contains("WindowsService.Stopped", consoleWriterQueue.Dequeue());
            StringAssert.Contains("[Integration Service]: Shutting down", consoleWriterQueue.Dequeue());
            StringAssert.Contains("[Integration Service]: Shut down.", consoleWriterQueue.Dequeue());

            Assert.That(consoleWriterQueue.Count, Is.Zero);
        }
        public void ExecuteHost_NotInWindowsServiceContext_AssertExecutionOrder()
        {
            var consoleWriterQueue = new ConsoleWriterQueue();

            using (var waitBlock = new WaitBlock())
            {
                Execute(waitBlock, consoleWriterQueue);
            }

            StringAssert.Contains("[Integration Service]: Started", consoleWriterQueue.Dequeue());
            StringAssert.Contains("NotWindowsService", consoleWriterQueue.Dequeue());
            StringAssert.Contains("Host.Handling", consoleWriterQueue.Dequeue());
            StringAssert.Contains("Host.ManuallyRelease", consoleWriterQueue.Dequeue());
            StringAssert.Contains("Shutdown.Waiting", consoleWriterQueue.Dequeue());
            StringAssert.Contains("Shutdown.Waited", consoleWriterQueue.Dequeue());
            StringAssert.Contains("[Integration Service]: Shutdown requested.", consoleWriterQueue.Dequeue());
            StringAssert.Contains("Host.Handled", consoleWriterQueue.Dequeue());
            StringAssert.Contains("[Integration Service]: Shutting down", consoleWriterQueue.Dequeue());
            StringAssert.Contains("[Integration Service]: Shut down.", consoleWriterQueue.Dequeue());

            Assert.That(consoleWriterQueue.Count, Is.Zero);
        }