Reformat / cleanup
All checks were successful
NuGet Publish / build-and-pack (push) Successful in 46s
NuGet Publish / publish-to-gitea (push) Successful in 56s

This commit is contained in:
Joseph Doherty
2026-02-21 08:10:36 -05:00
parent 4c6aaa5a3f
commit a70d8befae
176 changed files with 50555 additions and 49587 deletions

View File

@@ -1,31 +1,25 @@
using ZB.MOM.WW.CBDD.Bson;
using ZB.MOM.WW.CBDD.Core;
using ZB.MOM.WW.CBDD.Core.Collections;
using ZB.MOM.WW.CBDD.Core.Indexing;
using ZB.MOM.WW.CBDD.Shared;
using System;
using Xunit;
namespace ZB.MOM.WW.CBDD.Tests;
public class IndexDirectionTests : IDisposable
{
private readonly TestDbContext _db;
private readonly string _dbPath = "index_direction_tests.db";
private readonly Shared.TestDbContext _db;
/// <summary>
/// Initializes database state for index direction tests.
/// Initializes database state for index direction tests.
/// </summary>
public IndexDirectionTests()
{
if (File.Exists(_dbPath)) File.Delete(_dbPath);
_db = new Shared.TestDbContext(_dbPath);
_db = new TestDbContext(_dbPath);
// _db.Database.EnsureCreated(); // Not needed/doesn't exist? StorageEngine handles creation.
}
/// <summary>
/// Disposes test resources and deletes temporary files.
/// Disposes test resources and deletes temporary files.
/// </summary>
public void Dispose()
{
@@ -34,7 +28,7 @@ public class IndexDirectionTests : IDisposable
}
/// <summary>
/// Verifies forward range scans return values in ascending order.
/// Verifies forward range scans return values in ascending order.
/// </summary>
[Fact]
public void Range_Forward_ReturnsOrderedResults()
@@ -42,20 +36,21 @@ public class IndexDirectionTests : IDisposable
var collection = _db.People;
var index = collection.EnsureIndex(p => p.Age, "idx_age");
var people = Enumerable.Range(1, 100).Select(i => new Person { Id = i, Name = $"Person {i}", Age = i }).ToList();
var people = Enumerable.Range(1, 100).Select(i => new Person { Id = i, Name = $"Person {i}", Age = i })
.ToList();
collection.InsertBulk(people);
_db.SaveChanges();
// Scan Forward
var results = index.Range(10, 20, IndexDirection.Forward).ToList();
var results = index.Range(10, 20).ToList();
results.Count.ShouldBe(11); // 10 to 20 inclusive
collection.FindByLocation(results.First())!.Age.ShouldBe(10); // First is 10
collection.FindByLocation(results.Last())!.Age.ShouldBe(20); // Last is 20
collection.FindByLocation(results.Last())!.Age.ShouldBe(20); // Last is 20
}
/// <summary>
/// Verifies backward range scans return values in descending order.
/// Verifies backward range scans return values in descending order.
/// </summary>
[Fact]
public void Range_Backward_ReturnsReverseOrderedResults()
@@ -63,7 +58,8 @@ public class IndexDirectionTests : IDisposable
var collection = _db.People;
var index = collection.EnsureIndex(p => p.Age, "idx_age");
var people = Enumerable.Range(1, 100).Select(i => new Person { Id = i, Name = $"Person {i}", Age = i }).ToList();
var people = Enumerable.Range(1, 100).Select(i => new Person { Id = i, Name = $"Person {i}", Age = i })
.ToList();
collection.InsertBulk(people);
_db.SaveChanges();
@@ -72,11 +68,11 @@ public class IndexDirectionTests : IDisposable
results.Count.ShouldBe(11); // 10 to 20 inclusive
collection.FindByLocation(results.First())!.Age.ShouldBe(20); // First is 20 (Reverse)
collection.FindByLocation(results.Last())!.Age.ShouldBe(10); // Last is 10
collection.FindByLocation(results.Last())!.Age.ShouldBe(10); // Last is 10
}
/// <summary>
/// Verifies backward scans across split index pages return complete result sets.
/// Verifies backward scans across split index pages return complete result sets.
/// </summary>
[Fact]
public void Range_Backward_WithMultiplePages_ReturnsReverseOrderedResults()
@@ -88,7 +84,8 @@ public class IndexDirectionTests : IDisposable
// Entry size approx 10 bytes key + 6 bytes loc + overhead
// 1000 items * 20 bytes = 20KB > 4KB.
var count = 1000;
var people = Enumerable.Range(1, count).Select(i => new Person { Id = i, Name = $"Person {i}", Age = i }).ToList();
var people = Enumerable.Range(1, count).Select(i => new Person { Id = i, Name = $"Person {i}", Age = i })
.ToList();
collection.InsertBulk(people);
_db.SaveChanges();
@@ -105,4 +102,4 @@ public class IndexDirectionTests : IDisposable
// collection.FindByLocation(results.First(), null)!.Age.ShouldBe(count); // Max Age (Fails: Max is likely 255)
// collection.FindByLocation(results.Last(), null)!.Age.ShouldBe(1); // Min Age (Fails: Min is likely 256)
}
}
}