public void TestPoisionPill() { ILogic <AppState, TestAction> logic = new CancelableLogic(); Mock <IMultiDispatcher> mock = new Mock <IMultiDispatcher>(); Task t = logic.Process(() => new AppState(), new TestAction(), mock.Object); logic.Cancel(new PoisonPill("Killing")); Assert.IsTrue(t.IsCanceled); }
public void TestDispatchingCancel() { Mock <IStore <AppState> > storeMock = new Mock <IStore <AppState> >(); CancelableLogic logic = new CancelableLogic(); IStore <AppState> store = storeMock.Object.ConfigureLogic(x => x.AddLogics(logic)); store.Dispatch(new TestAction()); store.Dispatch(new CancelTestAction()); Assert.IsTrue(logic.ProcessTask.IsCanceled); }
public void TestNonFatalPosionPill() { Mock <IStore <AppState> > storeMock = new Mock <IStore <AppState> >(); CancelableLogic logic = new CancelableLogic(); IStore <AppState> store = storeMock.Object.ConfigureLogic(x => x.AddLogics(logic)); store.Dispatch(new TestAction()); store.Dispatch(new PoisonPill("test", kill: false)); Assert.IsTrue(logic.ProcessTask.IsCanceled); store.Dispatch(new TestAction()); Assert.False(logic.ProcessTask.IsCanceled); }
public void TestCannotProcessKilledLogic() { Mock <IStore <AppState> > storeMock = new Mock <IStore <AppState> >(); CancelableLogic logic = new CancelableLogic(); IStore <AppState> store = storeMock.Object.ConfigureLogic(x => x.AddLogics(logic)); logic.OnProcessExecuted = false; store.Dispatch(new TestAction()); Assert.True(logic.OnProcessExecuted); store.Dispatch(new PoisonPill("test")); logic.OnProcessExecuted = false; var result = (logic as ILogic <AppState, TestAction>).Process(() => store.State, new TestAction(), null); Assert.False(logic.OnProcessExecuted); }
public void TestPoisionPillWillNeverBeProcessed() { Mock <IStore <AppState> > storeMock = new Mock <IStore <AppState> >(); CancelableLogic logic = new CancelableLogic(); PoisonPillProcessor poisonPillProcessor = new PoisonPillProcessor(); IStore <AppState> store = storeMock.Object.ConfigureLogic(x => { x.AddLogics(logic); x.AddLogics(poisonPillProcessor); }); store.Dispatch(new TestAction()); store.Dispatch(new PoisonPill("test")); Assert.IsTrue(logic.ProcessTask.IsCanceled); Assert.False(poisonPillProcessor.OnProcessExecuted); }
public void TestCancelActionWillBeFurtherProcessed() { Mock <IStore <AppState> > storeMock = new Mock <IStore <AppState> >(); CancelableLogic logic = new CancelableLogic(); CancelTestActionProcessor cancelActionProcessor = new CancelTestActionProcessor(); IStore <AppState> store = storeMock.Object.ConfigureLogic(x => { x.AddLogics(logic); x.AddLogics(cancelActionProcessor); }); store.Dispatch(new TestAction()); store.Dispatch(new CancelTestAction()); Assert.IsTrue(logic.ProcessTask.IsCanceled); Assert.True(cancelActionProcessor.OnProcessExecuted); }
public void TestCannotPreprocessKilledLogic() { Mock <IStore <AppState> > storeMock = new Mock <IStore <AppState> >(); CancelableLogic logic = new CancelableLogic(); IStore <AppState> store = storeMock.Object.ConfigureLogic(x => x.AddLogics(logic)); store.Dispatch(new TestAction()); store.Dispatch(new PoisonPill("test")); Assert.IsTrue(logic.ProcessTask.IsCanceled); store.Dispatch(new TestAction()); Assert.True(logic.ProcessTask.IsCanceled); var result = (logic as ILogic <AppState, TestAction>).PreProcess(store, new TestAction()).Result; Assert.False(result.ContinueToNextStep); }