public void ProcessBatch_Subscriberfails_WithFakeStoreProvider()
        {
            TestUtils.TestHelper.autoEvent = new AutoResetEvent(false);

            var m = new Message();

            var messagePacket = TestUtils.TestHelper.BuildAMessage<Message>(m)
                .WithSubscriberMetadataFor(typeof(TestUtils.SpeedySubscriberGuaranteedExceptions<Message>), false, false).GetMessage();
            var beforeRetryCount = messagePacket.SubscriberMetadataList[0].RetryCount;

            MessagePacket<Message> outputPostProcessMP = default(MessagePacket<Message>);
            string outputMessageId = string.Empty;

            var MessagePubSubChannel = new PublishSubscribeChannel<Message>();

            var stubStoreProvider = new StubIStoreProvider<Message>
            {
                ProcessStoreAsBatchFuncOfMessagePacketOfT0StringBoolean = funct => MessagePubSubChannel.HandleMessageForBatchProcessing(messagePacket, messagePacket.MessageId.ToString()),
                UpdateMessageStoreMessagePacketOfT0 = UpdatedMessagepacket =>
                {
                    outputPostProcessMP = UpdatedMessagepacket;
                    TestUtils.TestHelper.autoEvent.Set();
                    return;
                },
                SubscriberGroupCompletedForMessageString = messageId =>
                {
                    Assert.IsTrue(messagePacket.MessageId.ToString() == messageId);

                    return true;
                }
            };
            MessagePubSubChannel.StorageProvider = stubStoreProvider;

            MessagePubSubChannel.AddSubscriberType(typeof(TestUtils.SpeedySubscriberGuaranteedExceptions<Message>)).WithTimeToExpire(new TimeSpan(0, 0, 0, 1));

            MessagePubSubChannel.ProcessBatch();
            TestUtils.TestHelper.autoEvent.WaitOne(); //new TimeSpan(0, 0, 0, 5, 0)
            Assert.IsTrue(outputPostProcessMP.SubscriberMetadataList[0].RetryCount == messagePacket.SubscriberMetadataList[0].RetryCount + 1);
            Assert.IsTrue(outputPostProcessMP.MessageId == messagePacket.MessageId);
            Assert.IsTrue(outputPostProcessMP.SubscriberMetadataList.Count == 1);
            Assert.IsTrue(outputPostProcessMP.SubscriberMetadataList[0].FailedOrTimedOut == true);
        }