Beispiel #1
0
        public void OnThreeAdvancesShouldChangeActiveRecursiveSubStepAndReturnThirdInteraction()
        {
            // Arrange
            List <Step>   hugSteps          = new List <Step>();
            RecursiveStep hugSequentialStep = new RecursiveStep(Standard.Mandatory, "Hug.", hugSteps);

            hugSequentialStep.AddSubStep(_grabHugStep);
            hugSequentialStep.AddSubStep(_takeKeyStep);

            List <Step>   doorSteps          = new List <Step>();
            RecursiveStep doorSequentialStep = new RecursiveStep(Standard.Mandatory, "Door", doorSteps);

            doorSequentialStep.AddSubStep(_insertKeyStep);
            doorSequentialStep.AddSubStep(_openDoorStep);

            List <Step>   multiNivelSequentialSteps = new List <Step>();
            RecursiveStep multiNivelSequentialStep  = new RecursiveStep(Standard.Mandatory, "Unlock Door", multiNivelSequentialSteps);

            multiNivelSequentialStep.AddSubStep(hugSequentialStep);
            multiNivelSequentialStep.AddSubStep(doorSequentialStep);

            // Act
            multiNivelSequentialStep.AdvanceStep(DateTime.Now);
            multiNivelSequentialStep.AdvanceStep(DateTime.Now);
            LeafStep third = multiNivelSequentialStep.AdvanceStep(DateTime.Now);

            // Assert
            Assert.AreEqual(true, hugSequentialStep.Completed);
            Assert.AreEqual(false, hugSequentialStep.Active);
            Assert.AreEqual(false, doorSequentialStep.Completed);
            Assert.AreEqual(true, doorSequentialStep.Active);
            Assert.AreEqual(_insertKeyStep.Interaction, third.Interaction);
            Assert.AreEqual(doorSequentialStep, multiNivelSequentialStep.CurrentSubStep);
        }
Beispiel #2
0
        public void OnTwoAdvancesMultinivelSequentialStepsShouldBeNonCompletedActiveAndReturnSecondInteraction()
        {
            // Arrange
            List <Step>   hugSteps          = new List <Step>();
            RecursiveStep hugSequentialStep = new RecursiveStep(Standard.Mandatory, "Hug.", hugSteps);

            hugSequentialStep.AddSubStep(_grabHugStep);
            hugSequentialStep.AddSubStep(_takeKeyStep);

            List <Step>   doorSteps          = new List <Step>();
            RecursiveStep doorSequentialStep = new RecursiveStep(Standard.Mandatory, "Door", doorSteps);

            doorSequentialStep.AddSubStep(_insertKeyStep);
            doorSequentialStep.AddSubStep(_openDoorStep);

            List <Step>   multiNivelSequentialSteps = new List <Step>();
            RecursiveStep multiNivelSequentialStep  = new RecursiveStep(Standard.Mandatory, "Unlock Door", multiNivelSequentialSteps);

            multiNivelSequentialStep.AddSubStep(hugSequentialStep);
            multiNivelSequentialStep.AddSubStep(doorSequentialStep);

            // Act
            multiNivelSequentialStep.AdvanceStep(DateTime.Now);
            LeafStep second = multiNivelSequentialStep.AdvanceStep(DateTime.Now);

            // Assert
            Assert.AreEqual(false, multiNivelSequentialStep.Completed);
            Assert.AreEqual(true, multiNivelSequentialStep.Active);
            Assert.AreEqual(_takeKeyStep.Interaction, second.Interaction);
        }
Beispiel #3
0
        public void OnCompletionAndCalculationAllTimesShouldBeCorrect()
        {
            // Arrange
            List <Step>   hugSteps          = new List <Step>();
            RecursiveStep hugSequentialStep = new RecursiveStep(Standard.Mandatory, "Hug.", hugSteps);

            hugSequentialStep.AddSubStep(_grabHugStep);
            hugSequentialStep.AddSubStep(_takeKeyStep);

            List <Step>   doorSteps          = new List <Step>();
            RecursiveStep doorSequentialStep = new RecursiveStep(Standard.Mandatory, "Door", doorSteps);

            doorSequentialStep.AddSubStep(_insertKeyStep);
            doorSequentialStep.AddSubStep(_openDoorStep);

            List <Step>   multiNivelSequentialSteps = new List <Step>();
            RecursiveStep multiNivelSequentialStep  = new RecursiveStep(Standard.Mandatory, "Unlock Door", multiNivelSequentialSteps);

            multiNivelSequentialStep.AddSubStep(hugSequentialStep);
            multiNivelSequentialStep.AddSubStep(doorSequentialStep);

            DateTime firstTime  = DateTime.Now;
            DateTime secondTime = DateTime.Now;
            DateTime thirdTime  = DateTime.Now;
            DateTime fourthTime = DateTime.Now;
            DateTime fifthTime  = DateTime.Now;

            // Act
            multiNivelSequentialStep.UpdateDuration();
            multiNivelSequentialStep.AdvanceStep(firstTime);
            multiNivelSequentialStep.AdvanceStep(secondTime);
            multiNivelSequentialStep.AdvanceStep(thirdTime);
            System.Threading.Thread.Sleep(2000);
            multiNivelSequentialStep.AdvanceStep(fourthTime);
            multiNivelSequentialStep.AdvanceStep(fifthTime);

            // Assert
            Assert.AreEqual(4000, multiNivelSequentialStep.ExpectedDuration.Seconds);
            Assert.AreEqual(8000, multiNivelSequentialStep.LimitDuration.Seconds);
            var timeOffset = fifthTime.Subtract(firstTime).TotalSeconds;

            Assert.AreEqual((long)timeOffset, (long)multiNivelSequentialStep.ExecutionTime.Seconds);
        }
