public async Task Move_SameDirection_BacklashComp_DirectionChangeToInwards()
        {
            profileServiceMock.SetupProperty(m => m.ActiveProfile.FocuserSettings.BacklashIn, 500);
            profileServiceMock.SetupProperty(m => m.ActiveProfile.FocuserSettings.BacklashOut, 100);

            var sut = new AbsoluteBacklashCompensationDecorator(profileServiceMock.Object, focuserMock.Object);

            await sut.Move(1500, default);

            await sut.Move(1000, default);

            sut.Position.Should().Be(1000);
            focuserMock.Object.Position.Should().Be(500);
        }
        public async Task Move_SameDirection_BacklashComp_FirstOutThenInThenOutThenIn()
        {
            profileServiceMock.SetupProperty(m => m.ActiveProfile.FocuserSettings.BacklashIn, 500);
            profileServiceMock.SetupProperty(m => m.ActiveProfile.FocuserSettings.BacklashOut, 100);

            var sut = new AbsoluteBacklashCompensationDecorator(profileServiceMock.Object, focuserMock.Object);

            await sut.Move(1500, default); // no comp

            await sut.Move(1000, default); // -500

            await sut.Move(1400, default); // +100

            await sut.Move(1200, default); // -500

            sut.Position.Should().Be(1200);
            focuserMock.Object.Position.Should().Be(300);
        }
        public async Task Move_AboveMaxStepDueToBacklashComp_MoveToMaxStep()
        {
            profileServiceMock.SetupProperty(m => m.ActiveProfile.FocuserSettings.BacklashIn, 100);
            profileServiceMock.SetupProperty(m => m.ActiveProfile.FocuserSettings.BacklashOut, 500);

            var sut = new AbsoluteBacklashCompensationDecorator(profileServiceMock.Object, focuserMock.Object);

            await sut.Move(1500, default); // no comp

            await sut.Move(1000, default); // -100

            await sut.Move(1400, default); // +500

            await sut.Move(1000, default); // -100

            await sut.Move(50000, default);

            sut.Position.Should().Be(50000);
            focuserMock.Object.Position.Should().Be(50000);
        }