Skip to content

Commit

Permalink
Fix use of sequences in BindByIndex tests
Browse files Browse the repository at this point in the history
  • Loading branch information
viceroypenguin committed Dec 27, 2022
1 parent 4696fdf commit 105848a
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 30 deletions.
42 changes: 27 additions & 15 deletions Tests/SuperLinq.Async.Test/BindByIndexTest.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace Test.Async;
using System;

namespace Test.Async;

public class BindByIndexTest
{
Expand All @@ -20,28 +22,31 @@ public async Task BindByIndexDisposesEnumerators()
[Fact]
public async Task BindByIndexInOrder()
{
var seq1 = AsyncEnumerable.Range(1, 10).AsTestingSequence();
await using var seq2 = AsyncSeq(1, 3, 5, 7, 9).AsTestingSequence();
var indexes = AsyncSeq(1, 3, 5, 7, 9);
await using var seq1 = AsyncEnumerable.Range(1, 10).AsTestingSequence();
await using var seq2 = indexes.AsTestingSequence();

await seq1.BindByIndex(seq2).AssertSequenceEqual(seq2.Select(x => x + 1));
await seq1.BindByIndex(seq2).AssertSequenceEqual(indexes.Select(x => x + 1));
}

[Fact]
public async Task BindByIndexOutOfOrder()
{
var indexes = AsyncSeq(9, 7, 5, 3, 1);
await using var seq1 = AsyncEnumerable.Range(1, 10).AsTestingSequence();
await using var seq2 = AsyncSeq(9, 7, 5, 3, 1).AsTestingSequence();
await using var seq2 = indexes.AsTestingSequence();

await seq1.BindByIndex(seq2).AssertSequenceEqual(seq2.Select(x => x + 1));
await seq1.BindByIndex(seq2).AssertSequenceEqual(indexes.Select(x => x + 1));
}

[Fact]
public async Task BindByIndexComplex()
{
var indexes = AsyncSeq(0, 1, 8, 9, 3, 4, 2);
await using var seq1 = AsyncEnumerable.Range(1, 10).AsTestingSequence();
await using var seq2 = AsyncSeq(0, 1, 8, 9, 3, 4, 2).AsTestingSequence();
await using var seq2 = indexes.AsTestingSequence();

await seq1.BindByIndex(seq2).AssertSequenceEqual(seq2.Select(x => x + 1));
await seq1.BindByIndex(seq2).AssertSequenceEqual(indexes.Select(x => x + 1));
}

[Theory]
Expand All @@ -60,28 +65,34 @@ await Assert.ThrowsAsync<ArgumentOutOfRangeException>("indices",
[Fact]
public async Task BindByIndexTransformInOrder()
{
var indexes = AsyncSeq(1, 3, 5, 7, 9);
await using var seq1 = AsyncEnumerable.Range(1, 10).AsTestingSequence();
await using var seq2 = AsyncSeq(1, 3, 5, 7, 9).AsTestingSequence();
await using var seq2 = indexes.AsTestingSequence();

await seq1.BindByIndex(seq2, (e, i) => e, i => default(int?)).AssertSequenceEqual(seq2.Select(x => (int?)(x + 1)));
await seq1.BindByIndex(seq2, (e, i) => e, i => default(int?))
.AssertSequenceEqual(indexes.Select(x => (int?)(x + 1)));
}

[Fact]
public async Task BindByIndexTransformOutOfOrder()
{
var indexes = AsyncSeq(9, 7, 5, 3, 1);
await using var seq1 = AsyncEnumerable.Range(1, 10).AsTestingSequence();
await using var seq2 = AsyncSeq(9, 7, 5, 3, 1).AsTestingSequence();
await using var seq2 = indexes.AsTestingSequence();

await seq1.BindByIndex(seq2, (e, i) => e, i => default(int?)).AssertSequenceEqual(seq2.Select(x => (int?)(x + 1)));
await seq1.BindByIndex(seq2, (e, i) => e, i => default(int?))
.AssertSequenceEqual(indexes.Select(x => (int?)(x + 1)));
}

[Fact]
public async Task BindByIndexTransformComplex()
{
var indexes = AsyncSeq(0, 1, 8, 9, 3, 4, 2);
await using var seq1 = AsyncEnumerable.Range(1, 10).AsTestingSequence();
await using var seq2 = AsyncSeq(0, 1, 8, 9, 3, 4, 2).AsTestingSequence();
await using var seq2 = indexes.AsTestingSequence();

await seq1.BindByIndex(seq2, (e, i) => e, i => default(int?)).AssertSequenceEqual(seq2.Select(x => (int?)(x + 1)));
await seq1.BindByIndex(seq2, (e, i) => e, i => default(int?))
.AssertSequenceEqual(indexes.Select(x => (int?)(x + 1)));
}

[Fact]
Expand All @@ -90,7 +101,8 @@ public async Task BindByIndexTransformInvalidIndex()
await using var seq1 = AsyncEnumerable.Range(1, 10).AsTestingSequence();
await using var seq2 = AsyncSeq(1, 10, 3, 30).AsTestingSequence();

await seq1.BindByIndex(seq2, (e, i) => e, i => default(int?)).AssertSequenceEqual(2, null, 4, null);
await seq1.BindByIndex(seq2, (e, i) => e, i => default(int?))
.AssertSequenceEqual(2, null, 4, null);
}

[Fact]
Expand Down
42 changes: 27 additions & 15 deletions Tests/SuperLinq.Test/BindByIndexTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,28 +20,31 @@ public void BindByIndexDisposesEnumerators()
[Fact]
public void BindByIndexInOrder()
{
var indexes = Seq(1, 3, 5, 7, 9);
using var seq1 = Enumerable.Range(1, 10).AsTestingSequence();
using var seq2 = Seq(1, 3, 5, 7, 9).AsTestingSequence();
using var seq2 = indexes.AsTestingSequence();

seq1.BindByIndex(seq2).AssertSequenceEqual(seq2.Select(x => x + 1));
seq1.BindByIndex(seq2).AssertSequenceEqual(indexes.Select(x => x + 1));
}

[Fact]
public void BindByIndexOutOfOrder()
{
var indexes = Seq(9, 7, 5, 3, 1);
using var seq1 = Enumerable.Range(1, 10).AsTestingSequence();
using var seq2 = Seq(9, 7, 5, 3, 1).AsTestingSequence();
using var seq2 = indexes.AsTestingSequence();

seq1.BindByIndex(seq2).AssertSequenceEqual(seq2.Select(x => x + 1));
seq1.BindByIndex(seq2).AssertSequenceEqual(indexes.Select(x => x + 1));
}

[Fact]
public void BindByIndexComplex()
{
var indexes = Seq(0, 1, 8, 9, 3, 4, 2);
var seq1 = Enumerable.Range(1, 10).AsTestingSequence();
var seq2 = Seq(0, 1, 8, 9, 3, 4, 2).AsTestingSequence();
var seq2 = indexes.AsTestingSequence();

seq1.BindByIndex(seq2).AssertSequenceEqual(seq2.Select(x => x + 1));
seq1.BindByIndex(seq2).AssertSequenceEqual(indexes.Select(x => x + 1));
}

[Theory]
Expand All @@ -53,34 +56,41 @@ public void BindByIndexThrowExceptionInvalidIndex(int index)
using var seq1 = Enumerable.Range(1, 10).AsTestingSequence();
using var seq2 = Seq(index).AsTestingSequence();

Assert.Throws<ArgumentOutOfRangeException>("indices", () => seq1.BindByIndex(seq2).Consume());
Assert.Throws<ArgumentOutOfRangeException>("indices", () =>
seq1.BindByIndex(seq2).Consume());
}

