public void TestJog()
        {
            var expectedCmd = new HyperDeckPlayerSetCommand
            {
                Mask = HyperDeckPlayerSetCommand.MaskFlags.Jog,
            };
            var handler = CommandGenerator.MatchCommand(expectedCmd, true);

            AtemMockServerWrapper.Each(_output, _pool, handler, DeviceTestCases.HyperDecks, helper =>
            {
                foreach (IBMDSwitcherHyperDeck deck in GetHyperDecks(helper))
                {
                    deck.GetId(out long id);
                    expectedCmd.Id = (uint)id;

                    expectedCmd.Jog = Randomiser.RangeInt(-100, 100);

                    AtemState stateBefore = helper.Helper.BuildLibState();
                    helper.SendAndWaitForChange(stateBefore, () =>
                    {
                        deck.Jog(expectedCmd.Jog);
                    });
                }
            });
        }
        public void TestShuttle()
        {
            var expectedCmd = new HyperDeckPlayerSetCommand
            {
                Mask  = HyperDeckPlayerSetCommand.MaskFlags.State | HyperDeckPlayerSetCommand.MaskFlags.PlaybackSpeed,
                State = HyperDeckPlayerState.Playing,
            };
            var handler = CommandGenerator.MatchCommand(expectedCmd, true);

            AtemMockServerWrapper.Each(_output, _pool, handler, DeviceTestCases.HyperDecks, helper =>
            {
                AtemState stateBefore = helper.Helper.BuildLibState();
                foreach (IBMDSwitcherHyperDeck deck in GetHyperDecks(helper))
                {
                    deck.GetId(out long id);
                    expectedCmd.Id = (uint)id;

                    for (int i = 0; i < 5; i++)
                    {
                        expectedCmd.PlaybackSpeed = Randomiser.RangeInt(-100, 200);
                        helper.SendAndWaitForChange(stateBefore, () =>
                        {
                            deck.Shuttle(expectedCmd.PlaybackSpeed);
                        });
                    }
                }
            });
        }