public async Task Test5() { // ARRANGE var dt = new DisposeTester(output); var dt2 = new DisposeTester(output); var dtt = dt; // ACT DelayedDisposer.AtomicExchange(ref dt, dt2); // ASSERT dtt.CheckNegative(); dt2.CheckNegative(); dt.CheckNegative(); await dtt.WaitForDisposal(); dtt.Check(); dt2.CheckNegative(); dt.CheckNegative(); Assert.Equal(dt2, dt); }
public async Task Test2() { // ARRANGE var dt = new DisposeTester(output); // ACT DelayedDisposer.SafelyDispose((IDisposable)dt); // ASSERT dt.CheckNegative(); await dt.WaitForDisposal(); dt.Check(); }
public async Task Test1() { // ARRANGE output.WriteLine("Starting timed test..."); var dt = new DisposeTester(output); // ACT output.WriteLine("Adding to safe disposer..."); DelayedDisposer.SafelyDispose(dt); // ASSERT output.WriteLine("Checking negative..."); dt.CheckNegative(); output.WriteLine("Waiting for disposal..."); await dt.WaitForDisposal(); output.WriteLine("Checking positive..."); dt.Check(); output.WriteLine("All done. Test should not hang anymore."); }