public async Task TestGetTagsOnBufferTagger() { // don't crash using (var workspace = await TestWorkspace.CreateCSharpAsync("class C { C c; }")) { var document = workspace.Documents.First(); var waiter = new Waiter(); var provider = new SemanticClassificationBufferTaggerProvider( workspace.ExportProvider.GetExportedValue <IForegroundNotificationService>(), workspace.ExportProvider.GetExportedValue <ISemanticChangeNotificationService>(), workspace.ExportProvider.GetExportedValue <ClassificationTypeMap>(), SpecializedCollections.SingletonEnumerable( new Lazy <IAsynchronousOperationListener, FeatureMetadata>( () => waiter, new FeatureMetadata(new Dictionary <string, object>() { { "FeatureName", FeatureAttribute.Classification } })))); var tagger = provider.CreateTagger <IClassificationTag>(document.TextBuffer); using (var disposable = (IDisposable)tagger) { await waiter.CreateWaitTask(); var tags = tagger.GetTags(document.TextBuffer.CurrentSnapshot.GetSnapshotSpanCollection()); var allTags = tagger.GetAllTags(document.TextBuffer.CurrentSnapshot.GetSnapshotSpanCollection(), CancellationToken.None); Assert.Empty(tags); Assert.NotEmpty(allTags); Assert.Equal(allTags.Count(), 1); } } }
public void TestCreateWithBufferNotInWorkspace() { // don't crash using (var workspace = CSharpWorkspaceFactory.CreateWorkspaceFromFile("")) { var document = workspace.CurrentSolution.GetDocument(workspace.Documents.First().Id); var contentTypeService = document.GetLanguageService <IContentTypeLanguageService>(); var contentType = contentTypeService.GetDefaultContentType(); var extraBuffer = workspace.ExportProvider.GetExportedValue <ITextBufferFactoryService>().CreateTextBuffer("", contentType); var waiter = new Waiter(); var provider = new SemanticClassificationTaggerProvider( workspace.ExportProvider.GetExportedValue <IForegroundNotificationService>(), workspace.ExportProvider.GetExportedValue <ISemanticChangeNotificationService>(), workspace.ExportProvider.GetExportedValue <ClassificationTypeMap>(), SpecializedCollections.SingletonEnumerable( new Lazy <IAsynchronousOperationListener, FeatureMetadata>( () => waiter, new FeatureMetadata(new Dictionary <string, object>() { { "FeatureName", FeatureAttribute.Classification } })))); using (var tagger = (AsynchronousTagger <IClassificationTag>)provider.CreateTagger <IClassificationTag>(extraBuffer)) { using (var edit = extraBuffer.CreateEdit()) { edit.Insert(0, "class A { }"); edit.Apply(); } waiter.CreateWaitTask().PumpingWait(); } } }
public async Task TestCreateWithBufferNotInWorkspace() { // don't crash using (var workspace = await TestWorkspace.CreateCSharpAsync("")) { var document = workspace.CurrentSolution.GetDocument(workspace.Documents.First().Id); var contentTypeService = document.GetLanguageService <IContentTypeLanguageService>(); var contentType = contentTypeService.GetDefaultContentType(); var extraBuffer = workspace.ExportProvider.GetExportedValue <ITextBufferFactoryService>().CreateTextBuffer("", contentType); WpfTestCase.RequireWpfFact("Creates an IWpfTextView explicitly with an unrelated buffer"); using (var disposableView = workspace.ExportProvider.GetExportedValue <ITextEditorFactoryService>().CreateDisposableTextView(extraBuffer)) { var waiter = new Waiter(); var provider = new SemanticClassificationViewTaggerProvider( workspace.ExportProvider.GetExportedValue <IForegroundNotificationService>(), workspace.ExportProvider.GetExportedValue <ISemanticChangeNotificationService>(), workspace.ExportProvider.GetExportedValue <ClassificationTypeMap>(), SpecializedCollections.SingletonEnumerable( new Lazy <IAsynchronousOperationListener, FeatureMetadata>( () => waiter, new FeatureMetadata(new Dictionary <string, object>() { { "FeatureName", FeatureAttribute.Classification } })))); using (var tagger = (IDisposable)provider.CreateTagger <IClassificationTag>(disposableView.TextView, extraBuffer)) { using (var edit = extraBuffer.CreateEdit()) { edit.Insert(0, "class A { }"); edit.Apply(); } await waiter.CreateWaitTask(); } } } }
public async Task TestGetTagsOnBufferTagger() { // don't crash using (var workspace = await TestWorkspace.CreateCSharpAsync("class C { C c; }")) { var document = workspace.Documents.First(); var waiter = new Waiter(); var provider = new SemanticClassificationBufferTaggerProvider( workspace.ExportProvider.GetExportedValue<IForegroundNotificationService>(), workspace.ExportProvider.GetExportedValue<ISemanticChangeNotificationService>(), workspace.ExportProvider.GetExportedValue<ClassificationTypeMap>(), SpecializedCollections.SingletonEnumerable( new Lazy<IAsynchronousOperationListener, FeatureMetadata>( () => waiter, new FeatureMetadata(new Dictionary<string, object>() { { "FeatureName", FeatureAttribute.Classification } })))); var tagger = provider.CreateTagger<IClassificationTag>(document.TextBuffer); using (var disposable = (IDisposable)tagger) { await waiter.CreateWaitTask(); var tags = tagger.GetTags(document.TextBuffer.CurrentSnapshot.GetSnapshotSpanCollection()); var allTags = tagger.GetAllTags(document.TextBuffer.CurrentSnapshot.GetSnapshotSpanCollection(), CancellationToken.None); Assert.Empty(tags); Assert.NotEmpty(allTags); Assert.Equal(allTags.Count(), 1); } } }
public async Task TestCreateWithBufferNotInWorkspace() { // don't crash using (var workspace = await TestWorkspace.CreateCSharpAsync("")) { var document = workspace.CurrentSolution.GetDocument(workspace.Documents.First().Id); var contentTypeService = document.GetLanguageService<IContentTypeLanguageService>(); var contentType = contentTypeService.GetDefaultContentType(); var extraBuffer = workspace.ExportProvider.GetExportedValue<ITextBufferFactoryService>().CreateTextBuffer("", contentType); WpfTestCase.RequireWpfFact("Creates an IWpfTextView explicitly with an unrelated buffer"); using (var disposableView = workspace.ExportProvider.GetExportedValue<ITextEditorFactoryService>().CreateDisposableTextView(extraBuffer)) { var waiter = new Waiter(); var provider = new SemanticClassificationViewTaggerProvider( workspace.ExportProvider.GetExportedValue<IForegroundNotificationService>(), workspace.ExportProvider.GetExportedValue<ISemanticChangeNotificationService>(), workspace.ExportProvider.GetExportedValue<ClassificationTypeMap>(), SpecializedCollections.SingletonEnumerable( new Lazy<IAsynchronousOperationListener, FeatureMetadata>( () => waiter, new FeatureMetadata(new Dictionary<string, object>() { { "FeatureName", FeatureAttribute.Classification } })))); using (var tagger = (IDisposable)provider.CreateTagger<IClassificationTag>(disposableView.TextView, extraBuffer)) { using (var edit = extraBuffer.CreateEdit()) { edit.Insert(0, "class A { }"); edit.Apply(); } await waiter.CreateWaitTask(); } } } }
public void TestCreateWithBufferNotInWorkspace() { // don't crash using (var workspace = CSharpWorkspaceFactory.CreateWorkspaceFromFile("")) { var document = workspace.CurrentSolution.GetDocument(workspace.Documents.First().Id); var contentTypeService = document.GetLanguageService<IContentTypeLanguageService>(); var contentType = contentTypeService.GetDefaultContentType(); var extraBuffer = workspace.ExportProvider.GetExportedValue<ITextBufferFactoryService>().CreateTextBuffer("", contentType); var waiter = new Waiter(); var provider = new SemanticClassificationTaggerProvider( workspace.ExportProvider.GetExportedValue<IForegroundNotificationService>(), workspace.ExportProvider.GetExportedValue<ISemanticChangeNotificationService>(), workspace.ExportProvider.GetExportedValue<ClassificationTypeMap>(), SpecializedCollections.SingletonEnumerable( new Lazy<IAsynchronousOperationListener, FeatureMetadata>( () => waiter, new FeatureMetadata(new Dictionary<string, object>() { { "FeatureName", FeatureAttribute.Classification } })))); using (var tagger = (IDisposable)provider.CreateTagger<IClassificationTag>(extraBuffer)) { using (var edit = extraBuffer.CreateEdit()) { edit.Insert(0, "class A { }"); edit.Apply(); } waiter.CreateWaitTask().PumpingWait(); } } }