stabilizaiton work - projects rework for maintenanceability and ui livening

This commit is contained in:
master
2026-02-03 23:40:04 +02:00
parent 074ce117ba
commit 557feefdc3
3305 changed files with 186813 additions and 107843 deletions

View File

@@ -0,0 +1,64 @@
// <copyright file="InMemoryHlcStateStoreTests.Save.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
using FluentAssertions;
using System;
using System.Threading;
using Xunit;
namespace StellaOps.HybridLogicalClock.Tests;
public sealed partial class InMemoryHlcStateStoreTests
{
[Fact]
public async Task SaveAsync_ThenLoadAsync_ReturnsStateAsync()
{
var store = new InMemoryHlcStateStore();
var timestamp = CreateTimestamp("node1", 1000, 5);
await store.SaveAsync(timestamp, CancellationToken.None);
var result = await store.LoadAsync("node1", CancellationToken.None);
result.Should().Be(timestamp);
}
[Fact]
public async Task SaveAsync_GreaterTimestamp_UpdatesAsync()
{
var store = new InMemoryHlcStateStore();
var first = CreateTimestamp("node1", 1000, 5);
var second = CreateTimestamp("node1", 1000, 10);
await store.SaveAsync(first, CancellationToken.None);
await store.SaveAsync(second, CancellationToken.None);
var result = await store.LoadAsync("node1", CancellationToken.None);
result.Should().Be(second);
}
[Fact]
public async Task SaveAsync_SmallerTimestamp_DoesNotUpdateAsync()
{
var store = new InMemoryHlcStateStore();
var first = CreateTimestamp("node1", 1000, 10);
var second = CreateTimestamp("node1", 1000, 5);
await store.SaveAsync(first, CancellationToken.None);
await store.SaveAsync(second, CancellationToken.None);
var result = await store.LoadAsync("node1", CancellationToken.None);
result.Should().Be(first);
}
[Fact]
public async Task SaveAsync_Cancelled_ThrowsOperationCanceledExceptionAsync()
{
var store = new InMemoryHlcStateStore();
using var cts = new CancellationTokenSource();
cts.Cancel();
var act = () => store.SaveAsync(CreateTimestamp("node1", 1000, 1), cts.Token);
await act.Should().ThrowAsync<OperationCanceledException>();
}
}