Skip to content

Commit

Permalink
Added assertion to list integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
HermanSchoenfeld committed May 28, 2024
1 parent ea758b0 commit 65a497a
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
10 changes: 10 additions & 0 deletions src/Hydrogen.NUnit/AssertEx.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ public static void ListIntegrationTest<T>(
expected ??= new List<T>();
itemComparer ??= EqualityComparer<T>.Default;

// Test 0: Adding via indexing operator fails
var val = randomItemGenerator(RNG, 1).Single();
Assert.That(() => expected[0] = val, Throws.Exception);
Assert.That(() => list[0] = val, Throws.Exception);

// Test 1: Add nothing
expected.AddRangeSequentially(Enumerable.Empty<T>());
list.AddRange(Enumerable.Empty<T>());
Expand Down Expand Up @@ -239,6 +244,11 @@ public static void BufferIntegrationTest(
expected ??= new BufferAdapter(new List<byte>());
var itemComparer = ByteArrayEqualityComparer.Instance;

// Test 0: Adding via indexing operator fails
byte val = 23;
Assert.That(() => expected[0] = val, Throws.Exception);
Assert.That(() => buffer[0] = val, Throws.Exception);

// Test 1: Add nothing
expected.AddRange(Tools.Spans.Empty<byte>());
buffer.AddRange(Tools.Spans.Empty<byte>());
Expand Down
11 changes: 9 additions & 2 deletions src/Hydrogen/Collections/Paged/PagedListBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -375,15 +375,22 @@ protected void CheckLoaded() {
}

protected override void CheckIndex(long index, bool allowAtEnd = false) {
Guard.Ensure(InternalPages.Count > 0, "No pages");
if (allowAtEnd && index == 0)
return;

if (InternalPages.Count == 0)
throw new InvalidOperationException("No pages");

var startIX = InternalPages[0].StartIndex;
var lastIX = InternalPages[InternalPages.Count - 1].EndIndex;
var collectionCount = lastIX - startIX + 1;
Guard.CheckIndex(index, startIX, collectionCount, allowAtEnd);
}

protected override void CheckRange(long index, long count, bool rightAligned = false) {
Guard.Ensure(InternalPages.Count > 0, "No pages");
if (InternalPages.Count == 0)
throw new InvalidOperationException("No pages");

var startIX = InternalPages[0].StartIndex;
var lastIX = InternalPages[InternalPages.Count - 1].EndIndex;
var collectionCount = lastIX - startIX + 1;
Expand Down

0 comments on commit 65a497a

Please sign in to comment.