public void GetStateBaseSteps_StateFromSource_ReturnsStepsOrEmptyList(
            Dictionary <string, List <BaseStep> > addingStates,
            State.StateType selectedState, List <BaseStep> expectedSteps,
            BaseOperation customizableOper)
        {
            FillBaseOperationStatesWithReset(customizableOper, addingStates);

            List <BaseStep> actualSteps = customizableOper
                                          .GetStateBaseSteps(selectedState);

            Assert.Multiple(() =>
            {
                for (int stepId = 0; stepId < actualSteps.Count; stepId++)
                {
                    BaseStep expectedStep = expectedSteps[stepId];
                    BaseStep actualStep   = actualSteps[stepId];

                    bool areEqual =
                        expectedStep.DefaultPosition ==
                        actualStep.DefaultPosition &&
                        expectedStep.LuaName == actualStep.LuaName &&
                        expectedStep.Name == actualStep.Name &&
                        expectedStep.Owner == actualStep.Owner;

                    Assert.IsTrue(areEqual);
                }
            });
        }
        public void TestPosemasterStepCreated()
        {
            var      builder = new StepBuilder(new MockEntitySupplier());
            BaseStep step    = builder.BuildStep("Joey celebrate");

            Assert.AreEqual(typeof(PoseMasterStep), step.GetType());
        }
        public void TestMoveToPositionStepCreated()
        {
            var      builder = new StepBuilder(new MockEntitySupplier());
            BaseStep step    = builder.BuildStep("Joey => Lucy");

            Assert.AreEqual(typeof(MoveToPositionStep), step.GetType());
        }
        public void TestSpeechBubbleCreated()
        {
            var      builder = new StepBuilder(new MockEntitySupplier());
            BaseStep step    = builder.BuildStep("Joey say \"Citan told me all about your story. Do you want to talk about it? Why didn't you tell me? It sounds pretty rough.\"");

            Assert.AreEqual(typeof(SpeechBubble), step.GetType());
        }
        public void TestWaitStepCreated()
        {
            var      builder = new StepBuilder(new MockEntitySupplier());
            BaseStep step    = builder.BuildStep("wait 1000");

            Assert.AreEqual(typeof(WaitStep), step.GetType());
        }
        public void TestTurnVectorStepCreated()
        {
            var      builder = new StepBuilder(new MockEntitySupplier());
            BaseStep step    = builder.BuildStep("Joey turn south");

            Assert.AreEqual(typeof(TurnVectorStep), step.GetType());
        }
        public void TestCamTargetStepCreated()
        {
            var      builder = new StepBuilder(new MockEntitySupplier());
            BaseStep step    = builder.BuildStep("cam => Joey");

            Assert.AreEqual(typeof(CameraTarget), step.GetType());
        }
