コード例 #1
0
ファイル: WorkflowMediator.cs プロジェクト: zhh007/objectflow
 /// <summary>
 /// Lazy initializes the workflow. Always call this before you need to reference <see cref="_workflow"/>
 /// </summary>
 protected virtual void InitializeWorkflowIfNecessary()
 {
     if (_workflow == null)
     {
         _workflow = Define();
     }
 }
コード例 #2
0
        public void Given()
        {
            var branchPoint = Declare.Step();

            sut = new StatefulWorkflow <TestObject>("test")
                  .Do(x => x.Feedback("branch point"), branchPoint)
                  .Do(x => x.Feedback("first point"), If.IsTrue(() => tracker < 2, branchPoint))
                  .Yield(1)
                  .Do(x => x.Feedback("second point"), If.IsTrue(() => tracker < 1, branchPoint))
            ;

            mock          = new Mock <TestObject>();
            mock.CallBase = true;
            mock.Setup(x => x.Feedback(It.IsAny <string>())).Returns(mock.Object);
            // This setup is to avoid infinite loops in the test data
            int timer = 0;

            mock.Setup(x => x.Feedback("branch point")).Callback(() =>
            {
                if (++timer == 2)
                {
                    tracker = 0;
                }
            }).Returns(mock.Object);
        }
コード例 #3
0
 public void Given()
 {
     ruleMock = new Mock<DefaultTransitionRule<TestObject>>("workflow");
     ruleMock.CallBase = true;
     rule = ruleMock.Object;
     workflow = new StatefulWorkflow<TestObject>("workflow", null, rule);
     TestFixtures.SetupWorkflow(workflow);
     data = new TestObject() { State = "Last" };
 }
コード例 #4
0
 public void Given()
 {
     ruleMock          = new Mock <DefaultTransitionRule <TestObject> >("workflow");
     ruleMock.CallBase = true;
     rule     = ruleMock.Object;
     workflow = new StatefulWorkflow <TestObject>("workflow", null, rule);
     TestFixtures.SetupWorkflow(workflow);
     data = new TestObject();
 }
コード例 #5
0
 public void Given()
 {
     _workflow = new StatefulWorkflow<A1>("test");
     _workflow.Do(x => x.GotHere("starting"))
         .Yield("stop point")
         .Do(x => x.GotHere("finished"));
     _object = new Mock<A1>();
     _object.Setup(x => x.GotHere("starting")).Returns(_object.Object);
     _object.Setup(x => x.GotHere("finished")).Returns(_object.Object);
 }
コード例 #6
0
 public void Given()
 {
     _workflow = new StatefulWorkflow <A1>("test");
     _workflow.Do(x => x.GotHere("starting"))
     .Yield("stop point")
     .Do(x => x.GotHere("finished"));
     _object = new Mock <A1>();
     _object.Setup(x => x.GotHere("starting")).Returns(_object.Object);
     _object.Setup(x => x.GotHere("finished")).Returns(_object.Object);
 }
コード例 #7
0
        public void Given()
        {
            var branchPoint = Declare.Step();
            sut = new StatefulWorkflow<TestObject>("test")
                .Do(x => x.Feedback("branch point"), branchPoint)
                .Do(x => x.Feedback("first point"), If.IsTrue(() => tracker < 2, branchPoint))
                .Yield(1)
                .Do(x => x.Feedback("second point"), If.IsTrue(() => tracker < 1, branchPoint))
                ;

            mock = new Mock<TestObject>();
            mock.CallBase = true;
            mock.Setup(x => x.Feedback(It.IsAny<string>())).Returns(mock.Object);
            // This setup is to avoid infinite loops in the test data
            int timer = 0;
            mock.Setup(x => x.Feedback("branch point")).Callback(() =>
            {
                if (++timer == 2)
                    tracker = 0;
            }).Returns(mock.Object);
        }
コード例 #8
0
 /// <summary>
 /// Workflow with 3 segments
 /// </summary>
 public static IStatefulWorkflow <TestObject> SetupWorkflow(IStatefulWorkflow <TestObject> workflow)
 {
     return(workflow
            .Yield("First")
            .Yield("Last"));
 }
コード例 #9
0
 /// <summary>
 /// Indicates that this object is currently passing through the specific workflow
 /// </summary>
 /// <param name="self"></param>
 /// <param name="workflow"></param>
 /// <returns></returns>
 public static bool IsAliveInWorkflow <T>(this IStatefulObject self, IStatefulWorkflow <T> workflow)
     where T : class, IStatefulObject
 {
     return(self.GetStateId(workflow.WorkflowId) != null);
 }
コード例 #10
0
 /// <summary>
 /// Workflow with 3 segments
 /// </summary>
 public static IStatefulWorkflow<TestObject> SetupWorkflow(IStatefulWorkflow<TestObject> workflow)
 {
     return workflow
             .Yield("First")
             .Yield("Last");
 }