Пример #1
0
        public void R_CompletionFilesUserFolder()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                var provider = EditorShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
                using (new RHostScript(provider)) {
                    var myDocs     = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                    var testFolder = Path.Combine(myDocs, "_rtvs_test_");
                    if (!Directory.Exists(testFolder))
                    {
                        Directory.CreateDirectory(testFolder);
                    }

                    script.DoIdle(100);
                    script.Type("x <- \"~/");
                    script.DoIdle(1000);
                    script.Type("{TAB}");
                    script.DoIdle(500);

                    var session = script.GetCompletionSession();
                    session.Should().NotBeNull();
                    script.DoIdle(200);

                    var list = session.SelectedCompletionSet.Completions.ToList();
                    var item = list.FirstOrDefault(x => x.DisplayText == "_rtvs_test_");
                    item.Should().NotBeNull();

                    if (Directory.Exists(testFolder))
                    {
                        Directory.Delete(testFolder);
                    }
                }
            }
        }
Пример #2
0
        public void R_LoadedPackageFunctionCompletion()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                var provider = EditorShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
                using (new RHostScript(provider)) {
                    REvaluationResult result;

                    script.Type("c");
                    script.DoIdle(200);
                    var session = script.GetCompletionSession();
                    session.Should().NotBeNull();
                    script.DoIdle(500);

                    var list = session.SelectedCompletionSet.Completions.ToList();
                    var item = list.FirstOrDefault(x => x.DisplayText == "codoc");
                    item.Should().BeNull();

                    var rSession = provider.GetOrCreate(GuidList.InteractiveWindowRSessionGuid, null);
                    rSession.Should().NotBeNull();

                    using (var eval = rSession.BeginEvaluationAsync().Result) {
                        result = eval.EvaluateAsync("library('tools')", REvaluationKind.Mutating).Result;
                    }

                    script.DoIdle(1000);

                    script.Type("{ESC}");
                    script.DoIdle(200);
                    script.Backspace();
                    script.Type("{ENTER}");
                    script.DoIdle(100);

                    script.Type("c");
                    script.DoIdle(500);
                    script.Backspace();

                    session = script.GetCompletionSession();
                    session.Should().NotBeNull();
                    list = session.SelectedCompletionSet.Completions.ToList();
                    item = list.FirstOrDefault(x => x.DisplayText == "codoc");
                    item.Should().NotBeNull();
                }
            }
        }
Пример #3
0
        public async Task R_LoadedPackageFunctionCompletion()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                var provider = EditorShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
                using (new RHostScript(provider)) {
                    script.Type("c");
                    script.DoIdle(200);
                    var session = script.GetCompletionSession();
                    session.Should().NotBeNull();
                    script.DoIdle(500);

                    var list = session.SelectedCompletionSet.Completions.ToList();
                    var item = list.FirstOrDefault(x => x.DisplayText == "codoc");
                    item.Should().BeNull();

                    var rSession = provider.GetOrCreate(GuidList.InteractiveWindowRSessionGuid);
                    rSession.Should().NotBeNull();

                    await rSession.ExecuteAsync("library('tools')");

                    script.DoIdle(1000);

                    script.Type("{ESC}");
                    script.DoIdle(200);
                    script.Backspace();
                    script.Type("{ENTER}");
                    script.DoIdle(100);

                    script.Type("c");
                    script.DoIdle(500);
                    script.Backspace();

                    session = script.GetCompletionSession();
                    session.Should().NotBeNull();
                    list = session.SelectedCompletionSet.Completions.ToList();
                    item = list.FirstOrDefault(x => x.DisplayText == "codoc");
                    item.Should().NotBeNull();
                }
            }
        }