Exemple #8
0
        public void TerminateThrowsTerminateWorkflowException()
        {
            // Arrange
            var step = new BaseStep();

            // Actsert
            Assert.Throws <TerminateWorkflowException>(() => step.Terminate());
        }
        public void TestLoadSceneStep()
        {
            var      builder = new StepBuilder(new MockEntitySupplier());
            BaseStep step    = builder.BuildStep("load_scene test_scene");

            Assert.AreEqual(typeof(LoadSceneStep), step.GetType());
            Assert.IsTrue((step as LoadSceneStep).SceneName == "test_scene");
        }
        public void TestFadeScreenStep()
        {
            var      builder = new StepBuilder(new MockEntitySupplier());
            BaseStep step    = builder.BuildStep("yield banana cherry");

            Assert.AreEqual(typeof(YieldStep), step.GetType());
            Assert.IsTrue((step as YieldStep).IDs.Contains("banana"));
            Assert.IsTrue((step as YieldStep).IDs.Contains("cherry"));
        }
 public static void StartStep(BaseStep nextStep)
 {
     instance.CurrentStep.gameObject.SetActive(false);
     instance.CurrentStep = nextStep;
     if (nextStep)
     {
         instance.CurrentStep.gameObject.SetActive(true);
     }
 }
        public void TestYieldStep()
        {
            var      builder = new StepBuilder(new MockEntitySupplier());
            BaseStep step    = builder.BuildStep("fade => 1");

            Assert.AreEqual(typeof(FadeScreenStep), step.GetType());

            Assert.IsTrue((step as FadeScreenStep).Alpha == 1);
            Assert.IsTrue((step as FadeScreenStep).SpeedType == SpeedType.Slow);
        }
        public async void ProcessForkWithException()
        {
            // Arrange
            var settings = new StepSettings {
                TrackStateChanges = true, AutoProgress = true
            };

            const string firstStepName       = "first";
            const string forkStepName        = "fork";
            const string secondStepName      = "second";
            const string exceptionalStepName = "exceptionalStep";
            const string fourthStepName      = "fourth";

            var firstBaseStep   = new BaseStep(firstStepName, settings);
            var secondStepAsync = new AsyncStep(500, secondStepName);
            var exceptionalStep = new ExceptionalStep(exceptionalStepName);
            var fourthStepAsync = new AsyncStep(200, fourthStepName);

            firstBaseStep.Fork(
                name: forkStepName,
                stepSettings: settings,
                secondStepAsync,
                exceptionalStep,
                fourthStepAsync);

            var expectedExecutionStarted         = new[] { firstStepName, forkStepName, secondStepName, exceptionalStepName, fourthStepName };
            var expectedExecutionCompletionOrder = new[] { firstStepName, fourthStepName, secondStepName };
            var expectedFailedOrder = new[] { forkStepName, exceptionalStepName };

            // Actssert
            try
            {
                await firstBaseStep.Execute(_workflowState);
            }
            catch (WorkflowActionException <SimpleWorkflowState> ex)
            {
                var result = ex.WorkflowState;

                var orderedByStarted    = result.WorkflowChain.ToList().Select(x => x.StepName).ToArray();
                var orderedByCompletion = result.WorkflowChain.ToList()
                                          .Where(x => x.StepActivities.Any(y => y.Activity == StepActivityStages.ExecutionCompleted))
                                          .OrderBy(x => x.StepActivities.FirstOrDefault(y => y.Activity == StepActivityStages.ExecutionCompleted).DateTimeOffset)
                                          .Select(x => x.StepName)
                                          .ToArray();
                var failedStepNames = result.WorkflowChain.ToList()
                                      .Where(x => x.StepActivities.Any(y => y.Activity == StepActivityStages.ExecutionFailed))
                                      .Select(x => x.StepName)
                                      .ToArray();

                // Assert
                Assert.True(expectedExecutionStarted.SequenceEqual(orderedByStarted));
                Assert.True(expectedExecutionCompletionOrder.SequenceEqual(orderedByCompletion));
                Assert.True(expectedFailedOrder.SequenceEqual(failedStepNames));
            }
        }
        public void TestMoveInDirectionStepCreated()
        {
            var      builder = new StepBuilder(new MockEntitySupplier());
            BaseStep walk    = builder.BuildStep("Joey => 100, 100");
            BaseStep run     = builder.BuildStep("Joey =>> 100, 100");
            BaseStep sprint  = builder.BuildStep("Joey =>>> 100, 100");

            Assert.AreEqual(typeof(MoveAiInDirectionStep), walk.GetType());
            Assert.AreEqual(typeof(MoveAiInDirectionStep), run.GetType());
            Assert.AreEqual(typeof(MoveAiInDirectionStep), sprint.GetType());
        }
Exemple #15
0
        public async void ExecuteCurrent()
        {
            // Arrange
            var baseStepName = "base";
            var originStep   = new BaseStep(name: baseStepName);

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

            // Assert
            Assert.Equal(_originalWorfklowState.MyInteger + 1, result.State.MyInteger);
        }
Exemple #16
0
 private void SetStep(int index)
 {
     UpdateWizardState();
     if (currentStep != null)
     {
         stepPanel.Controls.Remove(currentStep);
     }
     currentStepIndex = index;
     currentStep      = steps[index];
     currentStep.ReportWizardState = currentState;
     stepPanel.Controls.Add(currentStep);
     currentStep.OnDisplay();
     stepTitle.Text       = currentStep.Title;
     stepDescription.Text = currentStep.Description;
     UpdateNavigationButtons();
 }
