Пример #1
0
        // ReSharper disable once ParameterOnlyUsedForPreconditionCheck.Local
        internal static void ExpectMessagesInList(ModelReportErrorsList modelReportErrorsList, IReadOnlyCollection <string> expectedMessages)
        {
            Assert.NotNull(modelReportErrorsList);
            Assert.Equal(expectedMessages.Count(), modelReportErrorsList.Count);

            for (var i = 0; i < expectedMessages.Count(); ++i)
            {
                Assert.Equal(expectedMessages.ElementAt(i), modelReportErrorsList.ElementAt(i));
            }
        }
Пример #2
0
        // ReSharper disable once ParameterOnlyUsedForPreconditionCheck.Local
        private static IModelReport BuildModelReport(IErrorsCollection errorsCollection, Translator translator, int depth, IExecutionOptions executionOptions)
        {
            if (depth > executionOptions.MaxDepth)
            {
                throw new MaxDepthExceededException(executionOptions.MaxDepth);
            }

            if (errorsCollection.IsEmpty)
            {
                return(ModelReport.Empty);
            }

            var errorsList = new ModelReportErrorsList();

            if (errorsCollection.Errors.Any())
            {
                var errors = errorsCollection.Errors
                             .Select(e => translator(e))
                             .Distinct()
                             .ToList();

                errorsList.AddRange(errors);
            }

            if (!errorsCollection.Members.Any())
            {
                return(errorsList);
            }

            var report = errorsList.Any()
                ? new ModelReport {
                { string.Empty, errorsList }
            }
                : new ModelReport();

            foreach (var memberPair in errorsCollection.Members)
            {
                var memberReport = BuildModelReport(memberPair.Value, translator, depth + 1, executionOptions);

                if (memberReport != null)
                {
                    report.Add(memberPair.Key, memberReport);
                }
            }

            return(report);
        }