コード例 #1
0
ファイル: IntellisenseTest.cs プロジェクト: xoriath/RTVS
        public async Task R_DeclaredVariablesCompletion02()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                var provider = EditorShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
                using (var hostScript = new RHostScript(provider)) {
                    await ExecuteRCode(hostScript.Session, "setClass('Person', representation(name = 'character', age = 'numeric'))\r\n");
                    await ExecuteRCode(hostScript.Session, "hadley <- new('Person', name = 'Hadley', age = 31)\r\n");

                    PrimeIntellisenseProviders();

                    script.DoIdle(1000);
                    script.Type("hadle");
                    script.DoIdle(500);
                    script.Type("{TAB}");
                    script.DoIdle(500);
                    script.Type("@");
                    script.DoIdle(500);
                    script.Type("na");
                    script.DoIdle(500);
                    script.Type("{TAB}");

                    string expected = "hadley@name";
                    string actual   = script.EditorText;

                    actual.Should().Be(expected);
                }
            }
        }
コード例 #2
0
        public async Task PlotALot()
        {
            var sessionProvider = VsAppShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
            var app             = new RHostClientPlotTestApp();

            using (var script = new RHostScript(sessionProvider, app)) {
                var history = new PlotHistory(script.Session);
                app.History = history;

                foreach (var c in _commands)
                {
                    using (var interaction = await script.Session.BeginInteractionAsync()) {
                        await interaction.RespondAsync(c + Environment.NewLine);

                        EventsPump.DoEvents(100);
                    }
                }

                for (int i = _commands.Length - 1; i >= 0; i--)
                {
                    await history.PlotContentProvider.PreviousPlotAsync();

                    EventsPump.DoEvents(100);
                }

                for (int i = 0; i < _commands.Length; i++)
                {
                    await history.PlotContentProvider.NextPlotAsync();

                    EventsPump.DoEvents(500);
                }

                EventsPump.DoEvents(1000);
            }
        }
コード例 #3
0
ファイル: IntellisenseTest.cs プロジェクト: xoriath/RTVS
        public async Task R_DeclaredVariablesCompletion01()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                var provider = EditorShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
                using (var hostScript = new RHostScript(provider)) {
                    await ExecuteRCode(hostScript.Session, "zzz111 <- 1\r\n");
                    await ExecuteRCode(hostScript.Session, "zzz111$y222 <- 2\r\n");

                    PrimeIntellisenseProviders();

                    script.DoIdle(500);
                    script.Type("zzz1");
                    script.DoIdle(500);
                    script.Type("{TAB}");
                    script.DoIdle(500);
                    script.Type("$");
                    script.DoIdle(500);
                    script.Type("y2");
                    script.DoIdle(500);
                    script.Type("{TAB}");

                    string expected = "zzz111$y222";
                    string actual   = script.EditorText;

                    actual.Should().Be(expected);
                }
            }
        }
コード例 #4
0
        public async Task NonUniqueNameTest()
        {
            string content = @"x <- select()";

            using (var hostScript = new RHostScript(Workflow.RSessions)) {
                //await Workflow.RSession.ExecuteAsync("install.packages('dplyr')");

                var session = await TriggerSessionAsync(content, 12);

                var parametersInfo = SignatureHelp.GetParametersInfoFromBuffer(session.Ast, session.TextBuffer.CurrentSnapshot, 10);

                session.ApplicableSpan.Should().NotBeNull();
                session.QuickInfoContent.Should().BeEmpty();

                await Workflow.RSession.ExecuteAsync("library(MASS)");

                EventsPump.DoEvents(500);
                session = await TriggerSessionAsync(content, 12);

                session.ApplicableSpan.Should().NotBeNull();
                session.QuickInfoContent.Should().ContainSingle().Which.ToString().Should().StartWith("select(formula");

                await Workflow.RSession.ExecuteAsync("library(dplyr)");

                EventsPump.DoEvents(500);
                session = await TriggerSessionAsync(content, 12);

                session.ApplicableSpan.Should().NotBeNull();
                session.QuickInfoContent.Should().ContainSingle().Which.ToString().Should().StartWith("select(.data");
            }
        }
