예제 #1
0
        public async Task SimpleEval()
        {
            var block     = new RCodeBlock(0, string.Empty);
            var evaluator = new RCodeEvaluator(_documentName, _shell.Services);
            await evaluator.EvaluateBlockAsync(block, CancellationToken.None);

            block.State.Should().Be(CodeBlockState.Evaluated);
        }
예제 #2
0
        public async Task Exception()
        {
            _interaction.When(s => s.RespondAsync(Arg.Any <string>())).Do(c => throw new RException("disconnected"));

            var block     = new RCodeBlock(0, string.Empty);
            var evaluator = new RCodeEvaluator(_documentName, _shell.Services);
            await evaluator.EvaluateBlockAsync(block, CancellationToken.None);

            block.Result.Should().Contain("<code");
            block.Result.Should().Contain("disconnected");
            block.Result.Should().Contain("color: red");
        }
예제 #3
0
        public async Task Cancellation()
        {
            var cts = new CancellationTokenSource();

            cts.Cancel();

            var block     = new RCodeBlock(0, string.Empty);
            var evaluator = new RCodeEvaluator(_documentName, _shell.Services);

            await evaluator.EvaluateBlockAsync(block, cts.Token);

            block.Result.Should().Contain("canceled");
        }
예제 #4
0
        public async Task Output()
        {
            _interaction.When(s => s.RespondAsync(Arg.Any <string>())).Do(c => {
                _session.Output += Raise.EventWith(new ROutputEventArgs(OutputType.Output, "output"));
            });

            var block     = new RCodeBlock(0, string.Empty);
            var evaluator = new RCodeEvaluator(_documentName, _shell.Services);
            await evaluator.EvaluateBlockAsync(block, CancellationToken.None);

            block.Result.Should().Contain("<code");
            block.Result.Should().Contain("output");
            block.Result.Should().NotContain("color: red");
        }
예제 #5
0
        public async Task Plot()
        {
            var cb = new RSessionCallback {
                PlotResult = new byte[] { 1, 2, 3, 4 }
            };

            var block     = new RCodeBlock(0, string.Empty);
            var evaluator = new RCodeEvaluator(_documentName, _shell.Services);

            evaluator.EvalSession.SessionCallback = cb;
            await evaluator.EvaluateBlockAsync(block, CancellationToken.None);

            block.Result.Should().Be("<img src='data:image/gif;base64, AQIDBA==' />");
            cb.PlotResult.Should().BeNull();
        }