public void Dispose() { // arrange ITransmissionStorage <AttachmentDescriptor> storage = new Mock <ITransmissionStorage <AttachmentDescriptor> >().Object; ITransmissionSender <AttachmentDescriptor> sender = new Mock <ITransmissionSender <AttachmentDescriptor> >().Object; BlobStorageTransmitter transmitter = new BlobStorageTransmitter(storage, sender); // act Action verify = () => transmitter.Dispose(); // assert Assert.Null(Record.Exception(verify)); }
public void Enqueue_NoException() { // assert ITransmissionStorage <AttachmentDescriptor> storage = new Mock <ITransmissionStorage <AttachmentDescriptor> >().Object; ITransmissionSender <AttachmentDescriptor> sender = new Mock <ITransmissionSender <AttachmentDescriptor> >().Object; ITelemetryAttachmentTransmitter transmitter = new BlobStorageTransmitter(storage, sender); AttachmentDescriptor data = new Mock <AttachmentDescriptor>().Object; // act Action verify = () => new BlobStorageTransmitter(storage, sender); // arrange Assert.Null(Record.Exception(verify)); }
public void Enqueue_DataNull() { // arrange ITransmissionStorage <AttachmentDescriptor> storage = new Mock <ITransmissionStorage <AttachmentDescriptor> >().Object; ITransmissionSender <AttachmentDescriptor> sender = new Mock <ITransmissionSender <AttachmentDescriptor> >().Object; ITelemetryAttachmentTransmitter transmitter = new BlobStorageTransmitter(storage, sender); AttachmentDescriptor data = null; // act Action verify = () => transmitter.Enqueue(data); // assert Assert.Throws <ArgumentNullException>("data", verify); }
public void Enqueue_TransmissionFlow() { // assert ManualResetEventSlim resetEvent = new ManualResetEventSlim(); Mock <ITransmissionStorage <AttachmentDescriptor> > storage = new Mock <ITransmissionStorage <AttachmentDescriptor> >(); Mock <ITransmissionSender <AttachmentDescriptor> > sender = new Mock <ITransmissionSender <AttachmentDescriptor> >(); ConcurrentQueue <AttachmentDescriptor[]> bufferQueue = new ConcurrentQueue <AttachmentDescriptor[]>(); storage .Setup(t => t.EnqueueAsync(It.IsAny <AttachmentDescriptor[]>(), It.IsAny <CancellationToken>())) .Callback((AttachmentDescriptor[] d, CancellationToken t) => bufferQueue.Enqueue(d)); storage .Setup(t => t.DequeueAsync(It.IsAny <CancellationToken>())) .Returns(() => { int count = 0; List <AttachmentDescriptor> results = new List <AttachmentDescriptor>(); while (bufferQueue.TryDequeue(out AttachmentDescriptor[] d) && count < 10) { results.AddRange(d); count++; } return(Task.FromResult(results.ToArray())); }); sender .Setup(t => t.SendAsync(It.IsAny <AttachmentDescriptor[]>(), It.IsAny <CancellationToken>())) .Callback(() => resetEvent.Set()); ITelemetryAttachmentTransmitter transmitter = new BlobStorageTransmitter(storage.Object, sender.Object); AttachmentDescriptor data = new Mock <AttachmentDescriptor>().Object; // act transmitter.Enqueue(data); // arrange resetEvent.Wait(TimeSpan.FromSeconds(5)); sender.Verify((ITransmissionSender <AttachmentDescriptor> s) => s.SendAsync(It.Is((AttachmentDescriptor[] d) => d.Length == 1), It.IsAny <CancellationToken>()), Times.Once); }