From 7554c1e213d16d2dfff448bdc9dda06ec7f1f136 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Mon, 18 Nov 2024 20:21:10 +0000 Subject: [PATCH] Added an extra test to Slewing so that if connected will check with the mount to see if it's actually slewing, which is should have been doing --- .../TelescopeUnitTests.cs | 40 +++++++++++++++---- Meade.net.Telescope/Telescope.cs | 6 ++- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index 9648436..eb56508 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -1,5 +1,7 @@ using System; +using System.Collections.Generic; using System.Globalization; +using System.Linq; using System.Reflection; using ASCOM; using ASCOM.Astrometry.AstroUtils; @@ -2940,13 +2942,15 @@ namespace Meade.net.Telescope.UnitTests [Test] public void Slewing_WhenConnectedAndTelescopeFails_ThenReturnsFalse() { + _sharedResourcesWrapperMock.Setup(x => x.SendString(_traceLoggerMock.Object, "D", false)).Returns(""); + ConnectTelescope(); var result = _telescope.Slewing; Assert.That(result, Is.False); - _sharedResourcesWrapperMock.Verify(x => x.SendString(_traceLoggerMock.Object, "D", false), Times.Once); + _sharedResourcesWrapperMock.Verify(x => x.SendString(_traceLoggerMock.Object, "D", false), Times.Exactly(2)); } [Test] @@ -3033,7 +3037,24 @@ namespace Meade.net.Telescope.UnitTests [TestCase(TelescopeList.Autostar497, TelescopeList.Autostar497_43Eg, "", false)] public void Slewing_WhenTelescopeNotSlewing_ThenReturnsFalse(string productName, string firmwareVersion, string response, bool isSlewing) { - _sharedResourcesWrapperMock.Setup(x => x.SendString(_traceLoggerMock.Object, "D", false)).Returns(response); + List slewingResponses = new List(); + + if (isSlewing) + slewingResponses.Add("|"); + + slewingResponses.Add(response); + + var callCounter = 0; + + _sharedResourcesWrapperMock.Setup(x => x.SendString(_traceLoggerMock.Object, "D", false)).Returns( () => { + var slewingResult = slewingResponses[callCounter]; + callCounter++; + if (callCounter > slewingResponses.Count - 1) + { + callCounter = slewingResponses.Count - 1; + } + return slewingResult; + }); ConnectTelescope(productName, firmwareVersion); @@ -3041,7 +3062,10 @@ namespace Meade.net.Telescope.UnitTests Assert.That(result, Is.EqualTo(isSlewing)); - _sharedResourcesWrapperMock.Verify(x => x.SendString(_traceLoggerMock.Object, "D", false), Times.Once); + if (isSlewing) + { + _sharedResourcesWrapperMock.Verify(x => x.SendString(_traceLoggerMock.Object, "D", false), Times.Exactly(1)); + } } [TestCase(1, TelescopeAxes.axisPrimary)] @@ -3267,7 +3291,7 @@ namespace Meade.net.Telescope.UnitTests { _sharedResourcesWrapperMock.Setup(x => x.SendChar(_traceLoggerMock.Object, "MS", false)).Returns("0"); - var preTestItterations = 1; + var preTestItterations = 2; var slewCounter = 0; var iterations = 10; @@ -3359,7 +3383,7 @@ namespace Meade.net.Telescope.UnitTests _sharedResourcesWrapperMock.Setup(x => x.SendChar(_traceLoggerMock.Object, "MS", false)).Returns("0"); - var preTestItterations = 1; + var preTestItterations = 2; var slewCounter = 0; var iterations = 10; _sharedResourcesWrapperMock.Setup(x => x.SendString(_traceLoggerMock.Object, "D", false)).Returns(() => @@ -3482,7 +3506,7 @@ namespace Meade.net.Telescope.UnitTests _sharedResourcesWrapperMock.Setup(x => x.SendChar(_traceLoggerMock.Object, "MS", false)).Returns("0"); - var preTestItterations = 1; + var preTestItterations = 2; var slewCounter = 0; var iterations = 10; _sharedResourcesWrapperMock.Setup(x => x.SendString(_traceLoggerMock.Object, "D", false)).Returns(() => @@ -3583,6 +3607,8 @@ namespace Meade.net.Telescope.UnitTests [Test] public void AbortSlew_WhenConnected_ThenSendsStopSlewingToTelescope() { + _sharedResourcesWrapperMock.Setup(x => x.SendString(_traceLoggerMock.Object, "D", false)).Returns(""); + ConnectTelescope(); _telescope.AbortSlew(); @@ -3592,7 +3618,7 @@ namespace Meade.net.Telescope.UnitTests var isSloSlewing = _telescope.Slewing; Assert.That(isSloSlewing, Is.False); - _sharedResourcesWrapperMock.Verify(x => x.SendString(_traceLoggerMock.Object, "D", false), Times.Once); + _sharedResourcesWrapperMock.Verify(x => x.SendString(_traceLoggerMock.Object, "D", false), Times.Exactly(2)); } [Test] diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index 988cd2f..ba9f9aa 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -2998,6 +2998,8 @@ namespace ASCOM.Meade.net throw new ASCOM.InvalidOperationException("Cannot start a slew whilst slew is in progress."); } + + switch (polar) { case true: @@ -3212,8 +3214,8 @@ namespace ASCOM.Meade.net { try { - var isSlewing = GetSlewing(); - + var isSlewing = GetSlewing() || (IsConnected && IsSlewingToTarget()); + if (isSlewing) SetSlewingMinEndTime(); else if (_clock.UtcNow < SharedResourcesWrapper.EarliestNonSlewingTime)