Beispiel #4
0
        public void OnEmptySubStepsShouldThrowException()
        {
            // Arrange
            List <Step>   steps          = new List <Step>();
            RecursiveStep sequentialStep = new RecursiveStep(Standard.Mandatory, "Door", steps);
            DateTime      firstTime      = DateTime.Now;

            // Act
            sequentialStep.AdvanceStep(firstTime);  //starts
        }
Beispiel #5
0
        public void OnSecondAdvanceShouoldReturnSecondInteractionAndBeActiveAndNonCompelted()
        {
            // Arrange
            List <Step>   steps          = new List <Step>();
            RecursiveStep sequentialStep = new RecursiveStep(Standard.Mandatory, "Door", steps);

            sequentialStep.AddSubStep(_takeKeyStep);
            sequentialStep.AddSubStep(_insertKeyStep);
            sequentialStep.AddSubStep(_openDoorStep);
            DateTime firstTime  = DateTime.Now;
            DateTime secondTime = DateTime.Now;

            // Act
            sequentialStep.AdvanceStep(firstTime);
            Interaction second = sequentialStep.AdvanceStep(secondTime).Interaction;

            // Assert
            Assert.AreEqual(_keyholeInteraction, second);
            Assert.AreEqual(false, sequentialStep.Completed);
            Assert.AreEqual(true, sequentialStep.Active);
        }
Beispiel #6
0
        public void OnCompletionExecutionTimeShouldBeCalculated()
        {
            // Arrange
            List <Step>   steps          = new List <Step>();
            RecursiveStep sequentialStep = new RecursiveStep(Standard.Mandatory, "Door", steps);

            sequentialStep.AddSubStep(_takeKeyStep);
            sequentialStep.AddSubStep(_insertKeyStep);
            sequentialStep.AddSubStep(_openDoorStep);
            DateTime firstTime  = DateTime.Now;
            DateTime secondTime = DateTime.Now;
            DateTime thirdTime  = DateTime.Now;
            DateTime fourthTime = DateTime.Now;

            // Act
            sequentialStep.AdvanceStep(firstTime);
            sequentialStep.AdvanceStep(secondTime);
            sequentialStep.AdvanceStep(thirdTime);
            sequentialStep.AdvanceStep(fourthTime);
            // Assert
            Assert.AreEqual(fourthTime.Subtract(firstTime).TotalSeconds, sequentialStep.ExecutionTime.Seconds, 0.1);
        }
Beispiel #7
0
        public void OnCompletedAdvancingStepShouldFail()
        {
            // Arrange
            List <Step>   steps          = new List <Step>();
            RecursiveStep sequentialStep = new RecursiveStep(Standard.Mandatory, "Door", steps);

            sequentialStep.AddSubStep(_takeKeyStep);
            sequentialStep.AddSubStep(_insertKeyStep);
            sequentialStep.AddSubStep(_openDoorStep);
            DateTime firstTime  = DateTime.Now;
            DateTime secondTime = DateTime.Now;
            DateTime thirdTime  = DateTime.Now;
            DateTime fourthTime = DateTime.Now;
            DateTime fifthTime  = DateTime.Now;

            // Act
            sequentialStep.AdvanceStep(firstTime);  //starts
            sequentialStep.AdvanceStep(secondTime); //finishes first and starts second
            sequentialStep.AdvanceStep(thirdTime);  //finishes second and starts third
            sequentialStep.AdvanceStep(fourthTime); //finishes third and completes
            sequentialStep.AdvanceStep(fifthTime);  //exception
        }
Beispiel #8
0
        public void OnCompletionShouldReturnNullAsInteractionBeCompletedAndNonActive()
        {
            // Arrange
            List <Step>   steps          = new List <Step>();
            RecursiveStep sequentialStep = new RecursiveStep(Standard.Mandatory, "Door", steps);

            sequentialStep.AddSubStep(_takeKeyStep);
            sequentialStep.AddSubStep(_insertKeyStep);
            sequentialStep.AddSubStep(_openDoorStep);
            DateTime firstTime  = DateTime.Now;
            DateTime secondTime = DateTime.Now;
            DateTime thirdTime  = DateTime.Now;
            DateTime fourthTime = DateTime.Now;

            // Act
            sequentialStep.AdvanceStep(firstTime);
            sequentialStep.AdvanceStep(secondTime);
            sequentialStep.AdvanceStep(thirdTime);
            sequentialStep.AdvanceStep(fourthTime);
            // Assert
            Assert.AreEqual(null, sequentialStep.CurrentSubStep);
            Assert.AreEqual(true, sequentialStep.Completed);
            Assert.AreEqual(false, sequentialStep.Active);
        }
Beispiel #9
0
        public void OnActivationShouldReturnFirstInteractionBeActiveAndNonCompleted()
        {
            // Arrange
            List <Step>   steps          = new List <Step>();
            RecursiveStep sequentialStep = new RecursiveStep(Standard.Mandatory, "Door", steps);

            sequentialStep.AddSubStep(_takeKeyStep);
            sequentialStep.AddSubStep(_insertKeyStep);
            sequentialStep.AddSubStep(_openDoorStep);
            DateTime firstTime = DateTime.Now;
            // Act
            Interaction first = sequentialStep.AdvanceStep(firstTime).Interaction;

            // Assert
            Assert.AreEqual(_keyInteraction, first);
            Assert.AreEqual(false, sequentialStep.Completed);
            Assert.AreEqual(true, sequentialStep.Active);
        }