[Fact]
public void BindByIndexTransformInOrder()
{
var indexes = Seq(1, 3, 5, 7, 9);
using var seq1 = Enumerable.Range(1, 10).AsTestingSequence();
using var seq2 = Seq(1, 3, 5, 7, 9).AsTestingSequence();
using var seq2 = indexes.AsTestingSequence();

seq1.BindByIndex(seq2, (e, i) => e, i => default(int?)).AssertSequenceEqual(seq2.Select(x => (int?)(x + 1)));
seq1.BindByIndex(seq2, (e, i) => e, i => default(int?))
.AssertSequenceEqual(indexes.Select(x => (int?)(x + 1)));
}

[Fact]
public void BindByIndexTransformOutOfOrder()
{
var indexes = Seq(9, 7, 5, 3, 1);
using var seq1 = Enumerable.Range(1, 10).AsTestingSequence();
using var seq2 = Seq(9, 7, 5, 3, 1).AsTestingSequence();
using var seq2 = indexes.AsTestingSequence();

seq1.BindByIndex(seq2, (e, i) => e, i => default(int?)).AssertSequenceEqual(seq2.Select(x => (int?)(x + 1)));
seq1.BindByIndex(seq2, (e, i) => e, i => default(int?))
.AssertSequenceEqual(indexes.Select(x => (int?)(x + 1)));
}

[Fact]
public void BindByIndexTransformComplex()
{
var indexes = Seq(0, 1, 8, 9, 3, 4, 2);
using var seq1 = Enumerable.Range(1, 10).AsTestingSequence();
using var seq2 = Seq(0, 1, 8, 9, 3, 4, 2).AsTestingSequence();
using var seq2 = indexes.AsTestingSequence();

seq1.BindByIndex(seq2, (e, i) => e, i => default(int?)).AssertSequenceEqual(seq2.Select(x => (int?)(x + 1)));
seq1.BindByIndex(seq2, (e, i) => e, i => default(int?))
.AssertSequenceEqual(indexes.Select(x => (int?)(x + 1)));
}

[Fact]
Expand All @@ -89,7 +99,8 @@ public void BindByIndexTransformInvalidIndex()
using var seq1 = Enumerable.Range(1, 10).AsTestingSequence();
using var seq2 = Seq(1, 10, 3, 30).AsTestingSequence();

seq1.BindByIndex(seq2, (e, i) => e, i => default(int?)).AssertSequenceEqual(2, null, 4, null);
seq1.BindByIndex(seq2, (e, i) => e, i => default(int?))
.AssertSequenceEqual(2, null, 4, null);
}

[Fact]
Expand All @@ -98,6 +109,7 @@ public void BindByIndexTransformThrowExceptionNegativeIndex()
using var seq1 = Enumerable.Range(1, 10).AsTestingSequence();
using var seq2 = Seq(-1).AsTestingSequence();

Assert.Throws<ArgumentOutOfRangeException>("indices", () => seq1.BindByIndex(seq2, (e, i) => e, i => default(int?)).Consume());
Assert.Throws<ArgumentOutOfRangeException>("indices", () =>
seq1.BindByIndex(seq2, (e, i) => e, i => default(int?)).Consume());
}
}

0 comments on commit 105848a

Please sign in to comment.