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" })); }
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); }
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); }
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")); }
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)); }
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); }
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); } }
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); } }
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")); }
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" })); }
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" })); }