Exemple #17
0
        public async void ProcessSequenceAfterAdd()
        {
            // Arrange
            var settings = new StepSettings {
                TrackStateChanges = true
            };

            var sequencer      = new Sequencer <SimpleWorkflowState>(stepSettings: settings);
            var firstStepName  = "first";
            var secondStepName = "second";

            var firstStep  = new BaseStep(name: firstStepName, settings);
            var secondStep = new BaseStep(name: secondStepName, settings);

            sequencer.AddStep(firstStep);
            sequencer.AddStep(secondStep);

            var expectedSequence = new List <Step <SimpleWorkflowState> > {
                firstStep, secondStep
            };

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

            // Assert
            Assert.Equal(_originalWorfklowState.MyInteger + 2, result.State.MyInteger);
            Assert.Equal(3, result.WorkflowChain.Count);
            Assert.True(expectedSequence.SequenceEqual(sequencer.GetSequence()));

            var sequencerStepLink = result.WorkflowChain.First.Value;
            var firstStepLink     = result.WorkflowChain.First.Next.Value;
            var secondStepLink    = result.WorkflowChain.Last.Value;

            Assert.Equal(sequencer.Id, sequencerStepLink.StepIdentifier);

            var something = sequencerStepLink.GetUncompressedStateSnapshot <SimpleWorkflowState>();

            Assert.Equal(0, sequencerStepLink.GetUncompressedStateSnapshot <SimpleWorkflowState>().MyInteger);
            Assert.Equal(firstStep.Id, firstStepLink.StepIdentifier);
            Assert.Equal(1, firstStepLink.GetUncompressedStateSnapshot <SimpleWorkflowState>().MyInteger);
            Assert.Equal(secondStep.Id, secondStepLink.StepIdentifier);
            Assert.Equal(2, secondStepLink.GetUncompressedStateSnapshot <SimpleWorkflowState>().MyInteger);
        }
Exemple #18
0
        public async void WorkflowChainUpdatedWithSnapshot()
        {
            // Arrange
            var baseStepName = "base";
            var originStep   = new BaseStep(name: baseStepName);

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

            var link = result.WorkflowChain.First.Value;

            // Assert
            Assert.Single(result.WorkflowChain);
            Assert.Equal(baseStepName, link.StepName);
            Assert.Equal(originStep.Id, link.StepIdentifier);
            Assert.Equal(0, link.SequenceNumber);
            Assert.Null(link.GetUncompressedStateSnapshot <SimpleWorkflowState>());
            Assert.Equal(StepActivityStages.Executing, link.StepActivities.First().Activity);
            Assert.Equal(StepActivityStages.ExecutionCompleted, link.StepActivities.Last().Activity);
        }
        public async void ProcessFork()
        {
            // Arrange
            var settings = new StepSettings {
                TrackStateChanges = true, AutoProgress = true
            };

            const string firstStepName  = "first";
            const string forkStepName   = "fork";
            const string secondStepName = "second";
            const string thirdStepName  = "third";
            const string fourthStepName = "fourth";

            var firstBaseStep   = new BaseStep(firstStepName, settings);
            var secondStepAsync = new AsyncStep(500, secondStepName);
            var thirdStepAsync  = new AsyncStep(0, thirdStepName);
            var fourthStepAsync = new AsyncStep(200, fourthStepName);

            firstBaseStep.Fork(
                name: forkStepName,
                stepSettings: settings,
                secondStepAsync,
                thirdStepAsync,
                fourthStepAsync);

            var expectedExecutionStarted         = new[] { firstStepName, forkStepName, secondStepName, thirdStepName, fourthStepName };
            var expectedExecutionCompletionOrder = new[] { firstStepName, thirdStepName, fourthStepName, secondStepName, forkStepName };

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

            var orderedByStarted    = result.WorkflowChain.ToList().Select(x => x.StepName).ToArray();
            var orderedByCompletion = result.WorkflowChain.ToList()
                                      .OrderBy(x => x.StepActivities.FirstOrDefault(y => y.Activity == StepActivityStages.ExecutionCompleted).DateTimeOffset)
                                      .Select(x => x.StepName)
                                      .ToArray();

            // Assert
            Assert.True(expectedExecutionStarted.SequenceEqual(orderedByStarted));
            Assert.True(expectedExecutionCompletionOrder.SequenceEqual(orderedByCompletion));
        }
