using System.Collections; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace AssetRipper.Tests; internal sealed class RandomStructEnumerable : IEnumerable where T : unmanaged { private byte[] Data { get; } public int Count { get; } public RandomStructEnumerable(int count) { Count = count; Data = new byte[Unsafe.SizeOf()]; } public IEnumerator GetEnumerator() { for (int i = Count; i > 0; i--) { TestContext.CurrentContext.Random.NextBytes(Data); yield return MemoryMarshal.Read(Data); } } IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); }