public async Task CanDoTagging(string testFile) { // Arrange. var sourceCode = File.ReadAllText(testFile); var textBuffer = TextBufferUtility.CreateTextBuffer(Container, sourceCode); var backgroundParser = new BackgroundParser(textBuffer); var snapshot = textBuffer.CurrentSnapshot; var syntaxTree = snapshot.GetSyntaxTree(CancellationToken.None); var snapshotSyntaxTree = new SnapshotSyntaxTree(snapshot, syntaxTree); var tagger = CreateTagger(backgroundParser, snapshot); // Act. await tagger.InvalidateTags(snapshotSyntaxTree, CancellationToken.None); var tagSpans = tagger.GetTags(new NormalizedSnapshotSpanCollection(new[] { new SnapshotSpan(snapshot, 0, snapshot.Length) })).ToList(); // Assert. if (MustCreateTagSpans) { Assert.That(tagSpans.Any()); } backgroundParser.Dispose(); }
protected virtual void Dispose(bool disposing) { if (disposing) { _parser.Dispose(); } }
internal async Task <List <ITagSpan <TTag> > > GetTagSpans <TTagger, TTag>(string sourceCode, CreateTagger <TTagger, TTag> createTagger) where TTagger : AsyncTagger <TTag> where TTag : ITag { var textBuffer = TextBufferUtility.CreateTextBuffer(Container, sourceCode); var backgroundParser = new BackgroundParser(textBuffer); var snapshot = textBuffer.CurrentSnapshot; var tagger = createTagger(backgroundParser, textBuffer); await tagger.InvalidateTags(snapshot, CancellationToken.None); var tags = tagger.GetTags(new NormalizedSnapshotSpanCollection(new[] { new SnapshotSpan(snapshot, 0, snapshot.Length) })).ToList(); backgroundParser.Dispose(); return(tags); }