From b1839e9d70dd16a437733bb6d02ce52a8c715a21 Mon Sep 17 00:00:00 2001 From: thefringeninja Date: Wed, 2 May 2018 14:06:41 +0200 Subject: [PATCH 1/2] failing test --- ...qlStreamStoreAcceptanceTests.ReadStream.cs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/SqlStreamStore.AcceptanceTests/SqlStreamStoreAcceptanceTests.ReadStream.cs b/src/SqlStreamStore.AcceptanceTests/SqlStreamStoreAcceptanceTests.ReadStream.cs index 49677595e..25579446d 100644 --- a/src/SqlStreamStore.AcceptanceTests/SqlStreamStoreAcceptanceTests.ReadStream.cs +++ b/src/SqlStreamStore.AcceptanceTests/SqlStreamStoreAcceptanceTests.ReadStream.cs @@ -1,5 +1,6 @@ namespace SqlStreamStore { + using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -380,6 +381,25 @@ public async Task When_read_deleted_stream_backwards_then_should_get_StreamNotFo } } + [Theory, InlineData(0), InlineData(1)] + public async Task Can_read_stream_backwards_starting_past_end_of_stream(int fromVersionInclusive) + { + using(var fixture = GetFixture()) + { + using(var store = await fixture.GetStreamStore()) + { + await store.AppendToStream("stream-1", ExpectedVersion.NoStream, Array.Empty()); + + var streamMessagesPage = + await store.ReadStreamBackwards("stream-1", fromVersionInclusive, 1); + + streamMessagesPage.Status.ShouldBe(PageReadStatus.Success); + streamMessagesPage.Messages.Length.ShouldBe(0); + streamMessagesPage.IsEnd.ShouldBeTrue(); + } + } + } + // ReSharper disable once UnusedMethodReturnValue.Global public static IEnumerable GetReadStreamForwardsTheories() { From df31f2dce39ddf09b2f81db66a52a47878d9bcc3 Mon Sep 17 00:00:00 2001 From: thefringeninja Date: Wed, 2 May 2018 14:11:11 +0200 Subject: [PATCH 2/2] fixed ArgumentOutOfRangeException in InMemoryStreamStore implementation --- src/SqlStreamStore/InMemory/InMemoryStreamStore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SqlStreamStore/InMemory/InMemoryStreamStore.cs b/src/SqlStreamStore/InMemory/InMemoryStreamStore.cs index 45d7d6856..b51ff77b3 100644 --- a/src/SqlStreamStore/InMemory/InMemoryStreamStore.cs +++ b/src/SqlStreamStore/InMemory/InMemoryStreamStore.cs @@ -589,7 +589,7 @@ protected override Task ReadStreamBackwardsInternal( var messages = new List(); var i = fromVersionInclusive == StreamVersion.End ? stream.Messages.Count - 1 : fromVersionInclusive; - while (i >= 0 && count > 0) + while (i < stream.Messages.Count && i >= 0 && count > 0) { var inMemorymessage = stream.Messages[i]; StreamMessage message;