Beispiel #1
0
        public async Task R_SignatureParametersMatch()
        {
            using (var script = await _editorHost.StartScript(_coreShell, string.Empty, "file", RContentTypeDefinition.ContentType, _sessionProvider)) {
                await _editorHost.FunctionIndex.GetFunctionInfoAsync("lm");

                script.Type("x <- lm(");
                script.DoIdle(2000);

                ISignatureHelpSession session = script.GetSignatureSession();
                session.Should().NotBeNull();
                IParameter parameter = session.SelectedSignature.CurrentParameter;
                parameter.Should().NotBeNull();

                parameter.Name.Should().Be("formula");

                script.Type("sub");
                script.DoIdle(500);
                script.Type("{TAB}");
                script.DoIdle(1000);

                parameter = session.SelectedSignature.CurrentParameter;
                parameter.Name.Should().Be("subset");

                string actual = script.EditorText;
                actual.Should().Be("x <- lm(subset = )");

                session   = script.GetSignatureSession();
                parameter = session.SelectedSignature.CurrentParameter;
            }
        }
Beispiel #2
0
        public async Task R_ErrorTags()
        {
            using (var script = await _editorHost.StartScript(_services, RContentTypeDefinition.ContentType)) {
                // Force tagger creation
                var tagSpans = script.GetErrorTagSpans();

                script.Type("x <- {");
                script.Delete(); // two delete b/c of autoformat to { }
                script.Delete();
                script.DoIdle(500);

                tagSpans = script.GetErrorTagSpans();
                var errorTags = script.WriteErrorTags(tagSpans);
                errorTags.Should().Be("[5 - 6] } expected\r\n");

                var item = tagSpans[0].Tag as IEditorTaskListItem;
                item.Line.Should().Be(1);
                item.Column.Should().Be(6);
                item.FileName.Should().Be("filename");
                item.HelpKeyword.Should().Be("vs.r.validationerror");

                script.Type("}");
                script.DoIdle(500);

                tagSpans = script.GetErrorTagSpans();
                tagSpans.Should().BeEmpty();
            }
        }
Beispiel #3
0
        public async Task R_ProvisionalText01()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType)) {
                script.Type("{");
                script.Type("(");
                script.Type("[");
                script.Type("\"");

                string expected = "{([\"\"])}";
                string actual   = script.EditorText;

                actual.Should().Be(expected);

                REditorSettings.AutoFormat = false;

                script.Type("\"");
                script.Type("]");
                script.Type(")");
                script.Type("}");
                script.DoIdle(1000);

                expected = "{([\"\"])}";
                actual   = script.EditorText;

                actual.Should().Be(expected);
            }
        }
Beispiel #4
0
        public async Task R_SignatureParametersMatch()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType)) {
                IntelliSenseRSession.HostStartTimeout = 10000;
                using (new RHostScript(_exportProvider)) {
                    var functionIndex = PrepareFunctionIndex();
                    PackageIndexUtility.GetFunctionInfoAsync(functionIndex, "lm").Wait(3000);

                    script.Type("x <- lm(");
                    script.DoIdle(2000);

                    ISignatureHelpSession session = script.GetSignatureSession();
                    session.Should().NotBeNull();
                    IParameter parameter = session.SelectedSignature.CurrentParameter;
                    parameter.Should().NotBeNull();

                    parameter.Name.Should().Be("formula");

                    script.Type("sub");
                    script.DoIdle(500);
                    script.Type("{TAB}");
                    script.DoIdle(1000);

                    parameter = session.SelectedSignature.CurrentParameter;
                    parameter.Name.Should().Be("subset");

                    string actual = script.EditorText;
                    actual.Should().Be("x <- lm(subset = )");

                    session   = script.GetSignatureSession();
                    parameter = session.SelectedSignature.CurrentParameter;
                }
            }
        }
