public void ReturnsExpectedResultForARuleSetThatReturnsSuccess()
        {
            var rules = new List <IRule>
            {
                AnyRuleThatReturns(Result.Ok()),
                AnyRuleThatReturns(Result.Ok())
            };

            _ruleSet.GetRules().Returns(rules);

            _ruleSetFactory.GetRuleSet(Arg.Any <RuleSetType>()).Returns(_ruleSet);

            var ruleSetProcessor = new RuleSetProcessor(_ruleSetFactory);

            var result = ruleSetProcessor.ApplyRuleSet(new ScheduledFlightContext());

            result.IsSuccess.ShouldBeTrue();
        }
Esempio n. 2
0
        /// <summary>
        /// Applies all rules to the specified item
        /// </summary>
        void ApplyRules <T>(T checkable, params IConfigurationNode[] configurations) where T : ICheckable
        {
            // get all rules for the type, filter out rules that are disabled or not applicable
            var rules = m_RuleSet.GetRules <T>()
                        .Where(r => IsRuleEnabled(r, configurations))
                        .Where(r => r.IsApplicable(checkable));

            foreach (var rule in rules)
            {
                // if a violation was found, write a violation to the output writer
                if (!rule.IsConsistent(checkable))
                {
                    var severity = configurations.Select(c => c.GetValue <Severity>(GetRuleSeveritySettingsName(rule))).Max();
                    GetOutputWriter <T>().WriteViolation(rule, severity, checkable);
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// ルールチェックを実行する。
        /// </summary>
        public static ValidationResult[] Validate(IRuleSet ruleSet, string baseFolder, bool forceOpenScene = false)
        {
            var rules = ruleSet.GetRules();
            ValidationTarget target;
            var results = new List <ValidationResult>();

            try
            {
                target = ruleSet.TargetFinder.Find(baseFolder, forceOpenScene);
                RegisterUndo(target);
            }
            catch (FatalValidationErrorException e)
            {
                Debug.LogError(e.Message);
                var result = new ValidationResult("検証対象の検索");
                result.AddIssue(new Issue(null, IssueLevel.Fatal, e.Message));
                results.Add(result);
                return(results.ToArray());
            }
            foreach (var rule in rules)
            {
                try
                {
                    ValidationResult result = rule.Validate(target);
                    results.Add(result);
                }
                catch (FatalValidationErrorException e)
                {
                    Debug.LogError("ルールチェックを中断しました:" + e.Message);
                    results.Add(rule.GetResult());
                    break;
                }
            }
            Undo.RevertAllInCurrentGroup();
            return(results.ToArray());
        }