namespace Nonemm.Recorder.Tests; public class SampleRingTests { [Fact] public void Samples_come_out_in_the_order_they_went_in_across_the_wrap() { SampleRing ring = new(5); ring.Write([1, 2, 3, 4]); Span first = stackalloc float[3]; ring.Read(first); ring.Write([5, 6, 7]); Span all = stackalloc float[5]; int got = ring.Read(all); Assert.Equal(4, got); Assert.Equal([4f, 5f, 6f, 7f], all[..4].ToArray()); } [Fact] public void A_full_ring_drops_the_oldest_samples() { SampleRing ring = new(4); ring.Write([1, 2, 3]); ring.Write([4, 5, 6]); Span all = stackalloc float[4]; ring.Read(all); Assert.Equal([3f, 4f, 5f, 6f], all.ToArray()); } [Fact] public void Trim_keeps_the_newest_samples() { SampleRing ring = new(8); ring.Write([1, 2, 3, 4, 5]); ring.TrimTo(2); Span all = stackalloc float[2]; ring.Read(all); Assert.Equal([4f, 5f], all.ToArray()); } }