private static void ChangeToNeighboringState(ManualEventQueue manualQueue) // Running --> Suspended { AppStateChangedEvent.Critical criticalEvent = null; var subscriber = DelegateEventHandler.On <AppStateChangedEvent.Critical>( e => { criticalEvent = e; }); TestApp.MainEventQueue.Subscribers.Add(subscriber); // immediately changes state, using a critical event TestApp.MoveToState(AppState.Suspended); Assert.AreEqual(AppState.Suspended, TestApp.CurrentState); Assert.NotNull(criticalEvent); Assert.AreEqual(AppState.Running, criticalEvent.OldState); Assert.AreEqual(AppState.Suspended, criticalEvent.NewState); // followed by a regular event Assert.True(manualQueue.HandleNext(out var evnt)); var regularEvent = (AppStateChangedEvent.Regular)evnt; Assert.AreEqual(AppState.Suspended, regularEvent.CurrentState); TestApp.MainEventQueue.Subscribers.Remove(subscriber); }
private static void ChangeToSameState(ManualEventQueue manualQueue) { AppStateChangedEvent.Critical criticalEvent = null; var subscriber = DelegateEventHandler.On <AppStateChangedEvent.Critical>( e => { criticalEvent = e; }); TestApp.MainEventQueue.Subscribers.Add(subscriber); var currentState = TestApp.CurrentState; TestApp.MoveToState(currentState); Assert.AreEqual(currentState, TestApp.CurrentState); // no state change Assert.Null(criticalEvent); // no critical event Assert.False(manualQueue.HandleNext()); // no regular event TestApp.MainEventQueue.Subscribers.Remove(subscriber); }