示例#1
0
        public async Task <IList <Diagnostic> > GetDocumentDiagnosticsAsync(Document document = null)
        {
            document = document ?? this.Workspace.CurrentSolution.GetDocument(_hostDocument.Id);
            var analyzer = new RenameTrackingDiagnosticAnalyzer();

            return((await DiagnosticProviderTestUtilities.GetDocumentDiagnosticsAsync(analyzer, document, document.GetSyntaxRootAsync().Result.FullSpan)).ToList());
        }
        public IList <Diagnostic> GetDocumentDiagnostics(Document document = null)
        {
            document = document ?? this.Workspace.CurrentSolution.GetDocument(_hostDocument.Id);
            var analyzer = new RenameTrackingDiagnosticAnalyzer();

            return(DiagnosticProviderTestUtilities.GetDocumentDiagnostics(analyzer, document, document.GetSyntaxRootAsync(CancellationToken.None).Result.FullSpan).ToList());
        }
        public void AssertTag(string expectedFromName, string expectedToName, bool invokeAction = false, int actionIndex = 0)
        {
            WaitForAsyncOperations();

            var tags = _tagger.GetTags(new NormalizedSnapshotSpanCollection(new SnapshotSpan(_view.TextBuffer.CurrentSnapshot, new Span(0, _view.TextBuffer.CurrentSnapshot.Length))));

            // There should only ever be one tag
            Assert.Equal(1, tags.Count());

            var tag = tags.Single();

            var document = this.Workspace.CurrentSolution.GetDocument(_hostDocument.Id);

            var analyzer    = new RenameTrackingDiagnosticAnalyzer();
            var diagnostics = DiagnosticProviderTestUtilities.GetDocumentDiagnostics(analyzer, document, tag.Span.Span.ToTextSpan()).ToList();

            // There should be a single rename tracking diagnostic
            Assert.Equal(1, diagnostics.Count);
            Assert.Equal(RenameTrackingDiagnosticAnalyzer.DiagnosticId, diagnostics[0].Id);

            var actions = new List <CodeAction>();
            var context = new CodeFixContext(document, diagnostics[0], (a, d) => actions.Add(a), CancellationToken.None);

            _codeFixProvider.RegisterCodeFixesAsync(context).Wait();

            // There should be two actions
            Assert.Equal(2, actions.Count);

            Assert.Equal(string.Format("Rename '{0}' to '{1}'", expectedFromName, expectedToName), actions[0].Title);
            Assert.Equal(string.Format("Rename '{0}' to '{1}' with preview...", expectedFromName, expectedToName), actions[1].Title);

            if (invokeAction)
            {
                var operations = actions[actionIndex]
                                 .GetOperationsAsync(CancellationToken.None)
                                 .WaitAndGetResult(CancellationToken.None)
                                 .ToArray();

                Assert.Equal(1, operations.Length);

                operations[0].Apply(this.Workspace, CancellationToken.None);
            }
        }