Public Access
39 lines
1.7 KiB
C#
39 lines
1.7 KiB
C#
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)));
|
|
}
|
|
}
|