Пример #1
0
        public void VariousOperations_PublishCorrectEvents()
        {
            ParameterizedTest
            .TestCase <Action <ScreenLifecycleOperations>, IEvent>(x => x.Initialize(), ScreenEvents.Initialize())
            .TestCase(x => x.Initialize(new Subject()), ScreenEvents.Initialize <Subject>())
            .TestCase(x => x.Activate(), ScreenEvents.Activate)
            .TestCase(x => x.Deactivate(), ScreenEvents.Deactivate)
            .TestCase(x => x.RequestClose(), ScreenEvents.RequestClose)
            .TestCase(x => x.Close(), ScreenEvents.Close)
            .Run((lifecycleAction, expectedEvent) => {
                List <IEvent> actualEvents    = new List <IEvent>();
                TestScreen screen             = new TestScreen();
                ScreenLifecycleOperations ops = new ScreenLifecycleOperations(Aggregator, screen);

                AddEventHandlerForAllEvents(
                    screen,
                    handlerAction: actualEvents.Add,
                    includeExceptionOccured: true
                    );

                lifecycleAction(ops);

                IEvent actualEvent = actualEvents.SingleOrDefault();
                Assert.AreEqual(expectedEvent, actualEvent);
            });
        }
Пример #2
0
 public InitializableScreen(EventAggregator aggregator)
     : base(aggregator)
 {
     Lifecycle.RegisterHandler(
         ScreenEvents.Initialize(),
         args => InitializeWasCalled = true
         );
 }
Пример #3
0
 public LocatableScreen(EventAggregator aggregator)
     : base(aggregator)
 {
     Lifecycle.RegisterHandler(
         ScreenEvents.Initialize <BaseSubject>(),
         args => Subject = args.Subject
         );
 }
 protected void AttachEventHandlers()
 {
     AttachHandler(ScreenEvents.Initialize());
     AttachHandler(ScreenEvents.Initialize <TestSubject>());
     AttachHandler(ScreenEvents.Activate);
     AttachHandler(ScreenEvents.Deactivate);
     AttachHandler(ScreenEvents.RequestClose);
     AttachHandler(ScreenEvents.Close);
     AttachHandler(ScreenEvents.LifecycleExceptionOccured);
 }
Пример #5
0
            public ScreenMock(EventAggregator aggregator)
                : base(aggregator)
            {
                RequestCloseResult = true;

                Lifecycle.RegisterHandler(ScreenEvents.Initialize(), Initialize);
                Lifecycle.RegisterHandler(ScreenEvents.Activate, OnActivate);
                Lifecycle.RegisterHandler(ScreenEvents.Deactivate, OnDeactivate);
                Lifecycle.RegisterHandler(ScreenEvents.RequestClose, OnRequestClose);
                Lifecycle.RegisterHandler(ScreenEvents.Close, OnClose);
            }
Пример #6
0
        public void VariousOperations_WhenHandlerThrowsException_RaiseLifecycleExceptionOccuredEventAndThrowLifecycleException()
        {
            ParameterizedTest
            .TestCase <Action <ScreenLifecycleOperations>, IEvent>(x => x.Initialize(), ScreenEvents.Initialize())
            .TestCase(x => x.Initialize(new Subject()), ScreenEvents.Initialize <Subject>())
            .TestCase(x => x.Activate(), ScreenEvents.Activate)
            .TestCase(x => x.Deactivate(), ScreenEvents.Deactivate)
            .TestCase(x => x.RequestClose(), ScreenEvents.RequestClose)
            .TestCase(x => x.Close(), ScreenEvents.Close)
            .Run((lifecycleAction, expectedEvent) => {
                List <IEvent> actualEvents    = new List <IEvent>();
                TestScreen screen             = new TestScreen();
                ScreenLifecycleOperations ops = new ScreenLifecycleOperations(Aggregator, screen);

                InvalidOperationException sourceException = new InvalidOperationException();

                AddEventHandlerForAllEvents(
                    screen,
                    handlerAction: e => {
                    actualEvents.Add(e);
                    throw sourceException;
                },
                    includeExceptionOccured: false
                    );

                AddEventHandlerFor(
                    ScreenEvents.LifecycleExceptionOccured,
                    screen,
                    handlerAction: (ev, _) => actualEvents.Add(ev)
                    );

                var exceptionExpr = AssertHelper.Throws <ScreenLifecycleException>(() =>
                                                                                   lifecycleAction(ops)
                                                                                   );

                CollectionAssert.AreEquivalent(
                    new IEvent[] {
                    expectedEvent,
                    ScreenEvents.LifecycleExceptionOccured
                },
                    actualEvents
                    );

                Assert.AreEqual(sourceException, exceptionExpr.Exception.InnerException);
            });
        }
Пример #7
0
        private void AddEventHandlerForAllEvents(
            IScreenBase target,
            Action <IEvent> handlerAction,
            bool includeExceptionOccured = false
            )
        {
            Action <IEvent, object> action = (ev, _) => handlerAction(ev);

            AddEventHandlerFor(ScreenEvents.Initialize(), target, action);
            AddEventHandlerFor(ScreenEvents.Initialize <Subject>(), target, action);
            AddEventHandlerFor(ScreenEvents.Activate, target, action);
            AddEventHandlerFor(ScreenEvents.Deactivate, target, action);
            AddEventHandlerFor(ScreenEvents.RequestClose, target, action);
            AddEventHandlerFor(ScreenEvents.Close, target, action);

            if (includeExceptionOccured)
            {
                AddEventHandlerFor(ScreenEvents.LifecycleExceptionOccured, target, action);
            }
        }
 public void CreatedState_HandlesEventsCorrectly()
 {
     ParameterizedTest
     .TestCase(Success(LifecycleState.Created, TriggerEvent.Initialize, LifecycleState.Initialized, ScreenEvents.Initialize()))
     .TestCase(Success(LifecycleState.Created, TriggerEvent.InitializeSubject, LifecycleState.Initialized, ScreenEvents.Initialize(), ScreenEvents.Initialize <TestSubject>()))
     .TestCase(InvalidStateException(LifecycleState.Created, TriggerEvent.Activate))
     .TestCase(InvalidStateException(LifecycleState.Created, TriggerEvent.Deactivate))
     .TestCase(InvalidStateException(LifecycleState.Created, TriggerEvent.RequestClose))
     .TestCase(InvalidStateException(LifecycleState.Created, TriggerEvent.Close))
     .TestCase(InvalidStateException(LifecycleState.Created, TriggerEvent.LifecycleException))
     .Run(ExecuteTestCase);
 }
 public ScreenWithInterfaceSubject(EventAggregator aggregator)
     : base(aggregator)
 {
     Lifecycle.RegisterHandler(ScreenEvents.Initialize <ISubject>(), HandleInitialize);
 }
 public TestScreen(EventAggregator aggregator)
     : base(aggregator)
 {
     Lifecycle.RegisterHandler(ScreenEvents.Initialize <TSubject>(), HandleInitialize);
 }