Ejemplo n.º 1
0
        public void RunAllMissions_ShouldReturnAllValuesInFinalResult()
        {
            // Arrange
            var missionRunner       = new MissionRunner();
            var independeantMission = new ControlledMissionWithReturnValue <int>(6, "Mission", true);

            var level0Mission1 = new ControlledMissionWithReturnValue <string>("value", "FirstLevel0", true);
            var level0Mission2 = new ControlledMissionWithReturnValue <double>(5.5, "SecondLevel0", true);

            var midlevelMission = new ControlledMissionWithReturnValue <char>('r', "MidMission", new[] { "FirstLevel0" }, true);

            var finalMission = new ControlledMissionWithReturnValue <bool>(true, "FinalMission", new[] { "MidMission", "SecondLevel0" }, true);

            var allMissions = new IMission[] { independeantMission, level0Mission1, level0Mission2, midlevelMission, finalMission };

            foreach (var mission in allMissions)
            {
                missionRunner.RegisterMission(mission);
            }

            // Act
            var runTask = missionRunner.PerformAllMissions();

            Assert.IsTrue(runTask.Wait(100));
            var finalHolder = runTask.Result;

            // Assert
            Assert.AreEqual(allMissions.Length, finalHolder.Count);

            Assert.AreEqual(6, finalHolder.Get("Mission"));
            Assert.AreEqual("value", finalHolder.Get("FirstLevel0"));
            Assert.AreEqual(5.5, finalHolder.Get("SecondLevel0"));
            Assert.AreEqual('r', finalHolder.Get("MidMission"));
            Assert.AreEqual(true, finalHolder.Get("FinalMission"));
        }
Ejemplo n.º 2
0
        public async Task RunAllMissions_ShouldPassOnlyCorrectArgumentsToRelevantMissions()
        {
            // Arrange
            var missionRunner       = new MissionRunner();
            var independeantMission = new ControlledMissionWithReturnValue <int>(6, "Mission", true);

            var level0Mission1 = new ControlledMissionWithReturnValue <string>("value", "FirstLevel0", true);
            var level0Mission2 = new ControlledMissionWithReturnValue <double>(5.5, "SecondLevel0", true);

            var midlevelMission = new ControlledMissionWithReturnValue <char>('r', "MidMission", new[] { "FirstLevel0" }, true);

            var finalMission = new ControlledMissionWithReturnValue <bool>(true, "FinalMission", new[] { "MidMission", "SecondLevel0" }, true);

            var allMissions = new IMission[] { independeantMission, level0Mission1, level0Mission2, midlevelMission, finalMission };

            foreach (var mission in allMissions)
            {
                missionRunner.RegisterMission(mission);
            }

            // Act
            await missionRunner.PerformAllMissions();

            // Assert
            Assert.AreEqual(0, independeantMission.Arguments.Count);
            Assert.AreEqual(0, level0Mission1.Arguments.Count);
            Assert.AreEqual(0, level0Mission2.Arguments.Count);
            Assert.AreEqual(1, midlevelMission.Arguments.Count);
            Assert.AreEqual(2, finalMission.Arguments.Count);

            Assert.AreEqual("value", midlevelMission.Arguments.Get("FirstLevel0"));

            Assert.AreEqual('r', finalMission.Arguments.Get("MidMission"));
            Assert.AreEqual(5.5, finalMission.Arguments.Get("SecondLevel0"));
        }