コード例 #5
0
        public async Task InstallPackageTest()
        {
            using (var script = new RHostScript(_exportProvider, _broker.BrokerConnector)) {
                try {
                    await script.Session.ExecuteAsync("remove.packages('abc')", REvaluationKind.Mutating);
                } catch (RException) { }

                await _packageIndex.BuildIndexAsync();

                var completionSets = new List <CompletionSet>();
                GetCompletions("abc::", 5, completionSets);

                completionSets.Should().ContainSingle();
                completionSets[0].Completions.Should().BeEmpty();

                try {
                    await script.Session.ExecuteAsync("install.packages('abc')", REvaluationKind.Mutating);
                } catch (RException) { }

                await _packageIndex.BuildIndexAsync();

                completionSets.Clear();
                GetCompletions("abc::", 5, completionSets);

                completionSets.Should().ContainSingle();
                completionSets[0].Completions.Should().NotBeEmpty();
            }
        }
コード例 #6
0
ファイル: IntellisenseTest.cs プロジェクト: dudongsheng7/RTVS
        public async Task R_DeclaredVariablesCompletion01()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType))
                using (var hostScript = new RHostScript(_sessionProvider, _broker.BrokerConnector)) {
                    await ExecuteRCode(hostScript.Session, "zzz111 <- 1\r\n");
                    await ExecuteRCode(hostScript.Session, "zzz111$y222 <- 2\r\n");

                    PrimeIntellisenseProviders(script);

                    script.DoIdle(500);
                    script.Type("zzz1");
                    script.DoIdle(500);
                    script.Type("{TAB}");
                    script.DoIdle(500);
                    script.Type("$");
                    script.DoIdle(500);
                    script.Type("y2");
                    script.DoIdle(500);
                    script.Type("{TAB}");

                    string expected = "zzz111$y222";
                    string actual   = script.EditorText;

                    actual.Should().Be(expected);
                }
        }
コード例 #7
0
        private async Task RunEnvironmentTestAsync(string expression, Action <IReadOnlyList <REnvironment> > assert)
        {
            var sessionProvider    = VsAppShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
            var environmentChanged = new CountdownEvent(3);
            IReadOnlyList <REnvironment> environments = null;

            using (var rHostScript = new RHostScript(sessionProvider, null)) {
                using (var environmentProvider = new REnvironmentProvider(rHostScript.Session)) {
                    environmentProvider.EnvironmentChanged += (sender, e) => {
                        environments = e.Environments;
                        environmentChanged.Signal();
                    };
                    using (var interaction = await rHostScript.Session.BeginInteractionAsync(false)) {
                        await interaction.RespondAsync(expression + Environment.NewLine);
                    }

                    bool timedout = true;
                    if (System.Diagnostics.Debugger.IsAttached)
                    {
                        environmentChanged.Wait();
                    }
                    else
                    {
                        timedout = environmentChanged.Wait(TimeSpan.FromSeconds(10));
                    }
                    timedout.Should().BeTrue();

                    assert(environments);
                }
            }
        }
コード例 #8
0
ファイル: IntellisenseTest.cs プロジェクト: dudongsheng7/RTVS
        public async Task R_DeclaredVariablesCompletion02()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType))
                using (var hostScript = new RHostScript(_sessionProvider, _broker.BrokerConnector)) {
                    await ExecuteRCode(hostScript.Session, "setClass('Person', representation(name = 'character', age = 'numeric'))\r\n");
                    await ExecuteRCode(hostScript.Session, "hadley <- new('Person', name = 'Hadley', age = 31)\r\n");

                    PrimeIntellisenseProviders(script);

                    script.DoIdle(1000);
                    script.Type("hadle");
                    script.DoIdle(500);
                    script.Type("{TAB}");
                    script.DoIdle(500);
                    script.Type("@");
                    script.DoIdle(500);
                    script.Type("na");
                    script.DoIdle(500);
                    script.Type("{TAB}");

                    string expected = "hadley@name";
                    string actual   = script.EditorText;

                    actual.Should().Be(expected);
                }
        }
