本文整理汇总了C#中TestScheduler.ScheduleAbsolute方法的典型用法代码示例。如果您正苦于以下问题:C# TestScheduler.ScheduleAbsolute方法的具体用法?C# TestScheduler.ScheduleAbsolute怎么用?C# TestScheduler.ScheduleAbsolute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TestScheduler
的用法示例。
在下文中一共展示了TestScheduler.ScheduleAbsolute方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Await_Connectable
public void Await_Connectable()
{
var scheduler = new TestScheduler();
var s = default(long);
var xs = Observable.Create<int>(observer =>
{
s = scheduler.Clock;
return StableCompositeDisposable.Create(
scheduler.ScheduleAbsolute(250, () => { observer.OnNext(42); }),
scheduler.ScheduleAbsolute(260, () => { observer.OnCompleted(); })
);
});
var ys = xs.Publish();
var awaiter = default(AsyncSubject<int>);
var result = default(int);
var t = long.MaxValue;
scheduler.ScheduleAbsolute(100, () => awaiter = ys.GetAwaiter());
scheduler.ScheduleAbsolute(200, () => awaiter.OnCompleted(() => { t = scheduler.Clock; result = awaiter.GetResult(); }));
scheduler.Start();
Assert.AreEqual(100, s);
Assert.AreEqual(260, t);
Assert.AreEqual(42, result);
}
示例2: Await
public void Await()
{
var scheduler = new TestScheduler();
var xs = scheduler.CreateHotObservable(
OnNext(20, -1),
OnNext(150, 0),
OnNext(220, 1),
OnNext(290, 2),
OnNext(340, 3),
OnCompleted<int>(410)
);
var awaiter = default(AsyncSubject<int>);
var result = default(int);
var t = long.MaxValue;
scheduler.ScheduleAbsolute(100, () => awaiter = xs.GetAwaiter());
scheduler.ScheduleAbsolute(200, () => awaiter.OnCompleted(() => { t = scheduler.Clock; result = awaiter.GetResult(); }));
scheduler.Start();
Assert.AreEqual(410, t);
Assert.AreEqual(3, result);
xs.Subscriptions.AssertEqual(
Subscribe(100)
);
}
示例3: Infinite
public void Infinite()
{
var scheduler = new TestScheduler();
var xs = scheduler.CreateHotObservable(
OnNext(70, 1),
OnNext(110, 2),
OnNext(220, 3),
OnNext(270, 4),
OnNext(340, 5),
OnNext(410, 6),
OnNext(520, 7),
OnNext(630, 8),
OnNext(710, 9),
OnNext(870, 10),
OnNext(940, 11),
OnNext(1020, 12)
);
var subject = default(AsyncSubject<int>);
var subscription = default(IDisposable);
var results1 = scheduler.CreateObserver<int>();
var subscription1 = default(IDisposable);
var results2 = scheduler.CreateObserver<int>();
var subscription2 = default(IDisposable);
var results3 = scheduler.CreateObserver<int>();
var subscription3 = default(IDisposable);
scheduler.ScheduleAbsolute(100, () => subject = new AsyncSubject<int>());
scheduler.ScheduleAbsolute(200, () => subscription = xs.Subscribe(subject));
scheduler.ScheduleAbsolute(1000, () => subscription.Dispose());
scheduler.ScheduleAbsolute(300, () => subscription1 = subject.Subscribe(results1));
scheduler.ScheduleAbsolute(400, () => subscription2 = subject.Subscribe(results2));
scheduler.ScheduleAbsolute(900, () => subscription3 = subject.Subscribe(results3));
scheduler.ScheduleAbsolute(600, () => subscription1.Dispose());
scheduler.ScheduleAbsolute(700, () => subscription2.Dispose());
scheduler.ScheduleAbsolute(800, () => subscription1.Dispose());
scheduler.ScheduleAbsolute(950, () => subscription3.Dispose());
scheduler.Start();
results1.Messages.AssertEqual(
);
results2.Messages.AssertEqual(
);
results3.Messages.AssertEqual(
);
}
示例4: TaskToObservable_NonVoid_Complete_BeforeCreate
public void TaskToObservable_NonVoid_Complete_BeforeCreate()
{
var taskScheduler = new TestTaskScheduler();
var taskFactory = new TaskFactory(taskScheduler);
var res = default(ITestableObserver<int>);
taskFactory.StartNew(() =>
{
var scheduler = new TestScheduler();
var taskSource = new TaskCompletionSource<int>();
taskSource.Task.ContinueWith(t => { var e = t.Exception; });
scheduler.ScheduleAbsolute(10, () => taskSource.SetResult(42));
res = scheduler.Start(() =>
taskSource.Task.ToObservable()
);
});
res.Messages.AssertEqual(
OnNext(200, 42),
OnCompleted<int>(200)
);
}
示例5: Multicast_Hot_1
public void Multicast_Hot_1()
{
var scheduler = new TestScheduler();
var s = new Subject<int>();
var xs = scheduler.CreateHotObservable(
OnNext(40, 0),
OnNext(90, 1),
OnNext(150, 2),
OnNext(210, 3),
OnNext(240, 4),
OnNext(270, 5),
OnNext(330, 6),
OnNext(340, 7),
OnCompleted<int>(390)
);
var c = default(IConnectableObservable<int>);
var o = scheduler.CreateObserver<int>();
var d1 = default(IDisposable);
var d2 = default(IDisposable);
scheduler.ScheduleAbsolute(50, () => c = xs.Multicast(s));
scheduler.ScheduleAbsolute(100, () => d1 = c.Subscribe(o));
scheduler.ScheduleAbsolute(200, () => d2 = c.Connect());
scheduler.ScheduleAbsolute(300, () => d1.Dispose());
scheduler.Start();
o.Messages.AssertEqual(
OnNext(210, 3),
OnNext(240, 4),
OnNext(270, 5)
);
xs.Subscriptions.AssertEqual(
Subscribe(200, 390)
);
}
示例6: Return_DisposedAfterNext
public void Return_DisposedAfterNext()
{
var scheduler = new TestScheduler();
var d = new SerialDisposable();
var xs = Observable.Return(42, scheduler);
var res = scheduler.CreateObserver<int>();
scheduler.ScheduleAbsolute(100, () =>
d.Disposable = xs.Subscribe(
x =>
{
d.Dispose();
res.OnNext(x);
},
res.OnError,
res.OnCompleted
)
);
scheduler.Start();
res.Messages.AssertEqual(
OnNext(101, 42)
);
}
示例7: PreComplete
public void PreComplete()
{
var scheduler = new TestScheduler();
var s = new Subject<int>();
scheduler.ScheduleAbsolute(90, () => s.OnCompleted());
var results = scheduler.Start(() => s);
results.Messages.AssertEqual(
OnCompleted<int>(200)
);
}
示例8: Dispose
public void Dispose()
{
var scheduler = new TestScheduler();
var s = new Subject<int>();
scheduler.ScheduleAbsolute(300, () => s.OnNext(1));
scheduler.ScheduleAbsolute(998, () => s.OnNext(2));
scheduler.ScheduleAbsolute(999, () => s.OnNext(3));
scheduler.ScheduleAbsolute(1001, () => s.OnNext(3));
var results = scheduler.Start(() => s);
results.Messages.AssertEqual(
OnNext(300, 1),
OnNext(998, 2),
OnNext(999, 3)
);
}
示例9: Bug_1381
public void Bug_1381()
{
var scheduler = new TestScheduler();
var xs = scheduler.CreateHotObservable(
OnNext( 90, 1),
OnNext(110, 2),
OnNext(250, 3),
OnNext(270, 4),
OnNext(280, 5),
OnNext(301, 6),
OnNext(302, 7),
OnNext(400, 8),
OnNext(401, 9),
OnNext(510, 10)
);
var results = scheduler.CreateObserver<int>();
var ys = default(IConnectableObservable<int>);
var connection = default(IDisposable);
var subscription = default(IDisposable);
scheduler.ScheduleAbsolute(100, () => ys = xs.Multicast(new ReplaySubject<int>(scheduler)));
scheduler.ScheduleAbsolute(200, () => connection = ys.Connect());
scheduler.ScheduleAbsolute(300, () => subscription = ys.Subscribe(results));
scheduler.ScheduleAbsolute(500, () => subscription.Dispose());
scheduler.ScheduleAbsolute(600, () => connection.Dispose());
scheduler.Start();
results.Messages.AssertEqual(
OnNext(301, 3),
OnNext(302, 4),
OnNext(303, 5),
OnNext(304, 6),
OnNext(305, 7),
OnNext(401, 8),
OnNext(402, 9)
);
xs.Subscriptions.AssertEqual(
Subscribe(200, 600)
);
}
示例10: RunAsync_Connectable_Cancel
public void RunAsync_Connectable_Cancel()
{
var cts = new CancellationTokenSource();
var scheduler = new TestScheduler();
var s = default(long);
var d = default(long);
var xs = Observable.Create<int>(observer =>
{
s = scheduler.Clock;
return StableCompositeDisposable.Create(
scheduler.ScheduleAbsolute(250, () => { observer.OnNext(42); }),
scheduler.ScheduleAbsolute(260, () => { observer.OnCompleted(); }),
Disposable.Create(() => { d = scheduler.Clock; })
);
});
var ys = xs.Publish();
var awaiter = default(AsyncSubject<int>);
var result = default(int);
var t = long.MaxValue;
scheduler.ScheduleAbsolute(100, () => awaiter = ys.RunAsync(cts.Token));
scheduler.ScheduleAbsolute(200, () => awaiter.OnCompleted(() =>
{
t = scheduler.Clock;
ReactiveAssert.Throws<OperationCanceledException>(() =>
{
result = awaiter.GetResult();
});
}));
scheduler.ScheduleAbsolute(210, () => cts.Cancel());
scheduler.Start();
Assert.AreEqual(100, s);
Assert.AreEqual(210, d);
Assert.AreEqual(210, t);
}
示例11: SetupTranscodingWorkWithIncrementalDuration
private static void SetupTranscodingWorkWithIncrementalDuration(TestScheduler scheduler, IFileNotification[] fileNotification)
{
var i = 0;
foreach (var f in fileNotification)
{
i++;
var j = i;
Mock.Get(f).Setup(ff => ff.Accept(It.IsAny<CancellationToken>(), It.IsAny<IFileSynchronizerVisitor>()))
.Returns(() =>
{
var completionSource = new TaskCompletionSource<bool>();
scheduler.ScheduleAbsolute(scheduler.Now.AddTicks(j).Ticks, () => completionSource.SetResult(true));
return completionSource.Task;
});
}
}
示例12: TaskToObservable_NonVoid_Canceled_BeforeDispose
public void TaskToObservable_NonVoid_Canceled_BeforeDispose()
{
var taskScheduler = new TestTaskScheduler();
var taskFactory = new TaskFactory(taskScheduler);
var res = default(ITestableObserver<int>);
taskFactory.StartNew(() =>
{
var scheduler = new TestScheduler();
var taskSource = new TaskCompletionSource<int>();
taskSource.Task.ContinueWith(t => { var e = t.Exception; });
scheduler.ScheduleAbsolute(300, () => taskSource.SetCanceled());
res = scheduler.Start(() =>
taskSource.Task.ToObservable()
);
});
res.Messages.AssertEqual(
OnError<int>(300, ex => ex is TaskCanceledException)
);
}
示例13: ReplaySubjectDiesOut
public void ReplaySubjectDiesOut()
{
//
// Tests v1.x behavior as documented in ReplaySubject.cs (Subscribe method).
//
var scheduler = new TestScheduler();
var xs = scheduler.CreateHotObservable(
OnNext(70, 1),
OnNext(110, 2),
OnNext(220, 3),
OnNext(270, 4),
OnNext(340, 5),
OnNext(410, 6),
OnNext(520, 7),
OnCompleted<int>(580)
);
var subject = default(ReplaySubject<int>);
var results1 = scheduler.CreateObserver<int>();
var results2 = scheduler.CreateObserver<int>();
var results3 = scheduler.CreateObserver<int>();
var results4 = scheduler.CreateObserver<int>();
scheduler.ScheduleAbsolute(100, () => subject = new ReplaySubject<int>(int.MaxValue, TimeSpan.FromTicks(100), scheduler));
scheduler.ScheduleAbsolute(200, () => xs.Subscribe(subject));
scheduler.ScheduleAbsolute(300, () => subject.Subscribe(results1));
scheduler.ScheduleAbsolute(400, () => subject.Subscribe(results2));
scheduler.ScheduleAbsolute(600, () => subject.Subscribe(results3));
scheduler.ScheduleAbsolute(900, () => subject.Subscribe(results4));
scheduler.Start();
results1.Messages.AssertEqual(
OnNext(301, 3),
OnNext(302, 4),
OnNext(341, 5),
OnNext(411, 6),
OnNext(521, 7),
OnCompleted<int>(581)
);
results2.Messages.AssertEqual(
OnNext(401, 5),
OnNext(411, 6),
OnNext(521, 7),
OnCompleted<int>(581)
);
results3.Messages.AssertEqual(
OnNext(601, 7),
OnCompleted<int>(602)
);
results4.Messages.AssertEqual(
OnCompleted<int>(901)
);
}
示例14: Subscribe_CT_CancelDuringCallback
public void Subscribe_CT_CancelDuringCallback()
{
var scheduler = new TestScheduler();
var xs = scheduler.CreateHotObservable(
OnNext(210, 1),
OnNext(220, 2),
OnNext(230, 3),
OnCompleted<int>(240)
);
var cts = new CancellationTokenSource();
var n = 0;
scheduler.ScheduleAbsolute(200, () => xs.Subscribe(x =>
{
n++;
if (x == 2)
cts.Cancel();
}, cts.Token));
scheduler.Start();
Assert.AreEqual(2, n);
xs.Subscriptions.AssertEqual(
Subscribe(200, 220)
);
}
示例15: ConnectableObservable_MultipleNonOverlappedConnections
public void ConnectableObservable_MultipleNonOverlappedConnections()
{
var scheduler = new TestScheduler();
var xs = scheduler.CreateHotObservable<int>(
OnNext(210, 1),
OnNext(220, 2),
OnNext(230, 3),
OnNext(240, 4),
OnNext(250, 5),
OnNext(260, 6),
OnNext(270, 7),
OnNext(280, 8),
OnNext(290, 9),
OnCompleted<int>(300)
);
var subject = new Subject<int>();
var conn = xs.Multicast(subject);
var c1 = default(IDisposable);
scheduler.ScheduleAbsolute(225, () => { c1 = conn.Connect(); });
scheduler.ScheduleAbsolute(241, () => { c1.Dispose(); });
scheduler.ScheduleAbsolute(245, () => { c1.Dispose(); }); // idempotency test
scheduler.ScheduleAbsolute(251, () => { c1.Dispose(); }); // idempotency test
scheduler.ScheduleAbsolute(260, () => { c1.Dispose(); }); // idempotency test
var c2 = default(IDisposable);
scheduler.ScheduleAbsolute(249, () => { c2 = conn.Connect(); });
scheduler.ScheduleAbsolute(255, () => { c2.Dispose(); });
scheduler.ScheduleAbsolute(265, () => { c2.Dispose(); }); // idempotency test
scheduler.ScheduleAbsolute(280, () => { c2.Dispose(); }); // idempotency test
var c3 = default(IDisposable);
scheduler.ScheduleAbsolute(275, () => { c3 = conn.Connect(); });
scheduler.ScheduleAbsolute(295, () => { c3.Dispose(); });
var res = scheduler.Start(() => conn);
res.Messages.AssertEqual(
OnNext(230, 3),
OnNext(240, 4),
OnNext(250, 5),
OnNext(280, 8),
OnNext(290, 9)
);
xs.Subscriptions.AssertEqual(
Subscribe(225, 241),
Subscribe(249, 255),
Subscribe(275, 295)
);
}