public async Task Should_stop_only_successfully_started() { var startable1 = new Startable1(); var startable2 = new Startable2(); var syncThrows = new SyncThrowingStart(); var thingsToBeStarted = new IWantToRunWhenEndpointStartsAndStops[] { startable1, startable2, syncThrows }; var runner = new StartableAndStoppableRunner(thingsToBeStarted); try { await runner.Start(null); } // ReSharper disable once EmptyGeneralCatchClause catch (InvalidOperationException) { // ignored } await runner.Stop(null); Assert.True(startable1.Stopped); Assert.True(startable2.Stopped); Assert.False(syncThrows.Stopped); }
public void Should_throw_if_startable_fails_synchronously() { var startable1 = new Startable1(); var syncThrowable = new SyncThrowingStart(); var startable2 = new Startable2(); var thingsToBeStarted = new IWantToRunWhenEndpointStartsAndStops[] { startable1, syncThrowable, startable2 }; var runner = new StartableAndStoppableRunner(thingsToBeStarted); Assert.That(async() => await runner.Start(null), Throws.InvalidOperationException); Assert.True(startable1.Started); Assert.False(startable2.Started); }