Fensalir/tests/Aquarium.LocalCast.Tests/LocalCastVisualStateReaderTests.cs
2026-05-18 19:54:03 +01:00

74 lines
2.4 KiB
C#

using System.Buffers;
using MessagePack;
using Aquarium.LocalCast;
namespace Aquarium.LocalCast.Tests;
public sealed class LocalCastVisualStateReaderTests
{
[Fact]
public void ParsesPythonCultCacheRenderFrameStore()
{
var store = WriteStore();
Assert.True(LocalCastVisualStateReader.TryParseStore(store, out var frame));
Assert.Equal(7, frame.FrameId);
Assert.Equal("LocalCastBridge Point Cloud", frame.SpoutSenderName);
var point = Assert.Single(frame.Points);
Assert.Equal("rgb:1", point.StableKey);
Assert.Equal(0.03f, point.RadiusMeters, 6);
}
private static byte[] WriteStore()
{
var payload = WriteRenderFramePayload();
var buffer = new ArrayBufferWriter<byte>();
var writer = new MessagePackWriter(buffer);
writer.WriteArrayHeader(1);
writer.WriteMapHeader(4);
writer.Write("key");
writer.Write(LocalCastVisualStateReader.LiveRenderFrameKey);
writer.Write("type");
writer.Write(LocalCastVisualStateReader.RenderFrameType);
writer.Write("storedAt");
writer.Write("2026-05-18T18:35:15Z");
writer.Write("payload");
writer.Write(payload);
writer.Flush();
return buffer.WrittenMemory.ToArray();
}
private static byte[] WriteRenderFramePayload()
{
var buffer = new ArrayBufferWriter<byte>();
var writer = new MessagePackWriter(buffer);
writer.WriteArrayHeader(11);
writer.Write(LocalCastVisualStateReader.RenderFrameSchemaId);
writer.Write(7L);
writer.Write(1_000_000L);
writer.Write(1_000_000L);
writer.Write(1_010_000L);
writer.Write(1_260_000L);
writer.Write(1_260_000L);
writer.Write("LocalCastBridge Point Cloud");
writer.Write(1920);
writer.Write(1080);
writer.WriteArrayHeader(1);
writer.WriteArrayHeader(6);
writer.Write("rgb:1");
writer.WriteArrayHeader(3);
writer.Write(0.1f);
writer.Write(0.2f);
writer.Write(1.2f);
writer.Write(0.03f);
writer.WriteArrayHeader(4);
writer.Write(0.7f);
writer.Write(0.6f);
writer.Write(0.5f);
writer.Write(0.9f);
writer.Write(0.8f);
writer.Write(1_010_000L);
writer.Flush();
return buffer.WrittenMemory.ToArray();
}
}