コード例 #9
0
ファイル: IntellisenseTest.cs プロジェクト: dudongsheng7/RTVS
        public async Task R_DeclaredVariablesCompletion03()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType))
                using (var hostScript = new RHostScript(_sessionProvider, _broker.BrokerConnector)) {
                    await ExecuteRCode(hostScript.Session, "i1 <- 1\r\n");

                    PrimeIntellisenseProviders(script);
                    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();
                }
        }
コード例 #10
0
ファイル: ViewersTest.cs プロジェクト: zachwieja/RTVS
        public async Task ViewerExportTest()
        {
            using (var hostScript = new RHostScript(_sessionProvider)) {
                var session = hostScript.Session;

                var funcViewer = await _aggregator.GetViewer(session, REnvironments.GlobalEnv, "lm");

                funcViewer.Should().NotBeNull().And.BeOfType <CodeViewer>();

                var gridViewer = await _aggregator.GetViewer(session, REnvironments.GlobalEnv, "airmiles");

                gridViewer.Should().NotBeNull().And.BeOfType <Viewer1D>();

                gridViewer = await _aggregator.GetViewer(session, REnvironments.GlobalEnv, "mtcars");

                gridViewer.Should().NotBeNull().And.BeOfType <TableViewer>();

                gridViewer = await _aggregator.GetViewer(session, REnvironments.GlobalEnv, "AirPassengers");

                gridViewer.Should().NotBeNull().And.BeOfType <Viewer1D>();

                gridViewer = await _aggregator.GetViewer(session, REnvironments.GlobalEnv, "list(c(1:10))");

                gridViewer.Should().NotBeNull().And.BeOfType <ListViewer>();

                gridViewer = await _aggregator.GetViewer(session, REnvironments.GlobalEnv, "c(1:10)");

                gridViewer.Should().NotBeNull().And.BeOfType <VectorViewer>();

                gridViewer.Capabilities.Should().HaveFlag(ViewerCapabilities.List | ViewerCapabilities.Table);
            }
        }
コード例 #11
0
        public async Task LoadUnloadPackageTest()
        {
            string content = @"do()";

            using (var hostScript = new RHostScript(Workflow.RSessions)) {
                //await Workflow.RSession.ExecuteAsync("install.packages('dplyr')");

                var session = await TriggerSessionAsync(content, 3);

                var parametersInfo = SignatureHelp.GetParametersInfoFromBuffer(session.Ast, session.TextBuffer.CurrentSnapshot, 10);

                session.ApplicableSpan.Should().NotBeNull();
                session.QuickInfoContent.Should().BeEmpty();

                await Workflow.RSession.ExecuteAsync("library(dplyr)");

                session = await TriggerSessionAsync(content, 3);

                session.ApplicableSpan.Should().NotBeNull();
                session.QuickInfoContent.Should().ContainSingle().Which.ToString().Should().StartWith("do(.data");

                await Workflow.RSession.ExecuteAsync("detach(\"package:dplyr\", unload = TRUE)");

                EventsPump.DoEvents(1000);

                session = await TriggerSessionAsync(content, 3);

                session.QuickInfoContent.Should().BeEmpty();
            }
        }
コード例 #12
0
ファイル: ViewersTest.cs プロジェクト: zachwieja/RTVS
        public async Task ViewDataTest01()
        {
            var cb = Substitute.For <IRSessionCallback>();

            cb.When(x => x.ViewObjectAsync(Arg.Any <string>(), Arg.Any <string>())).Do(x => { });
            using (var hostScript = new RHostScript(_workflow.RSessions, cb)) {
                using (var inter = await hostScript.Session.BeginInteractionAsync()) {
                    await inter.RespondAsync("View(mtcars)" + Environment.NewLine);
                }
            }
            await cb.Received().ViewObjectAsync("mtcars", "mtcars", Arg.Any <CancellationToken>());
        }
