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); }