public async Task EvaluateAsync_DisconnectedFromTheStart() { using (var session = new RSession(0, _brokerClient, new AsyncReaderWriterLock().CreateExclusiveReaderLock(), () => { })) { // ReSharper disable once AccessToDisposedClosure Func<Task> f = () => session.EvaluateAsync("x <- 1"); await f.ShouldThrowAsync<RHostDisconnectedException>(); } }
public Task <REvaluationResult> EvaluateAsync(string expression, REvaluationKind kind, CancellationToken cancellationToken = new CancellationToken()) => _session.EvaluateAsync(expression, kind, false, cancellationToken);
public async Task StopReentrantLoop() { var callback = new RSessionCallbackStub(); var session = new RSession(0, _brokerClient, new AsyncReaderWriterLock().CreateExclusiveReaderLock(), () => { }); await session.StartHostAsync(new RHostStartupInfo { Name = _testMethod.Name }, callback, 50000); var testMrs = new AsyncManualResetEvent(); callback.PlotHandler = (message, ct) => { testMrs.Set(); return session.EvaluateAsync("x <- 1\n"); }; Task responceTask; using (var interaction = await session.BeginInteractionAsync()) { responceTask = interaction.RespondAsync("plot(1)\n"); } await testMrs.WaitAsync().Should().BeCompletedAsync(); await session.StopHostAsync().Should().BeCompletedAsync(20000); session.IsHostRunning.Should().BeFalse(); await responceTask.Should().BeCanceledAsync(); }