public void enqueues_can_come_from_multiple_consumers()
        {
            const int trials = 100;
            int[] count = { 0 };
            var block = new ManualResetEvent(false);

            for (var i = 0; i < trials; i++)
            {
                ThreadPool.QueueUserWorkItem(
                    s =>
                    {
                        var writer = new TransactionFileWriter<object>(Filename, new BinaryFormatter());
                        writer.Enqueue(new object());
                        Interlocked.Increment(ref count[0]);
                        if (count[0] == trials)
                        {
                            block.Set();
                        }
                    });
            }
            block.WaitOne();

            var checksum = new FileChecksum(Filename + ".write.chk");
            Assert.GreaterOrEqual(checksum.GetValue(), 4100, "Final writer checksum for the message content did not match expectations");
        }
        public void enqueued_item_exists_when_dequeued()
        {
            var writer = new TransactionFileWriter<object>(Filename, new BinaryFormatter());
            writer.Enqueue(new object());

            var reader = new TransactionFileReader<object>(Filename, new BinaryFormatter());
            var item = reader.Dequeue();
            Assert.IsNotNull(item);
        }
 public void filestream_is_disposed()
 {
     var writer = new TransactionFileWriter<object>("When_disposing_a_writer", new BinaryFormatter());
     writer.Dispose();
     Assert.IsNull(writer.FileStream);
 }
 public void name_is_set()
 {
     var writer = new TransactionFileWriter<object>("When_instantiating_a_writer", new BinaryFormatter());
     Assert.IsNotNullOrEmpty(writer.ChecksumName);
 }