-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathElementAtOrNoneTest.cs
More file actions
41 lines (37 loc) · 1.68 KB
/
ElementAtOrNoneTest.cs
File metadata and controls
41 lines (37 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using FsCheck;
using FsCheck.Fluent;
using Funcky.FsCheck;
using static Funcky.Async.Test.Extensions.AsyncEnumerableExtensions.TestData;
namespace Funcky.Async.Test.Extensions.AsyncEnumerableExtensions;
public sealed class ElementAtOrNoneTest
{
[Theory]
[InlineData(-42)]
[InlineData(-1)]
[InlineData(0)]
[InlineData(1)]
[InlineData(42)]
public async Task ElementAtOrNoneReturnsAlwaysANoneOnAnEmptyEnumerable(int index)
{
FunctionalAssert.None(await EmptyEnumerable.ElementAtOrNoneAsync(index));
}
[Fact]
public async Task ElementAtOrNoneReturnsSomeWithinTheRangeAndNoneOutside()
{
FunctionalAssert.None(await EnumerableWithMoreThanOneItem.ElementAtOrNoneAsync(-10));
FunctionalAssert.None(await EnumerableWithMoreThanOneItem.ElementAtOrNoneAsync(-1));
FunctionalAssert.Some(await EnumerableWithMoreThanOneItem.ElementAtOrNoneAsync(0));
FunctionalAssert.Some(await EnumerableWithMoreThanOneItem.ElementAtOrNoneAsync(1));
FunctionalAssert.Some(await EnumerableWithMoreThanOneItem.ElementAtOrNoneAsync(2));
FunctionalAssert.None(await EnumerableWithMoreThanOneItem.ElementAtOrNoneAsync(3));
FunctionalAssert.None(await EnumerableWithMoreThanOneItem.ElementAtOrNoneAsync(5));
FunctionalAssert.None(await EnumerableWithMoreThanOneItem.ElementAtOrNoneAsync(10));
}
public sealed class IndexIndex
{
[FunckyProperty(Verbose = true)]
public Property BehavesIdenticalToSynchronousCounterpart(List<int> source, Index index)
=> (source.ElementAtOrNone(index) == source.ToAsyncEnumerable().ElementAtOrNoneAsync(index).Result)
.ToProperty();
}
}