public void TryAddValidatesNotDisposed() { var mockConverter = new InjectableMockConverter { CreateBatchFromEventsHandler = (_e, _p) => Mock.Of <AmqpMessage>() }; var batch = new AmqpEventBatch(mockConverter, new BatchOptions { MaximumizeInBytes = 25 }); batch.Dispose(); Assert.That(() => batch.TryAdd(new EventData(new byte[0])), Throws.InstanceOf <ObjectDisposedException>()); }
public void DisposeCleansUpBatchMessages() { var currentIndex = -1; var options = new CreateBatchOptions { MaximumSizeInBytes = 5000 }; var eventMessages = new AmqpMessage[5]; var mockEnvelope = new Mock <AmqpMessage>(); var mockConverter = new InjectableMockConverter { CreateBatchFromEventsHandler = (_e, _p) => mockEnvelope.Object, CreateMessageFromEventHandler = (_e, _p) => eventMessages[++currentIndex] }; mockEnvelope .Setup(message => message.SerializedMessageSize) .Returns(0); for (var index = 0; index < eventMessages.Length; ++index) { eventMessages[index] = AmqpMessage.Create(new Data { Value = new ArraySegment <byte>(new byte[] { 0x66 }) }); } // Add the messages to the batch; all should be accepted. var batch = new AmqpEventBatch(mockConverter, options); for (var index = 0; index < eventMessages.Length; ++index) { Assert.That(batch.TryAdd(new EventData(new byte[0])), Is.True, $"The addition for index: { index } should fit and be accepted."); } // Dispose the batch and verify that each message has also been disposed. batch.Dispose(); for (var index = 0; index < eventMessages.Length; ++index) { Assert.That(() => eventMessages[index].ThrowIfDisposed(), Throws.InstanceOf <ObjectDisposedException>(), $"The message at index: { index } should have been disposed."); } }
public void DisposeClearsTheSize() { var mockMessage = new Mock <AmqpMessage>(); var mockConverter = new InjectableMockConverter(); mockConverter.CreateBatchFromEventsHandler = (_e, _p) => mockMessage.Object; mockMessage .Setup(message => message.SerializedMessageSize) .Returns(9959); var batch = new AmqpEventBatch(mockConverter, new BatchOptions { MaximumizeInBytes = 99 }); batch.Dispose(); Assert.That(batch.SizeInBytes, Is.EqualTo(0)); }
public void DisposeClearsTheCount() { var currentIndex = -1; var options = new BatchOptions { MaximumizeInBytes = 5000 }; var eventMessages = new AmqpMessage[5]; var mockEnvelope = new Mock <AmqpMessage>(); var mockConverter = new InjectableMockConverter(); mockConverter.CreateBatchFromEventsHandler = (_e, _p) => mockEnvelope.Object; mockConverter.CreateMessageFromEventHandler = (_e, _p) => eventMessages[++currentIndex]; mockEnvelope .Setup(message => message.SerializedMessageSize) .Returns(0); for (var index = 0; index < eventMessages.Length; ++index) { eventMessages[index] = AmqpMessage.Create(new Data { Value = new ArraySegment <byte>(new byte[] { 0x66 }) }); } // Add the messages to the batch; all should be accepted. var batch = new AmqpEventBatch(mockConverter, options); for (var index = 0; index < eventMessages.Length; ++index) { Assert.That(batch.TryAdd(new EventData(new byte[0])), Is.True, $"The addition for index: { index } should fit and be accepted."); } // Dispose the batch and verify that each message has also been disposed. batch.Dispose(); Assert.That(batch.Count, Is.EqualTo(0), "The count should have been cleared when the batch was disposed."); }