Beispiel #1
0
        public void Should_Publish_Events_Within_Batch()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator  = new NoArgEventTranslator();
            var translators = new[] { translator, translator, translator };

            ringBuffer.PublishEvents(translators, 1, 2);
            Assert.True(ringBuffer.TryPublishEvents(translators, 1, 2));

            var matcher = new RingBufferEventMatcher(ringBuffer);

            Assert.True(matcher.RingBufferWithEvents(
                            new object[1] {
                0L
            },
                            new object[1] {
                1L
            },
                            new object[1] {
                2L
            },
                            new object[1] {
                3L
            }));
        }
Beispiel #2
0
        public void Should_Not_Try_Publish_Events_When_Batch_Starts_At_Is_Negative()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new NoArgEventTranslator();

            Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(new[] { translator, translator, translator }, -1, 2));

            AssertEmptyRingBuffer(ringBuffer);
        }
Beispiel #3
0
        public void Should_Not_Try_Publish_Events_When_Batch_Extends_Past_End_Of_Array()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new NoArgEventTranslator();

            Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(new[] { translator, translator, translator }, 1, 3));

            AssertEmptyRingBuffer(ringBuffer);
        }
Beispiel #4
0
        public void Should_Not_Publish_Events_If_Batch_Is_Larger_Than_RingBuffer()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator  = new NoArgEventTranslator();
            var translators = new[] { translator, translator, translator, translator, translator };

            Assert.Throws <ArgumentException>(() => ringBuffer.PublishEvents(translators));
            Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(translators));
        }
Beispiel #5
0
        public void ShouldPublishEventNoArg()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslator <object[]> translator = new NoArgEventTranslator();

            ringBuffer.PublishEvent(translator);
            ringBuffer.TryPublishEvent(translator);

            Assert.That(ringBuffer, IsRingBufferWithEvents(0L, 1L));
        }
Beispiel #6
0
        public void ShouldPublishEventsNoArg()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslator <object[]> eventTranslator = new NoArgEventTranslator();
            var translators = new[] { eventTranslator, eventTranslator };

            ringBuffer.PublishEvents(translators);
            Assert.IsTrue(ringBuffer.TryPublishEvents(translators));

            Assert.That(ringBuffer, IsRingBufferWithEvents(0L, 1L, 2L, 3L));
        }
Beispiel #7
0
        public void ShouldNotTryPublishEventsWhenBatchStartsAtIsNegative()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslator <object[]> translator = new NoArgEventTranslator();

            try
            {
                Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(new[] { translator, translator, translator, translator }, -1, 2));
            }
            finally
            {
                AssertEmptyRingBuffer(ringBuffer);
            }
        }
Beispiel #8
0
        public void ShouldNotTryPublishEventsWhenBatchExtendsPastEndOfArray()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslator <object[]> translator = new NoArgEventTranslator();

            try
            {
                Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(new[] { translator, translator, translator }, 1, 3));
            }
            finally
            {
                AssertEmptyRingBuffer(ringBuffer);
            }
        }
Beispiel #9
0
        public void ShouldNotPublishEventsNoArgWhenBatchSizeIs0()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslator <object[]> translator = new NoArgEventTranslator();

            try
            {
                Assert.Throws <ArgumentException>(() => ringBuffer.PublishEvents(new[] { translator, translator, translator, translator }, 1, 0));
            }
            finally
            {
                AssertEmptyRingBuffer(ringBuffer);
            }
        }
Beispiel #10
0
        public void ShouldNotPublishEventsNoArgIfBatchIsLargerThanRingBuffer()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslator <object[]> eventTranslator = new NoArgEventTranslator();
            var translators =
                new[] { eventTranslator, eventTranslator, eventTranslator, eventTranslator, eventTranslator };

            try
            {
                Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(translators));
            }
            finally
            {
                AssertEmptyRingBuffer(ringBuffer);
            }
        }