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

            var translator = new ThreeArgEventTranslator();

            ringBuffer.PublishEvents(
                translator, 1, 2, new[] { "Foo0", "Foo1", "Foo2" }, new[] { "Bar0", "Bar1", "Bar2" },
                new[] { "Baz0", "Baz1", "Baz2" });
            Assert.True(ringBuffer.TryPublishEvents(
                            translator, 1, 2, new[] { "Foo3", "Foo4", "Foo5" }, new[] { "Bar3", "Bar4", "Bar5" },
                            new[] { "Baz3", "Baz4", "Baz5" }));

            var matcher = new RingBufferEventMatcher(ringBuffer);

            Assert.True(matcher.RingBufferWithEvents(new object[1] {
                "Foo1Bar1Baz1-0"
            }, new object[1] {
                "Foo2Bar2Baz2-1"
            }, new object[1] {
                "Foo4Bar4Baz4-2"
            }, new object[1] {
                "Foo5Bar5Baz5-3"
            }));
        }
Example #2
0
        public void Should_Not_Try_Publish_Events_Three_Arg_When_Batch_Extends_Past_End_Of_Array()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new ThreeArgEventTranslator();

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

            var translator = new ThreeArgEventTranslator();

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

            IEventTranslatorThreeArg <object[], string, string, string> translator = new ThreeArgEventTranslator();

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

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

            IEventTranslatorThreeArg <object[], string, string, string> translator = new ThreeArgEventTranslator();

            ringBuffer.PublishEvents(
                translator, 0, 1, new[] { "Foo", "Foo" }, new[] { "Bar", "Bar" }, new[] { "Baz", "Baz" });
            ringBuffer.TryPublishEvents(
                translator, 0, 1, new[] { "Foo", "Foo" }, new[] { "Bar", "Bar" }, new[] { "Baz", "Baz" });

            Assert.That(ringBuffer, IsRingBufferWithEvents("FooBarBaz-0", "FooBarBaz-1", null, null));
        }
Example #6
0
        public void Should_Not_Publish_Events_Three_Arg_If_Batch_Is_Larger_Than_RingBuffer()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new ThreeArgEventTranslator();

            Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(
                                                  translator,
                                                  new[] { "Foo", "Foo", "Foo", "Foo", "Foo" },
                                                  new[] { "Bar", "Bar", "Bar", "Bar", "Bar" },
                                                  new[] { "Baz", "Baz", "Baz", "Baz", "Baz" }));


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

            IEventTranslatorThreeArg <object[], string, string, string> translator = new ThreeArgEventTranslator();

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

            IEventTranslatorThreeArg <object[], string, string, string> translator = new ThreeArgEventTranslator();

            try
            {
                Assert.Throws <ArgumentException>(() => ringBuffer.PublishEvents(
                                                      translator, 1, 3, new[] { "Foo", "Foo" }, new[] { "Bar", "Bar" },
                                                      new[] { "Baz", "Baz" }));
            }
            finally
            {
                AssertEmptyRingBuffer(ringBuffer);
            }
        }
Example #9
0
        public void ShouldPublishEventsThreeArgWithinBatch()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslatorThreeArg <object[], string, string, string> translator = new ThreeArgEventTranslator();

            ringBuffer.PublishEvents(
                translator, 1, 2, new[] { "Foo0", "Foo1", "Foo2" }, new[] { "Bar0", "Bar1", "Bar2" },
                new[] { "Baz0", "Baz1", "Baz2" }
                );
            Assert.IsTrue(
                ringBuffer.TryPublishEvents(
                    translator, 1, 2, new[] { "Foo3", "Foo4", "Foo5" }, new[] { "Bar3", "Bar4", "Bar5" },
                    new[] { "Baz3", "Baz4", "Baz5" }));

            Assert.That(ringBuffer, IsRingBufferWithEvents("Foo1Bar1Baz1-0", "Foo2Bar2Baz2-1", "Foo4Bar4Baz4-2", "Foo5Bar5Baz5-3"));
        }
Example #10
0
        public void Should_Publish_Event_Three_Arg()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new ThreeArgEventTranslator();

            ringBuffer.PublishEvent(translator, "Arg0", "Arg1", "Arg2");
            ringBuffer.TryPublishEvent(translator, "Arg0", "Arg1", "Arg2");

            var matcher = new RingBufferEventMatcher(ringBuffer);

            Assert.True(matcher.RingBufferWithEvents(new object[1] {
                "Arg0Arg1Arg2-0"
            }, new object[1] {
                "Arg0Arg1Arg2-1"
            }));
        }
Example #11
0
        public void Should_Publish_Events_Three_Arg_Batch_Size_Of_One()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new ThreeArgEventTranslator();

            ringBuffer.PublishEvents(
                translator, 0, 1, new[] { "Foo", "Foo" }, new[] { "Bar", "Bar" }, new[] { "Baz", "Baz" });
            ringBuffer.TryPublishEvents(
                translator, 0, 1, new[] { "Foo", "Foo" }, new[] { "Bar", "Bar" }, new[] { "Baz", "Baz" });


            var matcher = new RingBufferEventMatcher(ringBuffer);

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