Add IUniTaskAsyncEnumerable.Queue

This commit is contained in:
neuecc
2020-05-18 11:30:04 +09:00
parent 49ba57f20a
commit ec0a8f5a8b
3 changed files with 168 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
using Cysharp.Threading.Tasks;
using Cysharp.Threading.Tasks.Linq;
using FluentAssertions;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Xunit;
namespace NetCoreTests.Linq
{
public class QueueTest
{
[Fact]
public async Task Q()
{
var rp = new AsyncReactiveProperty<int>(100);
var l = new List<int>();
await rp.Take(10).Queue().ForEachAsync(x =>
{
rp.Value += 10;
l.Add(x);
});
l.Should().BeEquivalentTo(100, 110, 120, 130, 140, 150, 160, 170, 180, 190);
}
}
}

View File

@@ -0,0 +1,44 @@
using Cysharp.Threading.Tasks;
using Cysharp.Threading.Tasks.Linq;
using FluentAssertions;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Xunit;
namespace NetCoreTests.Linq
{
public class TakeInfinityTest
{
[Fact]
public async Task Take()
{
var rp = new AsyncReactiveProperty<int>(1);
var xs = rp.Take(5).ToArrayAsync();
rp.Value = 2;
rp.Value = 3;
rp.Value = 4;
rp.Value = 5;
(await xs).Should().BeEquivalentTo(1, 2, 3, 4, 5);
}
[Fact]
public async Task TakeWhile()
{
var rp = new AsyncReactiveProperty<int>(1);
var xs = rp.TakeWhile(x => x != 5).ToArrayAsync();
rp.Value = 2;
rp.Value = 3;
rp.Value = 4;
rp.Value = 5;
(await xs).Should().BeEquivalentTo(1, 2, 3, 4);
}
}
}