public FailedAnalyzedAssertion AnalyzeException(FailedAssertion part) { HandledException? handledException = null; IExceptionHandlerPattern?handledExceptionPattern = null; var exception = part.Exception !; foreach (var pattern in _patterns) { if (pattern.IsMatch(exception)) { handledException = pattern.Handle(part); if (handledException != null) { handledExceptionPattern = pattern; break; } } } FormattableString?failedAssertionMessage = handledException?.Message; if (handledException == null) { failedAssertionMessage = $@"Assertion threw {exception.GetType().FullName}: {exception.Message}"; } return(new FailedAnalyzedAssertion(part, FriendlyMessageFormatter.GetString(failedAssertionMessage, _context.EvaluatedExpressions), handledExceptionPattern, handledException?.CauseOfException)); }
private FriendlyMessage?EvaluatePattern(IFriendlyMessagePattern pattern) { try { if (pattern.IsMatch(_part)) { foreach (var subPattern in pattern.SubPatterns) { var message = EvaluatePattern(subPattern); if (message != null) { return(message); } } var formattedMessage = FriendlyMessageFormatter.GetString(pattern.TryGetFriendlyMessage(_part), _context.EvaluatedExpressions); return(new FriendlyMessage(formattedMessage, pattern)); } } catch { return(null); } return(null); }