コード例 #1
0
        public void NextAndPreviousMethods()
        {
            // Arrange
            var baseStepName     = "base";
            var previousStepName = "previous";
            var nextStepName     = "next";

            var originStep   = new BaseStep(name: baseStepName);
            var previousStep = new BaseStep(name: previousStepName);
            var nextStep     = new BaseStep(name: nextStepName);

            // Act
            var actualNextStep     = originStep.SetNext(nextStep);
            var actualpreviousStep = originStep.SetPrevious(previousStep);

            // Assert
            Assert.Equal(nextStep, actualNextStep);
            Assert.Equal(previousStep, actualpreviousStep);
            Assert.Equal(nextStep, originStep.Next());
            Assert.Equal(previousStep, originStep.Previous());
        }
コード例 #2
0
        public void SetNextByType()
        {
            // Arrange
            var baseStepName = "base";
            var nextStepName = "next";

            var originStep  = new BaseStep(name: baseStepName);
            var nextStep    = new AnotherStepType(name: nextStepName);
            var optionsStep = new BaseSelector();

            // Act
            var actualNextStep    = originStep.SetNext(nextStep);
            var actualOptionsStep = actualNextStep.SetNext(optionsStep);

            // Assert
            Assert.IsType <AnotherStepType>(actualNextStep);
            Assert.Equal(nextStep, originStep.Next());

            Assert.IsType <BaseSelector>(actualOptionsStep);
            Assert.Equal(optionsStep, nextStep.Next());
        }
コード例 #3
0
        public async void AutoProgressSetting()
        {
            // Arrange
            var baseStepName = "base";
            var nextStepName = "next";
            var settings     = new StepSettings()
            {
                AutoProgress = true, TrackStateChanges = true
            };

            var originStep = new BaseStep(name: baseStepName, stepSettings: settings);
            var nextStep   = new BaseStep(name: nextStepName, stepSettings: settings);

            originStep.SetNext(nextStep);

            // Act
            var result = await originStep.Execute(_workflowState);

            // Assert
            Assert.Equal(_originalWorfklowState.MyInteger + 2, result.State.MyInteger);
            Assert.Equal(2, result.WorkflowChain.Count);

            var firstLink  = result.WorkflowChain.First.Value;
            var secondLink = result.WorkflowChain.Last.Value;

            Assert.Equal(originStep.Id, firstLink.StepIdentifier);
            Assert.Equal(1, firstLink.GetUncompressedStateSnapshot <SimpleWorkflowState>().MyInteger);
            Assert.Equal(nextStep.Id, secondLink.StepIdentifier);
            Assert.Equal(2, secondLink.GetUncompressedStateSnapshot <SimpleWorkflowState>().MyInteger);

            Assert.Equal(StepActivityStages.Executing, firstLink.StepActivities.First().Activity);
            Assert.Equal(StepActivityStages.ExecutionCompleted, firstLink.StepActivities.Last().Activity);

            Assert.Equal(StepActivityStages.Executing, secondLink.StepActivities.First().Activity);
            Assert.Equal(StepActivityStages.ExecutionCompleted, secondLink.StepActivities.Last().Activity);
        }