コード例 #13
0
        public void RemoteFiles()
        {
            var completionSets   = new List <CompletionSet>();
            var workflowProvider = UIThreadHelper.Instance.Invoke(() => _exportProvider.GetExportedValue <IRInteractiveWorkflowProvider>().GetOrCreate());

            using (var script = new RHostScript(workflowProvider.RSessions)) {
                var provider = new FilesCompletionProvider(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), workflowProvider, _imagesProvider, _glyphService, forceR: true);
                var entries  = provider.GetEntries(null);
                entries.Should().NotBeEmpty();
                entries.Should().Contain(e => e.DisplayText == _testFolderName);
            }
        }
コード例 #14
0
ファイル: ViewersTest.cs プロジェクト: zachwieja/RTVS
        public async Task ViewLibraryTest()
        {
            var cb = Substitute.For <IRSessionCallback>();

            cb.ViewLibraryAsync().Returns(Task.CompletedTask);
            using (var hostScript = new RHostScript(_workflow.RSessions, cb)) {
                using (var inter = await hostScript.Session.BeginInteractionAsync()) {
                    await inter.RespondAsync("library()" + Environment.NewLine);
                }
            }
            await cb.Received().ViewLibraryAsync(Arg.Any <CancellationToken>());
        }
コード例 #15
0
ファイル: ViewersTest.cs プロジェクト: zachwieja/RTVS
        public async Task ViewDataTest02()
        {
            var cb = Substitute.For <IRSessionCallback>();

            cb.When(x => x.ViewFile(Arg.Any <string>(), "R data sets", true)).Do(x => { });
            using (var hostScript = new RHostScript(_sessionProvider, cb)) {
                using (var inter = await hostScript.Session.BeginInteractionAsync()) {
                    await inter.RespondAsync("data()" + Environment.NewLine);
                }
            }
            await cb.Received().ViewFile(Arg.Any <string>(), "R data sets", true, Arg.Any <CancellationToken>());
        }
コード例 #16
0
ファイル: ViewersTest.cs プロジェクト: dudongsheng7/RTVS
        public async Task ViewLibraryTest()
        {
            var cb = Substitute.For <IRSessionCallback>();

            cb.ViewLibrary().Returns(Task.CompletedTask);
            using (var hostScript = new RHostScript(_sessionProvider, _broker.BrokerConnector, cb)) {
                using (var inter = await hostScript.Session.BeginInteractionAsync()) {
                    await inter.RespondAsync("library()" + Environment.NewLine);
                }
            }
            await cb.Received().ViewLibrary();
        }
コード例 #17
0
ファイル: ViewersTest.cs プロジェクト: dudongsheng7/RTVS
        public async Task ViewDataTest01()
        {
            var cb = Substitute.For <IRSessionCallback>();

            cb.When(x => x.ViewObject(Arg.Any <string>(), Arg.Any <string>())).Do(x => { });
            using (var hostScript = new RHostScript(_sessionProvider, _broker.BrokerConnector, cb)) {
                using (var inter = await hostScript.Session.BeginInteractionAsync()) {
                    await inter.RespondAsync("View(mtcars)" + Environment.NewLine);
                }
            }
            cb.Received().ViewObject("mtcars", "mtcars");
        }
コード例 #18
0
ファイル: ViewersTest.cs プロジェクト: zachwieja/RTVS
        public async Task FormulaViewerTest()
        {
            using (var hostScript = new RHostScript(_workflow.RSessions)) {
                string formula = "1 ~ 2";

                var funcViewer = await _aggregator.GetViewer(hostScript.Session, REnvironments.GlobalEnv, formula) as CodeViewer;

                funcViewer.Should().NotBeNull();

                var code = await funcViewer.GetFunctionCode(formula);

                code.StartsWithOrdinal(formula).Should().BeTrue();
            }
        }
コード例 #19
0
        public async Task FunctionViewerTest()
        {
            using (var hostScript = new RHostScript(_sessionProvider)) {
                var funcViewer = await _aggregator.GetViewer(hostScript.Session, REnvironments.GlobalEnv, "lm") as CodeViewer;

                funcViewer.Should().NotBeNull();

                funcViewer.GetFileName("lm", null).Should().Be(Path.Combine(Path.GetTempPath(), "~lm.r"));
                funcViewer.GetFileName("lm", "abc").Should().Be(Path.Combine(Path.GetTempPath(), "~abc.r"));

                var code = await funcViewer.GetFunctionCode("lm");

                code.StartsWithOrdinal("function(formula, data, subset, weights, na.action").Should().BeTrue();
            }
        }
