static void CheckDefaultStructureAndPredicate(LogifyAlert client, Predicate <IExceptionReportSender> predicate) { IExceptionReportSender sender = ExceptionLoggerFactory.Instance.PlatformReportSender; Assert.AreEqual(true, sender != null); Assert.AreEqual(typeof(EmptyBackgroundExceptionReportSender), sender.GetType()); CheckSenderConsistency(client, sender); predicate(sender); sender = ((EmptyBackgroundExceptionReportSender)sender).InnerSender; Assert.AreEqual(true, sender != null); Assert.AreEqual(typeof(CompositeExceptionReportSender), sender.GetType()); CheckSenderConsistency(client, sender); predicate(sender); CompositeExceptionReportSender compositeSender = (CompositeExceptionReportSender)sender; CheckSenderConsistency(client, compositeSender); predicate(compositeSender); Assert.AreEqual(true, compositeSender.Senders != null); Assert.AreEqual(2, compositeSender.Senders.Count); sender = compositeSender.Senders[0]; Assert.AreEqual(true, sender != null); Assert.AreEqual(typeof(WebExceptionReportSender), sender.GetType()); CheckSenderConsistency(client, sender); predicate(sender); sender = compositeSender.Senders[1]; Assert.AreEqual(true, sender != null); Assert.AreEqual(typeof(OfflineDirectoryExceptionReportSender), sender.GetType()); CheckSenderConsistency(client, sender); predicate(sender); }