using RioJoy.Core.Output;
using Xunit;

namespace RioJoy.Core.Tests.Output;

public class SendInputSinkTests
{
    [Fact]
    public void SendInput_DoesNotThrow_OnMarshalling()
    {
        var sink = new SendInputSink();

        // A zero relative mouse move is a no-op, but it exercises the same SendInput
        // INPUT[] marshalling path that previously threw MarshalDirectiveException with
        // a Span<INPUT> parameter — which killed the serial read thread when a button
        // with output enabled was pressed.
        Exception? ex = Record.Exception(() => sink.MouseMove(0, 0));

        Assert.Null(ex);
    }
}
