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); }
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"); }
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"); }
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"); }
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(); }