Beispiel #5
0
        public async Task TypeRBlock()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, MdContentTypeDefinition.ContentType)) {
                script.Type("```{r}{ENTER}{ENTER}```");
                script.MoveUp();
                script.Type("x");
                script.DoIdle(200);
                script.Type("<-");
                script.DoIdle(200);
                script.Type("funct");
                script.DoIdle(200);
                script.Type("{TAB}(){");
                script.DoIdle(200);
                script.Type("{ENTER}abbr{TAB}(");

                string expected =
                    @"```{r}
x <- function() {
    abbreviate()
}
```";
                string actual = script.EditorText;
                actual.Should().Be(expected);
            }
        }
Beispiel #6
0
        public async Task R_SignatureParametersMatch()
        {
            using (var script = await _editorHost.StartScript(_services, RContentTypeDefinition.ContentType, _sessionProvider)) {
                await _editorHost.FunctionIndex.GetPackageNameAsync("lm");

                script.Type("x <- lm(");
                script.DoIdle(2000);

                var session = script.GetSignatureSession();
                session.Should().NotBeNull();
                var parameter = session.SelectedSignature.CurrentParameter;
                parameter.Should().NotBeNull();

                parameter.Name.Should().Be("formula");

                script.Type("sub");
                script.DoIdle(500);
                script.Type("{TAB}");
                script.DoIdle(1000);

                parameter = session.SelectedSignature.CurrentParameter;
                parameter.Name.Should().Be("subset");

                var actual = script.EditorText;
                actual.Should().Be("x <- lm(subset = )");
            }
        }
        public async Task TypeRBlock()
        {
            using (var script = await _editorHost.StartScript(_services, string.Empty, "filename", MdContentTypeDefinition.ContentType, _sessionProvider)) {
                var packageName = await _editorHost.FunctionIndex.GetPackageNameAsync("abbreviate");

                packageName.Should().NotBeNull();

                script.Type("```{r}{ENTER}{ENTER}```");
                script.MoveUp();
                script.Type("x");
                script.DoIdle(200);
                script.Type("<-");
                script.DoIdle(200);
                script.Type("funct");
                script.DoIdle(200);
                script.Type("{TAB}(){");
                script.DoIdle(200);
                script.Type("{ENTER}abbr{TAB}(");

                var expected =
                    @"```{r}
x <- function() {
    abbreviate()
}
```";
                var actual = script.EditorText;
                actual.Should().Be(expected);
            }
        }
Beispiel #8
0
        public async Task R_SmartIndentTest01()
        {
            using (var script = await _editorHost.StartScript(_coreShell, string.Empty, RContentTypeDefinition.ContentType)) {
                _settings.FormatOptions.BracesOnNewLine = false;
                script.MoveRight();
                script.Type("{{ENTER}a");
                script.DoIdle(300);

                var expected = "{\r\n    a\r\n}";
                var actual   = script.EditorText;

                actual.Should().Be(expected);
            }
        }
Beispiel #9
0
        public async Task InsertRoxygenBlock()
        {
            string content =
                @"
x <- function(a,b,c) { }
";
            string expected =
                @"#' Title
#'
#' @param a
#' @param b
#' @param c
#'
#' @return
#' @export
#'
#' @examples
x <- function(a,b,c) { }
";

            using (var script = await _editorHost.StartScript(_exportProvider, content, RContentTypeDefinition.ContentType)) {
                script.Type("###");
                var actual = script.TextBuffer.CurrentSnapshot.GetText();
                actual.Should().Be(expected);
            }
        }
Beispiel #10
0
        public async Task FormatDocument()
        {
            const string content =
                @"Text
```{r echo=FALSE}
x<-1
```
Text
```{r }
x<-function(a,b) {
  
  }
```
";

            using (var script = await _editorHost.StartScript(_services, content, MdContentTypeDefinition.ContentType)) {
                script.Execute(VSConstants.VSStd2KCmdID.FORMATDOCUMENT, 50);
                var expected =
                    @"Text
```{r echo=FALSE}
x <- 1
```
Text
```{r }
x <- function(a, b) {

}
```
";;
                var actual = script.EditorText;
                actual.Should().Be(expected);
            }
        }
Beispiel #11
0
 public async Task R_FormatDocument(string original, string expected)
 {
     using (var script = await _editorHost.StartScript(_services, original, RContentTypeDefinition.ContentType)) {
         script.Execute(VSConstants.VSStd2KCmdID.FORMATDOCUMENT, 50);
         string actual = script.EditorText;
         actual.Should().Be(expected);
     }
 }
Beispiel #12
0
        public async Task RColors(string fileName)
        {
            string content = _files.LoadDestinationFile(fileName);

            using (var script = await _editorHost.StartScript(_exportProvider, content, fileName, null)) {
                script.DoIdle(500);
                var spans  = script.GetClassificationSpans();
                var actual = ClassificationWriter.WriteClassifications(spans);
                VerifyClassifications(fileName, actual);
            }
        }
Beispiel #13
0
        public async Task RColors(string fileName)
        {
            var content = _files.LoadDestinationFile(fileName);

            using (var script = await _editorHost.StartScript(_services, content, fileName, MdContentTypeDefinition.ContentType, null)) {
                script.DoIdle(500);
                var spans  = script.GetClassificationSpans();
                var actual = ClassificationWriter.WriteClassifications(spans);
                VerifyClassifications(fileName, actual);
            }
        }
        public async Task ScopeIndent()
        {
            using (var script = await _editorHost.StartScript(_services, string.Empty, MdContentTypeDefinition.ContentType)) {
                script.Type("```{r}{ENTER}{ENTER}```");
                script.MoveUp();
                script.Type("if(true){");
                script.DoIdle(200);
                script.Enter();
                script.DoIdle(200);
                script.Type("a");

                var expected =
                    @"```{r}
if (TRUE) {
    a
}
```";
                var actual = script.EditorText;
                actual.Should().Be(expected);
            }
        }
Beispiel #15
0
        public async Task R_LibrarySuggestedActions()
        {
            using (var script = await _editorHost.StartScript(_services, " library(base)", RContentTypeDefinition.ContentType)) {
                IEnumerable <SuggestedActionSet> sets = null;
                ILightBulbSession session             = null;

                var svc = _services.GetService <ISuggestedActionCategoryRegistryService>();

                script.Invoke(() => {
                    var broker = _services.GetService <ILightBulbBroker2>();
                    broker.CreateSession(svc.AllCodeFixes, script.View, svc.AllCodeFixes);
                    session = script.GetLightBulbSession();
                    session.Should().NotBeNull();
                    session.Expand();
                    session.TryGetSuggestedActionSets(out sets);
                });

                sets.Should().NotBeNull();
                sets.Should().BeEmpty();

                script.Invoke(() => session.Dismiss());
                script.DoIdle(200);

                script.MoveRight(2);
                script.DoIdle(200);

                sets = null;
                script.Invoke(() => {
                    var broker = _services.GetService <ILightBulbBroker2>();
                    broker.DismissSession(script.View);
                    broker.CreateSession(svc.Any, script.View, svc.AllCodeFixes);
                    session = script.GetLightBulbSession();
                    session.Should().NotBeNull();
                    session.Expand();
                    session.TryGetSuggestedActionSets(out sets);
                });
                script.DoIdle(3000);

                sets = null;
                script.Invoke(() => {
                    session.TryGetSuggestedActionSets(out sets);
                });

                sets.Should().NotBeNull();
                sets.Should().HaveCount(1);

                var set = sets.First();
                set.Actions.Should().HaveCount(2);
                var actions = set.Actions.ToArray();
                actions[0].Should().BeOfType(typeof(InstallPackageSuggestedAction));
                actions[1].Should().BeOfType(typeof(LoadLibrarySuggestedAction));
            }
        }
Beispiel #16
0
        public async Task R_FormatSelection01()
        {
            string content  = "\nwhile (TRUE) {\n        if(x>1) {\n   }\n}";
            string expected = "\nwhile (TRUE) {\n    if (x > 1) {\n    }\n}";

            using (var script = await _editorHost.StartScript(_coreShell, content, RContentTypeDefinition.ContentType)) {
                script.Select(20, 18);
                script.Execute(VSConstants.VSStd2KCmdID.FORMATSELECTION, 50);
                string actual = script.EditorText;

                actual.Should().Be(expected);
            }
        }
Beispiel #17
0
        public async Task R_SelectWord01()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, "\r\nabc$def['test test']", RContentTypeDefinition.ContentType)) {
                script.MoveDown();
                script.Execute(Languages.Editor.Controller.Constants.VSConstants.VSStd2KCmdID.SELECTCURRENTWORD);
                var span         = script.View.Selection.StreamSelectionSpan;
                var selectedWord = span.GetText();
                selectedWord.Should().Be("abc");

                script.MoveRight(2);
                script.Execute(Languages.Editor.Controller.Constants.VSConstants.VSStd2KCmdID.SELECTCURRENTWORD);
                span         = script.View.Selection.StreamSelectionSpan;
                selectedWord = span.GetText();
                selectedWord.Should().Be("def");

                script.MoveRight(3);
                script.Execute(Languages.Editor.Controller.Constants.VSConstants.VSStd2KCmdID.SELECTCURRENTWORD);
                span         = script.View.Selection.StreamSelectionSpan;
                selectedWord = span.GetText();
                selectedWord.Should().Be("test");
            }
        }
Beispiel #18
0
        public async Task R_OutlineToggleAll()
        {
            string text = _files.LoadDestinationFile("lsfit.r");

            using (var script = await _editorHost.StartScript(_exportProvider, text, "filename", RContentTypeDefinition.ContentType, null)) {
                script.DoIdle(500);

                IOutliningManagerService svc = _exportProvider.GetExportedValue <IOutliningManagerService>();
                IOutliningManager        mgr = svc.GetOutliningManager(script.View);
                var snapshot = script.TextBuffer.CurrentSnapshot;

                var viewLines = script.View.TextViewLines;
                viewLines.Count.Should().Be(22);
                script.DoIdle(500);

                script.Execute(VSConstants.VSStd2K, (int)VSConstants.VSStd2KCmdID.OUTLN_TOGGLE_ALL);
                script.DoIdle(1000);

                IEnumerable <ICollapsed> collapsed = mgr.GetCollapsedRegions(new SnapshotSpan(snapshot, new Span(0, snapshot.Length)));
                collapsed.Count().Should().Be(20);

                script.Execute(VSConstants.VSStd2K, (int)VSConstants.VSStd2KCmdID.OUTLN_TOGGLE_ALL);
                script.DoIdle(500);

                viewLines = script.View.TextViewLines;
                viewLines.Count.Should().Be(22);

                script.Execute(VSConstants.VSStd2K, (int)VSConstants.VSStd2KCmdID.OUTLN_STOP_HIDING_ALL);
                script.DoIdle(200);
                mgr.Enabled.Should().Be(false);

                script.Execute(VSConstants.VSStd2K, (int)VSConstants.VSStd2KCmdID.OUTLN_START_AUTOHIDING);
                script.DoIdle(200);
                mgr.Enabled.Should().Be(true);

                script.MoveDown(9);
                script.Execute(VSConstants.VSStd2K, (int)VSConstants.VSStd2KCmdID.OUTLN_TOGGLE_CURRENT);
                script.DoIdle(500);

                collapsed = mgr.GetCollapsedRegions(new SnapshotSpan(snapshot, new Span(0, snapshot.Length)));
                collapsed.Count().Should().Be(1);

                script.Execute(VSConstants.VSStd2K, (int)VSConstants.VSStd2KCmdID.OUTLN_TOGGLE_CURRENT);
                script.DoIdle(200);

                collapsed = mgr.GetCollapsedRegions(new SnapshotSpan(snapshot, new Span(0, snapshot.Length)));
                collapsed.Count().Should().Be(0);
            }
        }
Beispiel #19
0
        public async Task PreviewAutomatic(string sourceFile)
        {
            _settings.AutomaticSync = true;
            var content      = _files.LoadDestinationFile(sourceFile);
            var baselinePath = Path.Combine(_files.DestinationPath, sourceFile) + ".html";

            using (var script = await _editorHost.StartScript(_services, content, sourceFile, MdContentTypeDefinition.ContentType, _sessionProvider)) {
                script.DoIdle(500);
                var margin  = script.View.Properties.GetProperty <PreviewMargin>(typeof(PreviewMargin));
                var control = margin?.Browser?.Control;
                control.Should().NotBeNull();

                await _services.MainThread().SwitchToAsync();

                var htmlDoc = (HTMLDocument)control.Document;
                var actual  = htmlDoc.documentElement.outerHTML.Replace("\n", "\r\n");
                TestFiles.CompareToBaseLine(baselinePath, actual);
            }
        }
Beispiel #20
0
 /// <summary>
 /// Opens file in an editor window
 /// </summary>
 /// <param name="fileName">File name</param>
 /// <param name="contentType">File content type</param>
 private async Task <string> TypeFileInEditor(string fileName, string contentType)
 {
     using (var script = await _editorHost.StartScript(_exportProvider, contentType)) {
         string   text  = _files.LoadDestinationFile(fileName);
         string[] lines = text.Split(CharExtensions.LineBreakChars);
         for (int i = 0; i < lines.Length; i++)
         {
             string lineText = lines[i];
             if (!lineText.TrimStart().StartsWith("#", System.StringComparison.Ordinal))
             {
                 lineText = lineText.Replace(" ", string.Empty);
             }
             script.Type(lineText, idleTime: 10);
             script.Enter();
             script.DoIdle(300);
         }
         return(script.EditorText);
     }
 }
Beispiel #21
0
        public async Task R_LibrarySuggestedActions()
        {
            using (var script = await _editorHost.StartScript(_services, " library(base)", RContentTypeDefinition.ContentType)) {
                VerifySession(script, 1, s => { });

                script.DoIdle(200);
                script.MoveRight(2);
                script.DoIdle(200);

                VerifySession(script, 1, s => { });
                script.DoIdle(3000);

                VerifySession(script, 1, s => {
                    var set = s.First();
                    set.Actions.Should().HaveCount(2);
                    var actions = set.Actions.ToArray();
                    actions[0].Should().BeOfType(typeof(InstallPackageSuggestedAction));
                    actions[1].Should().BeOfType(typeof(LoadLibrarySuggestedAction));
                });
            }
        }
Beispiel #22
0
        public async Task R_KeywordIntellisense()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType)) {
                script.Type("funct");
                script.DoIdle(100);
                script.Type("{TAB}");

                string expected = "function";
                string actual   = script.EditorText;

                actual.Should().Be(expected);
            }
        }
Beispiel #23
0
        public async Task R_AutoFormatFunctionBraces()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType)) {
                script.Type("function(a,b){");
                script.DoIdle(300);
                script.Type("{ENTER}a");

                string expected = "function(a, b) {\r\n    a\r\n}";
                string actual   = script.EditorText;

                actual.Should().Be(expected);
            }
        }
Beispiel #24
0
        public async Task R_AutoFormatFunctionBraces()
        {
            using (var script = await _editorHost.StartScript(_services, RContentTypeDefinition.ContentType)) {
                script.Type("function(a1,b1){");
                script.DoIdle(300);
                script.Type("{ENTER}a1");

                var expected = "function(a1, b1) {\r\n    a1\r\n}";
                var actual   = script.EditorText;

                actual.Should().Be(expected);
            }
        }