コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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();
                }
            }
        }
コード例 #3
0
        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();
                    }
                }
            }
        }
コード例 #4
0
        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);
                }
            }
        }
コード例 #5
0
        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();
                    }
                }
            }
        }
コード例 #6
0
        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();
                }
            }
        }