public async ValueTask AsAsyncValueEnumerable_With_ValidData_Must_Succeed(int[] source) { // Arrange var wrapped = Wrap .AsValueEnumerable(source); // Act var result = ValueEnumerableExtensions .AsAsyncValueEnumerable <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped); // Assert var enumerator = result.GetAsyncEnumerator(); await using (enumerator.ConfigureAwait(false)) { var index = 0; while (true) { var isResultCompleted = !await enumerator.MoveNextAsync(); var isSourceCompleted = index == source.Length; if (isResultCompleted && isSourceCompleted) { return; } if (isResultCompleted) { throw new Exception("'result' is shorter."); } if (isSourceCompleted) { throw new Exception("'result' is longer."); } if (!EqualityComparer <int> .Default.Equals(enumerator.Current, source[index])) { throw new Exception($"Items are not equal at index '{index}'."); } index++; } } // TODO: figure out why this doesn't work... //_ = result.Must() // .BeAsyncEnumerableOf<int>() // .BeEqualTo(source); }
public async ValueTask AsAsyncValueEnumerable_With_ToArrayAsync_Must_Succeed(int[] source) { // Arrange var wrapped = Wrap .AsValueEnumerable(source); var expected = Enumerable .ToArray(source); // Act var result = await ValueEnumerableExtensions .AsAsyncValueEnumerable <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped) .ToArrayAsync(); // Assert _ = result.Must() .BeArrayOf <int>() .BeEqualTo(expected); }