コード例 #1
0
        public async Task UpdateBuffer_HandlesVoidRequest()
        {
            var workspace = TestHelpers.CreateSimpleWorkspace(new Dictionary<string, string>
            {
                { "test.cs", "class C {}" }
            });

            var bufferFilter = new UpdateBufferFilter(workspace);
            var docId = workspace.CurrentSolution.GetDocumentIdsWithFilePath("test.cs").First();

            // ignore void buffers
            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(new Models.Request() { }));
            var sourceText = await workspace.CurrentSolution.GetDocument(docId).GetTextAsync();
            Assert.Equal("class C {}", sourceText.ToString());

            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(new Models.Request() { FileName = "test.cs" }));
            sourceText = await workspace.CurrentSolution.GetDocument(docId).GetTextAsync();
            Assert.Equal("class C {}", sourceText.ToString());

            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(new Models.Request() { Buffer = "// c", FileName = "some_other_file.cs" }));
            sourceText = await workspace.CurrentSolution.GetDocument(docId).GetTextAsync();
            Assert.Equal("class C {}", sourceText.ToString());

            // valid updates
            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(new Models.Request() { FileName = "test.cs", Buffer = "interface I {}" }));
            sourceText = await workspace.CurrentSolution.GetDocument(docId).GetTextAsync();
            Assert.Equal("interface I {}", sourceText.ToString());

            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(new Models.Request() { FileName = "test.cs", Buffer = "" }));
            sourceText = await workspace.CurrentSolution.GetDocument(docId).GetTextAsync();
            Assert.Equal("", sourceText.ToString());
        }
コード例 #2
0
        private async Task<RenameResponse> SendRequest(OmnisharpWorkspace workspace,
                                                       string renameTo,
                                                       string filename,
                                                       string fileContent,
                                                       bool wantsTextChanges = false,
                                                       bool applyTextChanges = true)
        {
            var lineColumn = TestHelpers.GetLineAndColumnFromDollar(fileContent);
            var controller = new OmnisharpController(workspace, new FakeOmniSharpOptions());
            var request = new RenameRequest
            {
                Line = lineColumn.Line,
                Column = lineColumn.Column,
                RenameTo = renameTo,
                FileName = filename,
                Buffer = fileContent.Replace("$", ""),
                WantsTextChanges = wantsTextChanges,
                ApplyTextChanges = applyTextChanges
            };

            var bufferFilter = new UpdateBufferFilter(workspace);
            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(request, controller));

            return await controller.Rename(request);
        }
コード例 #3
0
        public async Task UpdateBuffer_TransientDocumentsDisappearWhenProjectAddsThem()
        {
            var workspace = TestHelpers.CreateSimpleWorkspace(new Dictionary<string, string>
            {
                { "test.cs", "class C {}" }
            });
            var bufferFilter = new UpdateBufferFilter(workspace);
            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(new Models.Request() { FileName = "transient.cs", Buffer = "interface I {}" }));

            var docIds = workspace.CurrentSolution.GetDocumentIdsWithFilePath("transient.cs");
            Assert.Equal(2, docIds.Length);

            // simulate a project system adding the file for real
            var project1 = workspace.CurrentSolution.Projects.First();
            var document = DocumentInfo.Create(DocumentId.CreateNewId(project1.Id), "transient.cs",
                loader: TextLoader.From(TextAndVersion.Create(SourceText.From("enum E{}"), VersionStamp.Create())),
                filePath: "transient.cs");
            workspace.CurrentSolution.AddDocument(document);

            docIds = workspace.CurrentSolution.GetDocumentIdsWithFilePath("transient.cs");
            Assert.Equal(2, docIds.Length);

            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(new Models.Request() { FileName = "transient.cs", Buffer = "enum E {}" }));
            var sourceText = await workspace.CurrentSolution.GetDocument(docIds.First()).GetTextAsync();
            Assert.Equal("enum E {}", sourceText.ToString());
            sourceText = await workspace.CurrentSolution.GetDocument(docIds.Last()).GetTextAsync();
            Assert.Equal("enum E {}", sourceText.ToString());
        }
