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

            var translator = new OneArgEventTranslator();

            Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(translator, -1, 1, new[] { "Foo", "Foo" }));
            AssertEmptyRingBuffer(ringBuffer);
        }
示例#2
0
        public void Should_Not_Publish_Events_One_Arg_When_Batch_Extends_Past_End_Of_Array()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new OneArgEventTranslator();

            Assert.Throws <ArgumentException>(() => ringBuffer.PublishEvents(translator, 1, 3, new[] { "Foo", "Foo" }));
            AssertEmptyRingBuffer(ringBuffer);
        }
示例#3
0
        public void Should_Not_Publish_Events_One_Arg_If_Batch_Is_Larger_Than_Ring_Buffer()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new OneArgEventTranslator();

            Assert.Throws <ArgumentException>(() => ringBuffer.PublishEvents(translator, new string[] { "Boo", "Foo", "Foo", "Foo", "Foo" }));

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

            IEventTranslatorOneArg <object[], string> translator = new OneArgEventTranslator();

            ringBuffer.PublishEvent(translator, "Foo");
            ringBuffer.TryPublishEvent(translator, "Foo");

            Assert.That(ringBuffer, IsRingBufferWithEvents("Foo-0", "Foo-1"));
        }
示例#5
0
        public void ShouldPublishEventsOneArgWithinBatch()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslatorOneArg <object[], string> translator = new OneArgEventTranslator();

            ringBuffer.PublishEvents(translator, 1, 2, new[] { "Foo", "Foo", "Foo" });
            Assert.IsTrue(ringBuffer.TryPublishEvents(translator, 1, 2, new[] { "Foo", "Foo", "Foo" }));

            Assert.That(ringBuffer, IsRingBufferWithEvents("Foo-0", "Foo-1", "Foo-2", "Foo-3"));
        }
示例#6
0
        public void ShouldNotTryPublishEventsOneArgWhenBatchStartsAtIsNegative()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslatorOneArg <object[], string> translator = new OneArgEventTranslator();

            try
            {
                Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(translator, -1, 2, new[] { "Foo", "Foo" }));
            }
            finally
            {
                AssertEmptyRingBuffer(ringBuffer);
            }
        }
示例#7
0
        public void ShouldNotPublishEventsOneArgWhenBatchExtendsPastEndOfArray()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslatorOneArg <object[], string> translator = new OneArgEventTranslator();

            try
            {
                Assert.Throws <ArgumentException>(() => ringBuffer.PublishEvents(translator, 1, 3, new[] { "Foo", "Foo" }));
            }
            finally
            {
                AssertEmptyRingBuffer(ringBuffer);
            }
        }
示例#8
0
        public void Should_Publish_Events_One_Arg_Batch_Size_Of_One()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new OneArgEventTranslator();

            ringBuffer.PublishEvents(translator, 0, 1, new[] { "Boo" });
            Assert.True(ringBuffer.TryPublishEvents(translator, 0, 1, new[] { "Boo" }));

            var matcher = new RingBufferEventMatcher(ringBuffer);

            Assert.True(matcher.RingBufferWithEvents(new object[1] {
                "Boo-0"
            }, new object[1] {
                "Boo-1"
            }));
        }
示例#9
0
        public void Should_Publish_Event_One_Arg()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new OneArgEventTranslator();

            ringBuffer.PublishEvent(translator, "Arg");
            ringBuffer.TryPublishEvent(translator, "Arg");

            var matcher = new RingBufferEventMatcher(ringBuffer);

            Assert.True(matcher.RingBufferWithEvents(new object[1] {
                "Arg-0"
            }, new object[1] {
                "Arg-1"
            }));
        }