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