Ejemplo n.º 1
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();
                    }
                }
            }
        }
Ejemplo n.º 2
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();
                    }
                }
            }
        }