Example #1
0
        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);
        }
Example #2
0
        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);
        }