public void AsEnumerableReturnsTheEvents()
        {
            var currentIndex = -1;
            var maximumSize  = 5000;
            var options      = new CreateBatchOptions {
                MaximumSizeInBytes = maximumSize
            };
            var eventMessages = new AmqpMessage[5];
            var batchEvents   = new EventData[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)
            {
                var message = new Mock <AmqpMessage>();
                message.Setup(msg => msg.SerializedMessageSize).Returns(50);
                eventMessages[index] = message.Object;
            }

            var batch = new AmqpEventBatch(mockConverter, options);

            for (var index = 0; index < eventMessages.Length; ++index)
            {
                batchEvents[index] = new EventData(new byte[0]);
                batch.TryAdd(batchEvents[index]);
            }

            IEnumerable <EventData> batchEnumerable = batch.AsEnumerable <EventData>();

            Assert.That(batchEnumerable, Is.Not.Null, "The batch enumerable should have been populated.");

            var batchEnumerableList = batchEnumerable.ToList();

            Assert.That(batchEnumerableList.Count, Is.EqualTo(batch.Count), "The wrong number of events was in the enumerable.");

            for (var index = 0; index < batchEvents.Length; ++index)
            {
                Assert.That(batchEnumerableList.Contains(batchEvents[index]), $"The event at index: { index } was not in the enumerable.");
            }
        }
Beispiel #2
0
        public void AsEnumerableValidatesTheTypeParameter()
        {
            var options = new BatchOptions {
                MaximumizeInBytes = 5000
            };
            var mockEnvelope  = new Mock <AmqpMessage>();
            var mockConverter = new InjectableMockConverter();

            mockConverter.CreateBatchFromEventsHandler = (_e, _p) => mockEnvelope.Object;

            mockEnvelope
            .Setup(message => message.SerializedMessageSize)
            .Returns(0);

            var batch = new AmqpEventBatch(mockConverter, options);

            Assert.That(() => batch.AsEnumerable <EventData>(), Throws.InstanceOf <FormatException>());
        }