mirror of
https://github.com/Cysharp/R3.git
synced 2026-10-22 09:21:41 +08:00
103 lines
2.6 KiB
C#
103 lines
2.6 KiB
C#
namespace R3.Tests.FactoryTests;
|
|
|
|
public class TimerFrameTest
|
|
{
|
|
|
|
[Fact]
|
|
public void TimerSingle()
|
|
{
|
|
{
|
|
var fakeTime = new FakeFrameProvider();
|
|
var list = Observable.TimerFrame(0, fakeTime).ToLiveList();
|
|
fakeTime.Advance(1);
|
|
list.AssertIsCompleted();
|
|
list.AssertEqual([Unit.Default]);
|
|
}
|
|
{
|
|
var fakeTime = new FakeFrameProvider();
|
|
var list = Observable.TimerFrame(1, fakeTime).ToLiveList();
|
|
fakeTime.Advance(1);
|
|
list.AssertIsCompleted();
|
|
list.AssertEqual([Unit.Default]);
|
|
}
|
|
{
|
|
var fakeTime = new FakeFrameProvider();
|
|
var list = Observable.TimerFrame(2, fakeTime).ToLiveList();
|
|
fakeTime.Advance(2);
|
|
list.AssertIsCompleted();
|
|
list.AssertEqual([Unit.Default]);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void TimerSingle2()
|
|
{
|
|
var fakeTime = new FakeFrameProvider();
|
|
|
|
var list = Observable.TimerFrame(5, fakeTime).ToLiveList();
|
|
|
|
fakeTime.Advance(4);
|
|
list.AssertIsNotCompleted();
|
|
|
|
fakeTime.Advance(1);
|
|
list.AssertIsCompleted();
|
|
list.AssertEqual(new[] { Unit.Default });
|
|
}
|
|
|
|
[Fact]
|
|
public void TimerMulti()
|
|
{
|
|
var cts = new CancellationTokenSource();
|
|
var fakeTime = new FakeFrameProvider();
|
|
|
|
var list = Observable.TimerFrame(5, 8, fakeTime, cts.Token).ToLiveList();
|
|
|
|
fakeTime.Advance(4);
|
|
list.AssertIsNotCompleted();
|
|
|
|
fakeTime.Advance(1);
|
|
list.AssertIsNotCompleted();
|
|
list.AssertEqual([Unit.Default]);
|
|
|
|
fakeTime.Advance(7);
|
|
list.AssertEqual([Unit.Default]);
|
|
|
|
fakeTime.Advance(1);
|
|
list.AssertEqual([Unit.Default, Unit.Default]);
|
|
|
|
fakeTime.Advance(8);
|
|
list.AssertEqual([Unit.Default, Unit.Default, Unit.Default]);
|
|
|
|
cts.Cancel();
|
|
list.AssertIsCompleted();
|
|
}
|
|
|
|
[Fact]
|
|
public void Interval()
|
|
{
|
|
var cts = new CancellationTokenSource();
|
|
var fakeTime = new FakeFrameProvider();
|
|
|
|
var list = Observable.IntervalFrame(5, fakeTime, cts.Token).ToLiveList();
|
|
|
|
fakeTime.Advance(4);
|
|
list.AssertIsNotCompleted();
|
|
|
|
fakeTime.Advance(1);
|
|
list.AssertIsNotCompleted();
|
|
list.AssertEqual([Unit.Default]);
|
|
|
|
fakeTime.Advance(4);
|
|
list.AssertEqual([Unit.Default]);
|
|
|
|
fakeTime.Advance(1);
|
|
list.AssertEqual([Unit.Default, Unit.Default]);
|
|
|
|
fakeTime.Advance(5);
|
|
list.AssertEqual([Unit.Default, Unit.Default, Unit.Default]);
|
|
|
|
cts.Cancel();
|
|
list.AssertIsCompleted();
|
|
}
|
|
}
|