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