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")); }
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")); }