コード例 #1
0
        public async Task MappedLocationFileNameProperlyRootedInMiscellaneousWorkspace()
        {
            var folderPath     = Directory.GetCurrentDirectory();
            var relativeFile   = ".\\Index.cshtml.cs";
            var mappedFilePath = Path.GetFullPath(Path.Combine(folderPath, relativeFile));

            var testFiles = new[]
            {
                new TestFile("Constants.cs", @"
                    public static class Constants
                    {
                        public const string My$$Text = ""Hello World"";
                    }"),
                new TestFile("Index.cshtml_virtual.cs", $@"
                    #line 1 ""{relativeFile}""
                    Constants.MyText
                    #line default
                    #line hidden")
            };

            var miscFile = new TestFile(mappedFilePath, "// Constants.MyText;");

            SharedOmniSharpTestHost.AddFilesToWorkspace(folderPath, testFiles);
            SharedOmniSharpTestHost.Workspace.TryAddMiscellaneousDocument(
                miscFile.FileName,
                TextLoader.From(TextAndVersion.Create(miscFile.Content.Text, VersionStamp.Create())),
                LanguageNames.CSharp);

            var testFile = testFiles.Single(tf => tf.Content.HasPosition);
            var usages   = await FindUsagesAsync(testFile, onlyThisFile : false);

            Assert.DoesNotContain(usages.QuickFixes, location => location.FileName.EndsWith("Index.cshtml_virtual.cs"));
            Assert.DoesNotContain(usages.QuickFixes, location => location.FileName.Equals(relativeFile));

            var quickFix = Assert.Single(usages.QuickFixes, location => location.FileName.Equals(mappedFilePath));

            Assert.Empty(quickFix.Projects);
        }
コード例 #2
0
        protected async Task <IEnumerable <AutoCompleteResponse> > FindCompletionsAsync(string filename, string source, bool wantSnippet = false, string triggerChar = null)
        {
            var testFile = new TestFile(filename, source);

            SharedOmniSharpTestHost.AddFilesToWorkspace(testFile);
            var point = testFile.Content.GetPointFromPosition();

            var request = new AutoCompleteRequest
            {
                Line             = point.Line,
                Column           = point.Offset,
                FileName         = testFile.FileName,
                Buffer           = testFile.Content.Code,
                WordToComplete   = GetPartialWord(testFile.Content),
                WantMethodHeader = true,
                WantSnippet      = wantSnippet,
                WantReturnType   = true,
                TriggerCharacter = triggerChar
            };

            var requestHandler = GetRequestHandler(SharedOmniSharpTestHost);

            return(await requestHandler.Handle(request));
        }
コード例 #3
0
        private async Task <(FormatRangeResponse, TestFile)> GetResponse(string text, string character, string fileName)
        {
            // Ensure system newlines are used
            var options = SharedOmniSharpTestHost.Workspace.Options.WithChangedOption(FormattingOptions.NewLine, LanguageNames.CSharp, System.Environment.NewLine);

            SharedOmniSharpTestHost.Workspace.TryApplyChanges(SharedOmniSharpTestHost.Workspace.CurrentSolution.WithOptions(options));

            var file = new TestFile(fileName, text);

            SharedOmniSharpTestHost.AddFilesToWorkspace(file);
            var point = file.Content.GetPointFromPosition();

            var request = new FormatAfterKeystrokeRequest
            {
                Line      = point.Line,
                Column    = point.Offset,
                FileName  = fileName,
                Character = character,
            };

            var requestHandler = SharedOmniSharpTestHost.GetRequestHandler <FormatAfterKeystrokeService>(OmniSharpEndpoints.FormatAfterKeystroke);

            return(await requestHandler.Handle(request), file);
        }