public void R_ProvisionalText02() { using (var script = new TestScript(RContentTypeDefinition.ContentType)) { script.Type("c(\""); string expected = "c(\"\")"; string actual = script.EditorText; actual.Should().Be(expected); // Move caret outside of the provisional text area // and back so provisional text becomes permanent. script.MoveRight(); script.MoveLeft(); // Let parser hit on idle so AST updates script.DoIdle(300); // There should not be completion inside "" script.Type("\""); expected = "c(\"\"\")"; actual = script.EditorText; actual.Should().Be(expected); } }
public void R_SignatureSessionNavigation() { using (var script = new TestScript(RContentTypeDefinition.ContentType)) { FunctionRdDataProvider.HostStartTimeout = 10000; using (new RHostScript(EditorShell.Current.ExportProvider.GetExportedValue<IRSessionProvider>())) { PrepareFunctionIndex(); FunctionIndexUtility.GetFunctionInfoAsync("lm").Wait(3000); script.Type("x <- lm(subset = a, sing"); script.DoIdle(1000); script.Type("{TAB}"); script.DoIdle(1000); ISignatureHelpSession session = script.GetSignatureSession(); session.Should().NotBeNull(); script.DoIdle(200); IParameter parameter = session.SelectedSignature.CurrentParameter; parameter.Should().NotBeNull(); parameter.Name.Should().Be("singular.ok"); script.MoveLeft(17); script.DoIdle(200); parameter = session.SelectedSignature.CurrentParameter; parameter.Name.Should().Be("subset"); script.MoveRight(3); script.DoIdle(200); parameter = session.SelectedSignature.CurrentParameter; parameter.Name.Should().Be("singular.ok"); } } }