Esempio n. 1
0
        public void Should_Publish_Events_Var_Arg_Within_Batch()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new VarArgEventTranslator();

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

            var matcher = new RingBufferEventMatcher(ringBuffer);

            Assert.True(matcher.RingBufferWithEvents(new object[1] {
                "Foo1Bar1Baz1Bam1-0"
            }, new object[1] {
                "Foo2Bar2Baz2Bam2-1"
            }, new object[1] {
                "Foo4Bar4Baz4Bam4-2"
            }, new object[1] {
                "Foo5Bar5Baz5Bam5-3"
            }));
        }
Esempio n. 2
0
        public void Should_Publish_Event_Var_Arg()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new VarArgEventTranslator();

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

            var matcher = new RingBufferEventMatcher(ringBuffer);

            Assert.True(matcher.RingBufferWithEvents(
                            new object[1] {
                "Arg0-0"
            },
                            new object[1] {
                "Arg0Arg1-1"
            },
                            new object[1] {
                "Arg0Arg1Arg2-2"
            },
                            new object[1] {
                "Arg0Arg1Arg2Arg3-3"
            }));
        }
Esempio n. 3
0
        public void Should_Not_Try_Publish_Var_Three_Arg_When_Batch_Starts_At_Is_Negative()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new VarArgEventTranslator();

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

            var translator = new VarArgEventTranslator();

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

            IEventTranslatorVararg <object[]> translator = new VarArgEventTranslator();

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

            Assert.That(ringBuffer, IsRingBufferWithEvents("FooBarBazBam-0", "FooBarBazBam-1"));
        }
Esempio n. 6
0
        public void ShouldPublishEventsVarArgBatchSizeOfOne()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslatorVararg <object[]> translator = new VarArgEventTranslator();

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

            Assert.That(
                ringBuffer, IsRingBufferWithEvents(
                    "FooBarBazBam-0", "FooBarBazBam-1", null, null));
        }
Esempio n. 7
0
        public void Should_Not_Publish_Events_Var_Arg_If_Batch_Is_Larger_Than_RingBuffer()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new VarArgEventTranslator();

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

            AssertEmptyRingBuffer(ringBuffer);
        }
Esempio n. 8
0
        public void ShouldNotTryPublishEventsVarArgWhenBatchSizeIs0()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            var translator = new VarArgEventTranslator();

            try
            {
                Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(
                                                      translator, 1, 0, new object[] { "Foo0", "Bar0", "Baz0", "Bam0" },
                                                      new object[] { "Foo1", "Bar1", "Baz1", "Bam1" },
                                                      new object[] { "Foo2", "Bar2", "Baz2", "Bam2" }));
            }
            finally
            {
                AssertEmptyRingBuffer(ringBuffer);
            }
        }
Esempio n. 9
0
        public void ShouldPublishEventsVarArgWithinBatch()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslatorVararg <object[]> translator = new VarArgEventTranslator();

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

            Assert.That(
                ringBuffer, IsRingBufferWithEvents(
                    "Foo1Bar1Baz1Bam1-0", "Foo2Bar2Baz2Bam2-1", "Foo4Bar4Baz4Bam4-2", "Foo5Bar5Baz5Bam5-3"));
        }
Esempio n. 10
0
        public void ShouldNotPublishEventsVarArgIfBatchIsLargerThanRingBuffer()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(() => new object[1], 4);

            IEventTranslatorVararg <object[]> translator = new VarArgEventTranslator();

            try
            {
                Assert.Throws <ArgumentException>(() => ringBuffer.TryPublishEvents(
                                                      translator,
                                                      new[] { "Foo", "Bar", "Baz", "Bam" },
                                                      new[] { "Foo", "Bar", "Baz", "Bam" },
                                                      new[] { "Foo", "Bar", "Baz", "Bam" },
                                                      new[] { "Foo", "Bar", "Baz", "Bam" },
                                                      new[] { "Foo", "Bar", "Baz", "Bam" }));
            }
            finally
            {
                AssertEmptyRingBuffer(ringBuffer);
            }
        }
Esempio n. 11
0
        public void Should_Publish_Events_Var_Arg_Batch_Size_Of_One()
        {
            var ringBuffer = RingBuffer <object[]> .CreateSingleProducer(new ArrayFactory(1), 4);

            var translator = new VarArgEventTranslator();

            ringBuffer.PublishEvents(
                translator, 0, 1, new[] { "Foo", "Bar", "Baz", "Bam" }, new[] { "Foo1", "Bar1", "Baz1", "Bam1" });
            Assert.True(

                ringBuffer.TryPublishEvents(
                    translator, 0, 1, new[] { "Foo", "Bar", "Baz", "Bam" }, new[] { "Foo2", "Bar2", "Baz2", "Bam2" }));

            var matcher = new RingBufferEventMatcher(ringBuffer);

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