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