Beispiel #1
0
        /// <summary>
        /// Generates list of scenarios for the specified scenario types
        /// </summary>
        /// <param name="command">Model with base scenarios and settings</param>
        /// <returns>List of generated scenarios</returns>
        public IList <AutopilotScenarioModel> Engage(AutopilotEngageModel command)
        {
            var autopilotSettings  = _autopilotSettingsRepository.GetDefault();
            var flexibilityLevelId = command.FlexibilityLevelId != 0
                ? command.FlexibilityLevelId
                : autopilotSettings.DefaultFlexibilityLevelId;
            var autopilotRules     = GetAutopilotRules(flexibilityLevelId);
            var generatedScenarios = new List <AutopilotScenarioModel>();
            var now = DateTime.UtcNow;
            var scenarioTypesToGenerate = Enum.GetValues(typeof(AutopilotScenarioType))
                                          .Cast <AutopilotScenarioType>()
                                          .Skip(MaxAutopilotScenarios - autopilotSettings.ScenariosToGenerate)
                                          .ToList();

            foreach (var scenarioModel in command.Scenarios)
            {
                var(tightenPassIndex, loosenPassIndex) = scenarioModel.GetAutopilotPassIndexes();
                var tightenPass = scenarioModel.Passes[tightenPassIndex];
                var loosenPass  = scenarioModel.Passes[loosenPassIndex];

                if (tightenPassIndex == loosenPassIndex)
                {
                    tightenPass.AutopilotType = AutopilotPassType.TightenAndLoosenFrom;
                }
                else
                {
                    tightenPass.AutopilotType = AutopilotPassType.TightenFrom;
                    loosenPass.AutopilotType  = AutopilotPassType.LoosenFrom;
                }

                var autopilotPasses = new Dictionary <AutopilotPassType, AutopilotPassModel>
                {
                    {
                        AutopilotPassType.TightenALot,
                        BuildAutopilotPass(tightenPass, autopilotRules, AutopilotPassType.TightenALot, now, "AP Tighten A Lot Pass")
                    },
                    {
                        AutopilotPassType.TightenABit,
                        BuildAutopilotPass(tightenPass, autopilotRules, AutopilotPassType.TightenABit, now, "AP Tighten A Bit Pass")
                    },
                    {
                        AutopilotPassType.LoosenABit,
                        BuildAutopilotPass(loosenPass, autopilotRules, AutopilotPassType.LoosenABit, now, "AP Loosen A Bit Pass")
                    },
                    {
                        AutopilotPassType.LoosenALot,
                        BuildAutopilotPass(loosenPass, autopilotRules, AutopilotPassType.LoosenALot, now, "AP Loosen A Lot Pass")
                    }
                };

                foreach (var scenarioType in scenarioTypesToGenerate)
                {
                    generatedScenarios.Add(GenerateAutopilotScenarioByType(scenarioType, scenarioModel, autopilotPasses));
                }
            }

            return(generatedScenarios);
        }
Beispiel #2
0
        public async Task FailWhenMissingPassesData(string errorMessage)
        {
            _model = BuildModel(passesNumber: 0, tightenPassIndex: null, loosenPassIndex: null);
            var validationResult = _target.Validate(_model);

            using (new AssertionScope())
            {
                _ = validationResult.IsValid.Should().BeFalse();
                _ = validationResult.Errors.Count.Should().BeGreaterThan(0);
                _ = validationResult.Errors.Should().Contain(er => er.ErrorMessage == errorMessage);
            }
        }
Beispiel #3
0
        public async Task FailWhenNotValidPassIndexes(string errorMessage)
        {
            _model = BuildModel(tightenPassIndex: 12, loosenPassIndex: 10);
            var validationResult = _target.Validate(_model);

            using (new AssertionScope())
            {
                _ = validationResult.IsValid.Should().BeFalse();
                _ = validationResult.Errors.Count.Should().BeGreaterThan(0);
                _ = validationResult.Errors.Should().Contain(er => er.ErrorMessage == errorMessage);
            }
        }
Beispiel #4
0
 private void AssumeValidModelIsSupplied()
 {
     _model = BuildModel();
 }