using System.Collections.Generic; using AcDream.App.Streaming; using AcDream.Core.Terrain; using AcDream.Core.World; using Xunit; namespace AcDream.Core.Tests.Streaming; public class StreamingControllerTwoTierTests { [Fact] public void Tick_FirstCall_EnqueuesNearAndFarLoadsByTier() { var loads = new List<(uint Id, LandblockStreamJobKind Kind)>(); var unloads = new List(); var state = new GpuWorldState(); var ctrl = new StreamingController( enqueueLoad: (id, kind) => loads.Add((id, kind)), enqueueUnload: unloads.Add, drainCompletions: _ => System.Array.Empty(), applyTerrain: (_, _) => { }, state: state, nearRadius: 1, farRadius: 3); ctrl.Tick(observerCx: 100, observerCy: 100); int nearCount = 0, farCount = 0; foreach (var (_, kind) in loads) { if (kind == LandblockStreamJobKind.LoadNear) nearCount++; else if (kind == LandblockStreamJobKind.LoadFar) farCount++; } Assert.Equal(9, nearCount); // 3x3 inner ring (radius=1) Assert.Equal(40, farCount); // 7x7 - 3x3 outer ring (radius=3) } }