コード例 #4
0
 private async Task<QuickFixResponse> FindRegions(string source)
 {
     var workspace = TestHelpers.CreateSimpleWorkspace(source);
     var controller = new OmnisharpController(workspace, null);
     var request = CreateRequest(source);
     var bufferFilter = new UpdateBufferFilter(workspace);
     bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(request, controller));
     return await controller.GoToRegion(request);
 }
コード例 #5
0
 private async Task<IEnumerable<ISymbol>> FindImplementations(string source)
 {
     var workspace = TestHelpers.CreateSimpleWorkspace(source);
     var controller = new OmnisharpController(workspace, new FakeOmniSharpOptions());
     var request = CreateRequest(source);
     var bufferFilter = new UpdateBufferFilter(workspace);
     bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(request, controller));
     var implementations = await controller.FindImplementations(request);
     return await TestHelpers.SymbolsFromQuickFixes(workspace, implementations.QuickFixes);
 }
コード例 #6
0
        public async Task UpdateBuffer_AddsNewDocumentsIfNeeded()
        {
            var workspace = TestHelpers.CreateSimpleWorkspace(new Dictionary<string, string>
            {
                { "test.cs", "class C {}" }
            });

            var bufferFilter = new UpdateBufferFilter(workspace);
            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(new Models.Request() { FileName = "test2.cs", Buffer = "interface I {}" }));

            Assert.Equal(2, workspace.CurrentSolution.GetDocumentIdsWithFilePath("test2.cs").Length);
            var docId = workspace.CurrentSolution.GetDocumentIdsWithFilePath("test2.cs").FirstOrDefault();
            Assert.NotNull(docId);
            var sourceText = await workspace.CurrentSolution.GetDocument(docId).GetTextAsync();
            Assert.Equal("interface I {}", sourceText.ToString());
            
            docId = workspace.CurrentSolution.GetDocumentIdsWithFilePath("test.cs").FirstOrDefault();
            Assert.NotNull(docId);
            sourceText = await workspace.CurrentSolution.GetDocument(docId).GetTextAsync();
            Assert.Equal("class C {}", sourceText.ToString());
        }
コード例 #7
0
 private async Task<QuickFixResponse> FindUsages(Dictionary<string, string> sources, string currentFile, bool onlyThisFile, bool excludeDefinition = false)
 {
     var workspace = TestHelpers.CreateSimpleWorkspace(sources);
     var controller = new OmnisharpController(workspace, null);
     var request = CreateRequest(sources[currentFile], currentFile, excludeDefinition);
     request.OnlyThisFile = onlyThisFile;
     var bufferFilter = new UpdateBufferFilter(workspace);
     bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(request, controller));
     return await controller.FindUsages(request);
 }
コード例 #8
0
        private async Task<string> GetTestCommandArgumentsAsync(string source, TestCommandType testType = TestCommandType.Single)
        {
            var workspace = TestHelpers.CreateSimpleWorkspace(source);
            var context = new DnxContext();
            var projectName = "project.json";
            var projectCounter = 1;

            context.ProjectContextMapping.Add(projectName, projectCounter);
            context.Projects.Add(projectCounter, new Project
            {
                Path = "project.json",
                Commands = { { "test", "Xunit.KRunner" } }
            });

            var testCommandProviders = new[] { new DnxTestCommandProvider(context, new FakeEnvironment(), new FakeLoggerFactory(), new NullEventEmitter(), new FakeOmniSharpOptions()) };
            var controller = new TestCommandController(workspace, testCommandProviders);
            var lineColumn = TestHelpers.GetLineAndColumnFromDollar(source);

            var request = new TestCommandRequest
            {
                Line = lineColumn.Line,
                Column = lineColumn.Column,
                FileName = "dummy.cs",
                Buffer = source.Replace("$", ""),
                Type = testType
            };

            var bufferFilter = new UpdateBufferFilter(workspace);
            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(request, controller));
            var testCommand = await controller.GetTestCommand(request);
            return testCommand.TestCommand;
        }