namespace NeonSprawl.Server.Tests.Game.Npc; public sealed class InMemoryThreatStateStoreTests { [Fact] public void TryGet_ShouldLazyInitializeEmptyHolder_ForKnownNpcInstance() { // Arrange var store = new InMemoryThreatStateStore(); // Act var found = store.TryGet(PrototypeNpcRegistry.PrototypeNpcMeleeId, out var snapshot); // Assert Assert.True(found); Assert.Equal(PrototypeNpcRegistry.PrototypeNpcMeleeId, snapshot.NpcInstanceId); Assert.Null(snapshot.AggroHolderPlayerId); } [Fact] public void TryGet_ShouldReturnFalse_ForUnknownNpcInstance() { // Arrange var store = new InMemoryThreatStateStore(); // Act var found = store.TryGet("prototype_target_alpha", out var snapshot); // Assert Assert.False(found); Assert.Equal(default, snapshot); } [Fact] public void TrySetHolder_ShouldPersistLowercaseHolder_AndClearOnNull() { // Arrange var store = new InMemoryThreatStateStore(); // Act var set = store.TrySetHolder(PrototypeNpcRegistry.PrototypeNpcMeleeId, " Dev-Local-1 "); store.TryGet(PrototypeNpcRegistry.PrototypeNpcMeleeId, out var withHolder); var cleared = store.TryClearHolder(PrototypeNpcRegistry.PrototypeNpcMeleeId); store.TryGet(PrototypeNpcRegistry.PrototypeNpcMeleeId, out var afterClear); // Assert Assert.True(set); Assert.Equal("dev-local-1", withHolder.AggroHolderPlayerId); Assert.True(cleared); Assert.Null(afterClear.AggroHolderPlayerId); } [Fact] public void TrySetHolder_ShouldReturnFalse_ForUnknownNpcInstance() { // Arrange var store = new InMemoryThreatStateStore(); // Act var set = store.TrySetHolder("unknown_npc", "dev-local-1"); // Assert Assert.False(set); } }