using NATS.Server.Auth; namespace NATS.Server.Auth.Tests; public class PermissionLruCacheTests { [Fact] public void Get_returns_none_for_unknown_key() { var cache = new PermissionLruCache(128); cache.TryGet("foo", out _).ShouldBeFalse(); } [Fact] public void Set_and_get_returns_value() { var cache = new PermissionLruCache(128); cache.Set("foo", true); cache.TryGet("foo", out var v).ShouldBeTrue(); v.ShouldBeTrue(); } [Fact] public void Evicts_oldest_when_full() { var cache = new PermissionLruCache(3); cache.Set("a", true); cache.Set("b", true); cache.Set("c", true); cache.Set("d", true); // evicts "a" cache.TryGet("a", out _).ShouldBeFalse(); cache.TryGet("b", out _).ShouldBeTrue(); cache.TryGet("d", out _).ShouldBeTrue(); } [Fact] public void Get_promotes_to_front() { var cache = new PermissionLruCache(3); cache.Set("a", true); cache.Set("b", true); cache.Set("c", true); // Access "a" to promote it cache.TryGet("a", out _); cache.Set("d", true); // should evict "b" (oldest untouched) cache.TryGet("a", out _).ShouldBeTrue(); cache.TryGet("b", out _).ShouldBeFalse(); } }