mirror of
https://github.com/Cysharp/R3.git
synced 2026-10-26 11:40:33 +08:00
83 lines
1.9 KiB
C#
83 lines
1.9 KiB
C#
using System;
|
|
using System.Reactive.Linq;
|
|
using Xunit.Sdk;
|
|
|
|
namespace R3.Tests.OperatorTests;
|
|
|
|
public class SkipTest
|
|
{
|
|
[Fact]
|
|
public async Task Skip()
|
|
{
|
|
var xs = await Observable.Range(1, 10).Skip(3).ToArrayAsync();
|
|
|
|
xs.Should().Equal([4, 5, 6, 7, 8, 9, 10]);
|
|
|
|
// skip zero
|
|
var ys = await Observable.Range(1, 10).Skip(0).ToArrayAsync();
|
|
ys.Should().Equal([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
|
}
|
|
|
|
[Fact]
|
|
public void SkipTime()
|
|
{
|
|
var timeProvider = new FakeTimeProvider();
|
|
|
|
var publisher = new Subject<int>();
|
|
var list = publisher.Skip(TimeSpan.FromSeconds(3), timeProvider).ToLiveList();
|
|
|
|
publisher.OnNext(1);
|
|
publisher.OnNext(10);
|
|
publisher.OnNext(100);
|
|
list.AssertEqual([]);
|
|
|
|
timeProvider.Advance(TimeSpan.FromSeconds(2));
|
|
|
|
publisher.OnNext(1000);
|
|
publisher.OnNext(10000);
|
|
list.AssertEqual([]);
|
|
|
|
timeProvider.Advance(TimeSpan.FromSeconds(1));
|
|
|
|
publisher.OnNext(2);
|
|
publisher.OnNext(20);
|
|
publisher.OnNext(200);
|
|
|
|
list.AssertEqual([2, 20, 200]);
|
|
|
|
publisher.OnCompleted();
|
|
list.AssertIsCompleted();
|
|
}
|
|
|
|
[Fact]
|
|
public void SkipFrame()
|
|
{
|
|
var frameProvider = new FakeFrameProvider();
|
|
|
|
var publisher = new Subject<int>();
|
|
var list = publisher.SkipFrame(3, frameProvider).ToLiveList();
|
|
|
|
publisher.OnNext(1);
|
|
publisher.OnNext(10);
|
|
publisher.OnNext(100);
|
|
list.AssertEqual([]);
|
|
|
|
frameProvider.Advance(2);
|
|
|
|
publisher.OnNext(1000);
|
|
publisher.OnNext(10000);
|
|
list.AssertEqual([]);
|
|
|
|
frameProvider.Advance(1);
|
|
|
|
publisher.OnNext(2);
|
|
publisher.OnNext(20);
|
|
publisher.OnNext(200);
|
|
|
|
list.AssertEqual([2, 20, 200]);
|
|
|
|
publisher.OnCompleted();
|
|
list.AssertIsCompleted();
|
|
}
|
|
}
|