コード例 #20
0
ファイル: ViewersTest.cs プロジェクト: zachwieja/RTVS
        public async Task FunctionViewerTest(string expression, string functionName, string expected)
        {
            using (var hostScript = new RHostScript(_workflow.RSessions)) {
                if (!string.IsNullOrEmpty(expression))
                {
                    await hostScript.Session.ExecuteAsync(expression);
                }
                var funcViewer = await _aggregator.GetViewer(hostScript.Session, REnvironments.GlobalEnv, functionName) as CodeViewer;

                funcViewer.Should().NotBeNull();

                var code = await funcViewer.GetFunctionCode(functionName);

                code.StartsWithOrdinal(expected).Should().BeTrue();
            }
        }
コード例 #21
0
ファイル: IntellisenseTest.cs プロジェクト: dudongsheng7/RTVS
        public async Task R_NoCompletionOnTab()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType))
                using (var hostScript = new RHostScript(_sessionProvider, _broker.BrokerConnector)) {
                    script.DoIdle(100);
                    script.Type("f1<-function(x,y");
                    script.DoIdle(300);
                    script.Type("{TAB}");
                    script.DoIdle(100);

                    string actual = script.EditorText;
                    actual.Should().Be("f1<-function(x,y)");

                    script.View.Caret.Position.BufferPosition.Position.Should().Be(actual.Length);
                }
        }
コード例 #22
0
        public async Task GridViewerExcludeTest(string expr)
        {
            var e      = Substitute.For <IDataObjectEvaluator>();
            var viewer = new GridViewer(_aggregator, e);

            viewer.CanView(null).Should().BeFalse();

            using (var hostScript = new RHostScript(_sessionProvider)) {
                var session = hostScript.Session;

                await session.ExecuteAsync($"x <- {expr}");

                var value = await session.EvaluateAndDescribeAsync("x", AllFields, null);

                viewer.CanView(value).Should().BeFalse();
            }
        }
コード例 #23
0
ファイル: IntellisenseTest.cs プロジェクト: xoriath/RTVS
        public void R_NoCompletionOnTab()
        {
            using (var script = new TestScript(RContentTypeDefinition.ContentType)) {
                var provider = EditorShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
                using (var hostScript = new RHostScript(provider)) {
                    script.DoIdle(100);
                    script.Type("f1<-function(x,y");
                    script.DoIdle(300);
                    script.Type("{TAB}");
                    script.DoIdle(100);

                    string actual = script.EditorText;
                    actual.Should().Be("f1<-function(x,y)");

                    EditorWindow.CoreEditor.View.Caret.Position.BufferPosition.Position.Should().Be(actual.Length);
                }
            }
        }
コード例 #24
0
ファイル: IntellisenseTest.cs プロジェクト: dudongsheng7/RTVS
        public async Task R_PackageVariablesCompletion()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType))
                using (var hostScript = new RHostScript(_sessionProvider, _broker.BrokerConnector)) {
                    PrimeIntellisenseProviders(script);
                    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);
                }
        }
コード例 #25
0
        public async Task <IEditorScript> StartScript(ICoreShell coreShell, string text, string filename, string contentType, IRSessionProvider sessionProvider)
        {
            var coreEditor = await InUI(() => new CoreEditor(coreShell, text, filename, contentType));

            var containerDisposable = await AddToHost(coreEditor.Control);

            if (sessionProvider != null)
            {
                IntelliSenseRSession.HostStartTimeout = 10000;
                HostScript = new RHostScript(sessionProvider);

                PackageIndex = coreShell.GetService <IPackageIndex>();
                await PackageIndex.BuildIndexAsync();

                FunctionIndex = coreShell.GetService <IFunctionIndex>();
                await FunctionIndex.BuildIndexAsync();
            }

            return(new EditorScript(coreShell, coreEditor, containerDisposable));
        }