Exemple #20
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());
        }
Exemple #21
0
        private Step CreateStep(XmlReader reader, BaseStep lastStep)
        {
            var attributes = GetAttributes(reader);
            var name       = attributes.ContainsKey("name") ? attributes["name"] : "";

            int repititions = 1;

            if (attributes.ContainsKey("repititions"))
            {
                repititions = int.Parse(attributes["repititions"]);
            }

            Step step = new Step(name, DB.StatisticType.step, null, lastStep, repititions, statisticManager);

            if (lastStep != null)
            {
                lastStep.AddNext(step);
            }

            return(step);
        }
Exemple #22
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());
        }
Exemple #23
0
        public async void SelectorSetsNext()
        {
            // Arrange
            var selector       = new BaseSelector();
            var expectedOption = new BaseStep(name: "expectedOption");
            var option         = new BaseStep(name: "option");
            var options        = new List <Step <SimpleWorkflowState> >()
            {
                expectedOption, option
            };

            selector.SetOptions(options);

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

            // Assert
            Assert.Single(result.WorkflowChain);
            Assert.Equal(_originalWorfklowState, result.State);
            Assert.Equal(selector.Next(), expectedOption);
        }
Exemple #24
0
        public async void WorkflowChainUpdated()
        {
            // Arrange
            var baseStepName = "base";
            var settings     = new StepSettings {
                TrackStateChanges = true
            };
            var originStep = new BaseStep(name: baseStepName, settings);

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

            var link = result.WorkflowChain.First.Value;

            // Assert
            Assert.Single(result.WorkflowChain);
            Assert.Equal(baseStepName, link.StepName);
            Assert.Equal(originStep.Id, link.StepIdentifier);
            Assert.Equal(0, link.SequenceNumber);
            Assert.Equal(_originalWorfklowState.MyInteger + 1, link.GetUncompressedStateSnapshot <SimpleWorkflowState>().MyInteger);
            Assert.Equal(StepActivityStages.Executing, link.StepActivities.First().Activity);
            Assert.Equal(StepActivityStages.ExecutionCompleted, link.StepActivities.Last().Activity);
        }
Exemple #25
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);
        }
        public void StepMethods()
        {
            // Arrange
            var step1 = new BaseStep("one");
            var step2 = new BaseStep("two");
            var step3 = new BaseStep("three");

            var baseStepList = new List <Step <SimpleWorkflowState> > {
                step1, step2, step3
            };

            var whileLoop = new WhileLoop <SimpleWorkflowState>();

            // ActSert a lot because who cares...
            whileLoop.SetSteps(baseStepList);
            Assert.Equal(baseStepList, whileLoop.Steps);

            whileLoop.ClearSteps();
            Assert.Empty(whileLoop.Steps);

            whileLoop.AddStep(step1);
            Assert.Single(whileLoop.Steps);
            Assert.Equal(step1, whileLoop.Steps.First());
        }
 public bool ShouldRetry(BaseStep step, int attempt)
 {
     return(attempt == 1);
 }
Exemple #28
0
 /// <inheritdoc />
 protected override Task <Result <int, IError> > Run(
     IStateMonad stateMonad,
     CancellationToken cancellationToken)
 {
     return(BaseStep.Run(stateMonad, cancellationToken));
 }
Exemple #29
0
 public TimeLineStep(BaseStep step)
 {
     this.Step = step;
 }
 public bool ShouldRetry(BaseStep step, int attempt)
 {
     return(false);
 }