namespace MeetingAssistant.Tests; internal static class PngTestFixture { private const string Solid2X2 = "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAAqADAAQAAAABAAAAAgAAAADO0J6QAAAAEklEQVQIHWP8DwQMQMAEIkAAAD34BACALvQ5AAAAAElFTkSuQmCC"; private const string Solid4X4 = "iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAABKADAAQAAAABAAAABAAAAADmpNw4AAAAFUlEQVQIHWP8DwQMSIAJiQ1mEhYAAAZdBAQjjGwcAAAAAElFTkSuQmCC"; private const string Solid8X6 = "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAGCAYAAAD+Bd/7AAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAACKADAAQAAAABAAAABgAAAAAJfOcJAAAAFklEQVQIHWP8DwQMeAATHjmw1GBQAAAQiQQIVmhjoQAAAABJRU5ErkJggg=="; public static byte[] Solid(int width, int height) { var encoded = (width, height) switch { (2, 2) => Solid2X2, (4, 4) => Solid4X4, (8, 6) => Solid8X6, _ => throw new ArgumentOutOfRangeException( nameof(width), $"No deterministic PNG fixture exists for {width}x{height}.") }; return Convert.FromBase64String(encoded); } public static (int Width, int Height) ReadDimensions(byte[] png) { if (!png.AsSpan(0, 8).SequenceEqual( new byte[] { 137, 80, 78, 71, 13, 10, 26, 10 })) { throw new InvalidDataException("The fixture is not a PNG."); } return ( System.Buffers.Binary.BinaryPrimitives.ReadInt32BigEndian(png.AsSpan(16, 4)), System.Buffers.Binary.BinaryPrimitives.ReadInt32BigEndian(png.AsSpan(20, 4))); } }