コード例 #26
0
        public void HelpTest()
        {
            var clientApp       = new RHostClientHelpTestApp();
            var sessionProvider = VsAppShell.Current.ExportProvider.GetExportedValue <IRSessionProvider>();
            var historyProvider = RHistoryProviderStubFactory.CreateDefault();

            using (var hostScript = new RHostScript(sessionProvider, clientApp)) {
                using (var script = new ControlTestScript(typeof(HelpWindowVisualComponent))) {
                    DoIdle(100);

                    var activeViewTrackerMock       = new ActiveTextViewTrackerMock("  plot", RContentTypeDefinition.ContentType);
                    var activeReplTrackerMock       = new ActiveRInteractiveWindowTrackerMock();
                    var interactiveWorkflowProvider = TestRInteractiveWorkflowProviderFactory.Create(sessionProvider, activeTextViewTracker: activeViewTrackerMock);
                    var interactiveWorkflow         = interactiveWorkflowProvider.GetOrCreate();

                    var component = ControlWindow.Component as IHelpWindowVisualComponent;
                    component.Should().NotBeNull();

                    component.VisualTheme = "Light.css";
                    clientApp.Component   = component;

                    var view = activeViewTrackerMock.GetLastActiveTextView(RContentTypeDefinition.ContentType);

                    var cmd = new ShowHelpOnCurrentCommand(interactiveWorkflow, activeViewTrackerMock, activeReplTrackerMock);

                    cmd.Should().BeVisibleAndDisabled();
                    view.Caret.MoveTo(new SnapshotPoint(view.TextBuffer.CurrentSnapshot, 3));

                    cmd.Should().BeVisibleAndEnabled();
                    cmd.Text.Should().EndWith("plot");

                    cmd.Invoke();
                    WaitForAppReady(clientApp);

                    clientApp.Uri.IsLoopback.Should().Be(true);
                    clientApp.Uri.PathAndQuery.Should().Be("/library/graphics/html/plot.html");

                    DoIdle(500);
                }
            }
        }
コード例 #27
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);
                }
            }
        }
コード例 #28
0
ファイル: IntellisenseTest.cs プロジェクト: dudongsheng7/RTVS
        public async Task R_CompletionOnTab()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType))
                using (var hostScript = new RHostScript(_sessionProvider, _broker.BrokerConnector)) {
                    REditorSettings.ShowCompletionOnTab = true;
                    script.DoIdle(100);
                    script.Type("f1<-lapp");
                    UIThreadHelper.Instance.Invoke(() => 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<-lapply");

                    REditorSettings.ShowCompletionOnTab = false;
                }
        }
コード例 #29
0
ファイル: IntellisenseTest.cs プロジェクト: dudongsheng7/RTVS
        public async Task R_CompletionFunctionBraces02()
        {
            using (var script = await _editorHost.StartScript(_exportProvider, RContentTypeDefinition.ContentType))
                using (var hostScript = new RHostScript(_sessionProvider, _broker.BrokerConnector)) {
                    string message = null;
                    hostScript.Session.Output += (s, e) => {
                        message = e.Message;
                    };

                    script.DoIdle(100);
                    script.Type("bas");
                    script.DoIdle(1000);
                    script.Type("{TAB}");
                    script.DoIdle(100);

                    string actual = script.EditorText;
                    actual.Should().Be("base");

                    message.Should().NotContain("Error");
                }
        }
コード例 #30
0
        public async Task R_CompletionFunctionBraces01()
        {
            using (var script = await _editorHost.StartScript(ExportProvider, RContentTypeDefinition.ContentType))
                using (var hostScript = new RHostScript(_sessionProvider)) {
                    string message = null;
                    hostScript.Session.Output += (s, e) => {
                        message = e.Message;
                    };

                    script.DoIdle(100);
                    script.Type("instal");
                    script.DoIdle(1000);
                    script.Type("{TAB}");
                    script.DoIdle(100);

                    string actual = script.EditorText;
                    actual.Should().Be("install.packages()");
                    script.View.Caret.Position.BufferPosition.Position.Should().Be(actual.Length - 1);

                    message.Should().NotContain("Error");
                }
        }