public static void CheckMessagesDoNotMatch <T>(List <T> messages, Expression <Func <T, bool> > predicate) { var binaryParts = ExpressionExtractor.GetBinaryChecks <T>(predicate).ToList(); var messageList = messages.ToList(); var errors = new List <Expression>(); foreach (var binaryCheck in binaryParts) { messageList = messageList.Where(message => binaryCheck.Compile().Invoke(message)).ToList(); if (messageList.Any()) { var expression = binaryCheck.Body as BinaryExpression; errors.Add(expression); } } if (messageList.Any()) { var sb = new StringBuilder(); sb.AppendLine(typeof(T).Name + "(s) found with:"); foreach (var err in errors) { sb.AppendLine(GetAssertionString(err)); } throw new Exception(sb.ToString()); } }
public static void CheckMessagesMatch <T>(List <T> messages, Expression <Func <T, bool> > predicate) { if (!messages.Any(predicate.Compile())) { var binaryParts = ExpressionExtractor.GetBinaryChecks <T>(predicate).ToList(); var messageList = messages.ToList(); foreach (var binaryCheck in binaryParts) { messageList = messageList.Where(message => binaryCheck.Compile().Invoke(message)).ToList(); if (!messageList.Any()) { throw new Exception(string.Format("No {0} found where {1}", typeof(T).Name, GetAssertionString(binaryCheck.Body))); } } } }