protected override async void OnEnterState() { var printingWorkflow = new DelayWorkflow( Workflow.Create( async() => { await WorkflowInstance.Action("Done"); }), 500); await WorkflowInstance.EnterWorkflow(printingWorkflow, false); }
public async Task UnitTestDelayUntilConditionWorkflow() { using (var engine = new WorkflowEngine()) { var argConditionMet = new Argument <bool>("ConditionMet"); var escalationDateTime = DateTime.Now.AddSeconds(5); var setConditionDateTime = DateTime.Now.AddSeconds(1); var delayUntilWorkflow = new DelayUntilConditionWorkflow( Workflow.Create( instance => { instance.GetArgument <bool>("HasEscalated").Value = true; }), () => argConditionMet.Value, escalationDateTime); var delayUntilInstance = engine.CreateWorkflow(delayUntilWorkflow); await delayUntilInstance.Start(new Argument <bool>("HasEscalated")); var setConditionWorkflow = new DelayWorkflow( Workflow.Create( () => { argConditionMet.Value = true; }), Convert.ToInt32(setConditionDateTime.Subtract(DateTime.Now).TotalMilliseconds)); var setConditionInstance = engine.CreateWorkflow(setConditionWorkflow); await setConditionInstance.Start(); await delayUntilInstance.Wait(); await setConditionInstance.Wait(); Assert.IsTrue(delayUntilInstance.GetArgument <bool>("HasEscalated").Value); Assert.IsTrue(DateTime.Now >= setConditionDateTime); Assert.IsFalse(DateTime.Now >= escalationDateTime); } }