コード例 #1
0
        public void Merge(CorrectValueRule rule)
        {
            if (rule is null)
            {
                return;
            }

            if (Name != rule.Name)
            {
                return;
            }

            if (rule.Mode != CorrectValueRuleMode.Append)
            {
                return;
            }

            foreach (var token in rule.Tokens)
            {
                if (token.MutuallyExclusive)
                {
                    continue;
                }

                if (!TokenMutexCalculator.Available(Tokens, token))
                {
                    continue;
                }

                Tokens.Add(token);
            }
        }
コード例 #2
0
ファイル: CorrectContext.cs プロジェクト: wwwK/Leo
        protected void AddOrUpdateValueRule(CorrectValueRule rule)
        {
            lock (_valueRuleLockObj)
            {
                var target = _correctValueRules.FirstOrDefault(r => r.Name == rule.Name);

                if (target is null)
                {
                    // Regardless of the value of ValueRuleMode, as long as the rule does not exist,
                    // this branch is always entered.
                    _correctValueRules.Add(rule);
                }

                else if (rule.Mode == CorrectValueRuleMode.Overwrite)
                {
                    _correctValueRules.Remove(target);
                    _correctValueRules.Add(rule);
                }

                else if (rule.Mode == CorrectValueRuleMode.Append)
                {
                    target.Merge(rule);
                }
            }
        }
コード例 #3
0
ファイル: InternalValidator.cs プロジェクト: wwwK/Leo
        private static void ValidCore(object value, CorrectValueRule valueRule, List <LeoVerifyFailure> failures, List <string> nameOfExecutedRules)
        {
            var verifyValSet = valueRule
                               .ValidValue(value)
                               .Where(x => x.IsSuccess == false)
                               .ToList();

            if (verifyValSet.Any())
            {
                var count = verifyValSet.Count;

                var failure = new LeoVerifyFailure(
                    valueRule.Name,
                    $"Member {valueRule.Name} encountered {(count == 1 ? "an error" : "some errors")} during verification.",
                    value)
                {
                    Details = verifyValSet.Select(verifyVal => new LeoVerifyError {
                        ErrorMessage = verifyVal.ErrorMessage
                    }).ToList()
                };

                failures.Add(failure);
                nameOfExecutedRules.AddRange(verifyValSet.Select(verifyVal => verifyVal.NameOfExecutedRule));
            }
        }