From 49c43358de3870d74231cdd706ae4df8491305be Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Wed, 4 Aug 2021 18:48:24 +0100 Subject: [PATCH] Added check to ensure that the Lunar Tracking rate cannot be selected on the LX200 Classic. --- .../TelescopeUnitTests.cs | 16 ++++++++++++++-- Meade.net.Telescope/Rates.cs | 10 +++++++--- Meade.net.Telescope/Telescope.cs | 2 +- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index 713b2b0..175c060 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -2768,13 +2768,25 @@ namespace Meade.net.Telescope.UnitTests Assert.That(result.Message, Is.EqualTo("TrackingRate Set is not implemented in this driver.")); } - [Test] - public void TrackingRates_Get_ReturnsExpectedType() + [TestCase(TelescopeList.Autostar497, TelescopeList.Autostar497_43Eg, true )] + [TestCase(TelescopeList.LX200CLASSIC, "", false)] + public void TrackingRates_Get_ReturnsExpectedType(string productName, string firmwareVersion, bool supportsLunar) { + ConnectTelescope(productName, firmwareVersion); + var result = _telescope.TrackingRates; Assert.That(result, Is.Not.Null); Assert.That(result, Is.AssignableTo()); + + if (supportsLunar) + { + Assert.That(result.Count, Is.EqualTo(2)); + } + else + { + Assert.That(result.Count, Is.EqualTo(1)); + } } [Test] diff --git a/Meade.net.Telescope/Rates.cs b/Meade.net.Telescope/Rates.cs index 6022c64..98f7c49 100644 --- a/Meade.net.Telescope/Rates.cs +++ b/Meade.net.Telescope/Rates.cs @@ -149,15 +149,19 @@ namespace ASCOM.Meade.net // Default constructor - Internal prevents public creation // of instances. Returned by Telescope.AxisRates. // - internal TrackingRates() + internal TrackingRates(bool supportsLunar) { // // This array must hold ONE or more DriveRates values, indicating // the tracking rates supported by your telescope. The one value // (tracking rate) that MUST be supported is driveSidereal! // - _trackingRates = new[] { DriveRates.driveSidereal, DriveRates.driveLunar }; - // TODO Initialize this array with any additional tracking rates that your driver may provide + if (supportsLunar) + { + _trackingRates = new[] {DriveRates.driveSidereal, DriveRates.driveLunar}; + } + else + _trackingRates = new[] { DriveRates.driveSidereal }; } #region ITrackingRates Members diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index a694f31..b39c1e0 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -2685,7 +2685,7 @@ namespace ASCOM.Meade.net { get { - ITrackingRates trackingRates = new TrackingRates(); + ITrackingRates trackingRates = new TrackingRates(SharedResourcesWrapper.ProductName != TelescopeList.LX200CLASSIC); LogMessage("TrackingRates", "Get - "); foreach (DriveRates driveRate in trackingRates) {