|
|
@@ -121,30 +121,30 @@ namespace Tests
|
|
|
[TestMethod]
|
|
|
public void DisposesUponError()
|
|
|
{
|
|
|
- var disposed = false;
|
|
|
+ var disposed = new TaskCompletionSource<bool>();
|
|
|
|
|
|
var xs = new[] { 1, 2, 3 }.WithDispose(() =>
|
|
|
{
|
|
|
- disposed = true;
|
|
|
+ disposed.SetResult(true);
|
|
|
}).ToAsyncEnumerable();
|
|
|
|
|
|
var ex = new Exception("Bang!");
|
|
|
var ys = xs.Select(x => { if (x == 1) throw ex; return x; });
|
|
|
|
|
|
var e = ys.GetEnumerator();
|
|
|
- AssertThrows<Exception>(() => e.MoveNext());
|
|
|
+ AssertThrows<Exception>(() => e.MoveNext().Wait());
|
|
|
|
|
|
- Assert.IsTrue(disposed);
|
|
|
+ Assert.IsTrue(disposed.Task.Result);
|
|
|
}
|
|
|
|
|
|
[TestMethod]
|
|
|
public void CorrectCancel()
|
|
|
{
|
|
|
- var disposed = false;
|
|
|
+ var disposed = new TaskCompletionSource<bool>();
|
|
|
|
|
|
var xs = new[] { 1, 2, 3 }.WithDispose(() =>
|
|
|
{
|
|
|
- disposed = true;
|
|
|
+ disposed.SetResult(true);
|
|
|
}).ToAsyncEnumerable();
|
|
|
|
|
|
var ys = xs.Select(x => x + 1).Where(x => true);
|
|
|
@@ -171,7 +171,7 @@ namespace Tests
|
|
|
// it. This design is chosen because cancelling a MoveNext call leaves
|
|
|
// the enumerator in an indeterminate state. Further interactions with
|
|
|
// it should be forbidden.
|
|
|
- Assert.IsTrue(disposed);
|
|
|
+ Assert.IsTrue(disposed.Task.Result);
|
|
|
}
|
|
|
|
|
|
Assert.IsFalse(e.MoveNext().Result);
|