public void should_clear_pending_entries_on_purge()
        {
            _batchSize = 1;
            var persistedBatches = new List <List <MatcherEntry> >();

            CapturePersistedBatches(persistedBatches);
            // Persisting one batch to initialize the persister
            EnqueueMessageToPersist();
            _matcher.Start();
            Wait.Until(() => persistedBatches.Count == 1, 2);
            // We block the persister and wait for it to be in the persist method to simulate a long persistence
            var batcherShouldResumePersistence = new ManualResetEvent(false);
            var batcherIsWaitingForSignalInThePersistenceLoop = WaitForSignalThenCapturePersistedBatches(batcherShouldResumePersistence, persistedBatches);

            // Enqueing 4 messages, one will be blocked in "long persistence", 3 will be waiting
            EnqueueMessageToPersist();
            EnqueueMessageToPersist();
            EnqueueMessageToPersist();
            EnqueueMessageToPersist();
            batcherIsWaitingForSignalInThePersistenceLoop.WaitOne();

            // The 3 waiting messages should be purged
            var purgedCount = _matcher.Purge();

            batcherShouldResumePersistence.Set();
            _matcher.Stop();

            persistedBatches.Count.ShouldEqual(2);
            purgedCount.ShouldEqual(3);
        }