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(); }
/// <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); } } }
/// <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()); }