Пример #4
0
        public async Task R_DeclaredVariablesCompletion03()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                var provider = EditorShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
                using (var hostScript = new RHostScript(provider)) {
                    await ExecuteRCode(hostScript.Session, "i1 <- 1\r\n");

                    PrimeIntellisenseProviders();
                    script.DoIdle(1000);

                    script.Type("i");

                    var session = script.GetCompletionSession();
                    session.Should().NotBeNull();

                    var list = session.SelectedCompletionSet.Completions.ToList();
                    var item = list.FirstOrDefault(x => x.DisplayText == "i1");
                    item.Should().NotBeNull();
                    script.DoIdle(100);

                    script.Type("{ESC}");
                    script.Backspace();

                    script.DoIdle(100);
                    script.Type("graphics::");
                    script.DoIdle(300);

                    session = script.GetCompletionSession();
                    session.Should().NotBeNull();

                    list = session.SelectedCompletionSet.Completions.ToList();
                    item = list.FirstOrDefault(x => x.DisplayText == "i1");
                    item.Should().BeNull();
                }
            }
        }
Пример #5
0
        public void R_CompletionFilesAbsolute()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                var root = Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.Windows));

                script.DoIdle(100);
                script.Type(Invariant($"x <- \"{root[0]}:/"));
                script.DoIdle(1000);
                script.Type("{TAB}");
                script.DoIdle(100);

                var session = script.GetCompletionSession();
                session.Should().NotBeNull();
                script.DoIdle(200);

                var list = session.SelectedCompletionSet.Completions.ToList();
                var item = list.FirstOrDefault(x => x.DisplayText == "Windows");
                item.Should().NotBeNull();
            }
        }
Пример #6
0
        public void R_CompletionFiles()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                string asmPath = Assembly.GetExecutingAssembly().GetAssemblyPath();
                RToolsSettings.Current.WorkingDirectory = Path.GetDirectoryName(asmPath);

                script.DoIdle(100);
                script.Type("x <- \"");
                script.DoIdle(1000);
                script.Type("{TAB}");
                script.DoIdle(100);

                var session = script.GetCompletionSession();
                session.Should().NotBeNull();
                script.DoIdle(200);

                var list = session.SelectedCompletionSet.Completions.ToList();
                var item = list.FirstOrDefault(x => x.DisplayText == "ItemTemplates");
                item.Should().NotBeNull();
            }
        }
Пример #7
0
        public void R_PackageVariablesCompletion()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                var provider = EditorShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
                using (var hostScript = new RHostScript(provider)) {
                    PrimeIntellisenseProviders();
                    script.DoIdle(1000);

                    script.Type("mtcars$");

                    var session = script.GetCompletionSession();
                    session.Should().NotBeNull();
                    script.DoIdle(1000);

                    var list = session.SelectedCompletionSet.Completions.ToList();
                    var item = list.FirstOrDefault(x => x.DisplayText == "cyl");
                    item.Should().NotBeNull();
                    script.DoIdle(100);
                }
            }
        }
Пример #8
0
        public void R_CompletionOnTab()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                var provider = EditorShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
                using (var hostScript = new RHostScript(provider)) {
                    REditorSettings.ShowCompletionOnTab = true;
                    script.DoIdle(100);
                    script.Type("f1<-x");
                    EditorShell.Current.DispatchOnUIThread(() => script.GetCompletionSession().Dismiss());

                    script.DoIdle(300);
                    script.Type("{TAB}");
                    script.DoIdle(500);
                    script.Type("{TAB}");
                    script.DoIdle(200);

                    string actual = script.EditorText;
                    actual.Should().Be("f1<-X11");

                    REditorSettings.ShowCompletionOnTab = false;
                }
            }
        }
Пример #9
0
        public void R_SnippetsCompletion01()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                script.DoIdle(100);
                script.Type("whil");
                script.DoIdle(300);

                EditorShell.Current.DispatchOnUIThread(() => {
                    var session = script.GetCompletionSession();
                    session.Should().NotBeNull();

                    var infoSourceProvider = EditorShell.Current.ExportProvider.GetExportedValue <ISnippetInformationSourceProvider>();
                    var infoSource         = infoSourceProvider.InformationSource;
                    var completion         = session.SelectedCompletionSet.SelectionStatus.Completion;

                    bool isSnippet = infoSource.IsSnippet(completion.DisplayText);
                    isSnippet.Should().BeTrue();

                    var glyph        = completion.IconSource;
                    var snippetGlyph = GlyphService.GetGlyph(StandardGlyphGroup.GlyphCSharpExpansion, StandardGlyphItem.GlyphItemPublic);
                    glyph.Should().Be(snippetGlyph);
                });
            }
        }