public void Runner_CallingDispose_SourceChangedDoesntTriggerDrawView()
        {
            var sourceMonitor = new Mock<ISourceMonitor>(MockBehavior.Loose);
            var viewController = new Mock<IViewController>(MockBehavior.Loose);
            var solution = "solution.sln";
            var activeDocument = String.Empty;
            var cursorPosition = 0;
            var content = "content";
            var viewGenerator = new Mock<IViewGenerator>(MockBehavior.Loose);
            viewGenerator
                .Setup(generator => generator.GenerateViewAsync(solution, activeDocument, cursorPosition))
                .Returns(Task.FromResult(content));
            var runner = new Runner(sourceMonitor.Object, viewController.Object, viewGenerator.Object);

            runner.Dispose();

            sourceMonitor.Raise(mock => mock.SourceChanged += null, new SourceMonitorArgs(solution, activeDocument, cursorPosition));
            viewController.Verify(mock => mock.Draw(content), Times.Never());
        }
        public void Runner_CallingDisposeTwice_DoesntFail()
        {
            var sourceMonitor = new Mock<ISourceMonitor>();
            var viewController = new Mock<IViewController>();
            var viewGenerator = new Mock<IViewGenerator>(MockBehavior.Loose);
            var runner = new Runner(sourceMonitor.Object, viewController.Object, viewGenerator.Object);

            runner.Dispose();
            runner.Dispose();
        }