-
Notifications
You must be signed in to change notification settings - Fork 105
/
Copy pathJsonRpcTestBase.cs
45 lines (39 loc) · 1.59 KB
/
JsonRpcTestBase.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Diagnostics;
using System.Reactive;
using System.Reactive.Disposables;
using System.Threading;
using System.Threading.Tasks;
namespace OmniSharp.Extensions.JsonRpc.Testing
{
public abstract class JsonRpcTestBase : IDisposable
{
private readonly CancellationTokenSource _cancellationTokenSource;
public JsonRpcTestBase(JsonRpcTestOptions testOptions)
{
TestOptions = testOptions;
Disposable = new CompositeDisposable { testOptions.ClientLoggerFactory, testOptions.ServerLoggerFactory };
_cancellationTokenSource = new CancellationTokenSource();
if (!Debugger.IsAttached)
{
_cancellationTokenSource.CancelAfter(testOptions.CancellationTimeout);
}
ClientEvents = new Settler(TestOptions, CancellationToken);
ServerEvents = new Settler(TestOptions, CancellationToken);
Events = new AggregateSettler(ClientEvents, ServerEvents);
}
protected CompositeDisposable Disposable { get; }
public ISettler ClientEvents { get; }
public ISettler ServerEvents { get; }
public ISettler Events { get; }
public JsonRpcTestOptions TestOptions { get; }
public CancellationToken CancellationToken => _cancellationTokenSource.Token;
public Task SettleNext() => Events.SettleNext();
public IObservable<Unit> Settle() => Events.Settle();
public void Dispose()
{
_cancellationTokenSource?.Dispose();
Disposable?.Dispose();
}
}
}