Files
R3/tests/R3.Tests/OperatorTests/SelectTest.cs
2023-12-24 20:35:53 +09:00

90 lines
2.0 KiB
C#

namespace R3.Tests.OperatorTests;
public class SelectTest
{
[Fact]
public void Select()
{
var subject = new Subject<int>();
using var list = subject.Select(x => x * 2).ToLiveList();
subject.OnNext(10);
list.AssertEqual([20]);
subject.OnNext(20);
list.AssertEqual([20, 40]);
subject.OnNext(40);
list.AssertEqual([20, 40, 80]);
subject.OnCompleted();
list.AssertIsCompleted();
}
// WhereSelect
[Fact]
public void WhereSelect()
{
var subject = new Subject<int>();
using var list = subject.Where(x => x % 2 == 0).Select(x => x * 2).ToLiveList();
subject.OnNext(10);
list.AssertEqual([20]);
subject.OnNext(11);
list.AssertEqual([20]);
subject.OnNext(20);
list.AssertEqual([20, 40]);
subject.OnNext(40);
list.AssertEqual([20, 40, 80]);
subject.OnNext(99);
list.AssertEqual([20, 40, 80]);
subject.OnCompleted();
list.AssertIsCompleted();
}
// SelectWithIndex
[Fact]
public void SelectWithIndex()
{
var subject = new Subject<int>();
using var list = subject.Select((x, i) => x * 2 + i).ToLiveList();
subject.OnNext(10);
list.AssertEqual([20]);
subject.OnNext(20);
list.AssertEqual([20, 41]);
subject.OnNext(40);
list.AssertEqual([20, 41, 82]);
subject.OnCompleted();
list.AssertIsCompleted();
}
// Select State
[Fact]
public void SelectState()
{
var subject = new Subject<int>();
using var list = subject.Select("a", (x, state) => x * 2 + state).ToLiveList();
subject.OnNext(10);
list.AssertEqual(["20a"]);
subject.OnNext(20);
list.AssertEqual(["20a", "40a"]);
subject.OnNext(40);
list.AssertEqual(["20a", "40a", "80a"]);
subject.OnCompleted();
list.AssertIsCompleted();
}
}