public async Task ParameterTest_ComputeCurrentParameter02()
        {
            await FunctionIndex.GetPackageNameAsync("legend");

            _settings.PartialArgumentNameMatch.Returns(true);

            var textBuffer = new TextBufferMock("legend(bty=1, lt=3)", RContentTypeDefinition.ContentType);
            var eb         = textBuffer.ToEditorBuffer();
            var source     = new RSignatureHelpSource(textBuffer, Services);
            var session    = new SignatureHelpSessionMock(Services, textBuffer, 0);
            var textView   = session.TextView as TextViewMock;
            var signatures = new List <ISignature>();

            using (var tree = new EditorTree(eb, Services)) {
                tree.Build();
                using (var document = new EditorDocumentMock(tree)) {
                    session.TrackingPoint = new TrackingPointMock(textBuffer, 7, PointTrackingMode.Positive, TrackingFidelityMode.Forward);

                    tree.TakeThreadOwnerShip();
                    await source.AugmentSignatureHelpSessionAsync(session, signatures, tree.AstRoot);

                    signatures.Should().ContainSingle();

                    textView.Caret = new TextCaretMock(textView, 8);
                    var sh    = ((RSignatureHelp)signatures[0]).FunctionSignatureHelp;
                    var index = sh.SignatureInfo.ComputeCurrentParameter(tree.BufferSnapshot, tree.AstRoot, 8, _settings);
                    index.Should().Be(11);

                    textView.Caret = new TextCaretMock(textView, 15);
                    index          = sh.SignatureInfo.ComputeCurrentParameter(tree.BufferSnapshot, tree.AstRoot, 15, _settings);
                    index.Should().Be(6);
                }
            }
        }
示例#2
0
        public async Task InternalExternal(string content, int position, string expectedEntry, string notExpectedEntry)
        {
            var packageName = await FunctionIndex.GetPackageNameAsync(expectedEntry);

            packageName.Should().NotBeNull();

            var completionSets = new List <CompletionSet>();

            RCompletionTestUtilities.GetCompletions(Services, content, position, completionSets);
            completionSets.Should().ContainSingle();

            var entries = completionSets[0].Completions.Select(c => c.DisplayText).ToList();

            entries.Should().Contain(expectedEntry);
            entries.Should().NotContain(notExpectedEntry);
        }
        public async Task ParameterTest_ComputeCurrentParameter01()
        {
            var textBuffer   = new TextBufferMock("aov(", RContentTypeDefinition.ContentType);
            var editorBuffer = textBuffer.ToEditorBuffer();
            var source       = new RSignatureHelpSource(textBuffer, Services);
            var session      = new SignatureHelpSessionMock(Services, textBuffer, 0);
            var textView     = session.TextView as TextViewMock;
            var signatures   = new List <ISignature>();

            using (var tree = new EditorTree(editorBuffer, Services)) {
                tree.Build();
                using (var document = new EditorDocumentMock(tree)) {
                    session.TrackingPoint = new TrackingPointMock(textBuffer, 4, PointTrackingMode.Positive, TrackingFidelityMode.Forward);
                    await FunctionIndex.GetPackageNameAsync("aov");

                    tree.TakeThreadOwnerShip();
                    await source.AugmentSignatureHelpSessionAsync(session, signatures, tree.AstRoot);

                    signatures.Should().ContainSingle();

                    var index = GetCurrentParameterIndex(signatures[0], signatures[0].CurrentParameter);
                    index.Should().Be(0);

                    textView.Caret = new TextCaretMock(textView, 5);
                    TextBufferUtility.ApplyTextChange(textBuffer, 4, 0, 1, "a");
                    index = GetCurrentParameterIndex(signatures[0], signatures[0].CurrentParameter);
                    index.Should().Be(0);

                    textView.Caret = new TextCaretMock(textView, 6);
                    TextBufferUtility.ApplyTextChange(textBuffer, 5, 0, 1, ",");
                    tree.EnsureTreeReady();
                    index = GetCurrentParameterIndex(signatures[0], signatures[0].CurrentParameter);
                    index.Should().Be(1);

                    textView.Caret = new TextCaretMock(textView, 7);
                    TextBufferUtility.ApplyTextChange(textBuffer, 6, 0, 1, ",");
                    tree.EnsureTreeReady();
                    index = GetCurrentParameterIndex(signatures[0], signatures[0].CurrentParameter);
                    index.Should().Be(2);
                }
            }
        }
示例#4
0
        public async Task SpecificPackage(string content, int position, string expectedEntry, string expectedDescription, bool realHost)
        {
            var hostScript = realHost ? new RHostScript(Services) : null;

            try {
                var packageName = await FunctionIndex.GetPackageNameAsync(expectedEntry);

                packageName.Should().NotBeNull();

                var completionSets = new List <CompletionSet>();
                RCompletionTestUtilities.GetCompletions(Services, content, position, completionSets);

                completionSets.Should().ContainSingle();

                var entry = completionSets[0].Completions.FirstOrDefault(c => c.DisplayText == expectedEntry);
                entry.Should().NotBeNull();

                var description = entry.Description;
                description.Should().Contain(expectedDescription);
            } finally {
                hostScript?.Dispose();
            }
        }