From 650fc04bcaa97983579f118f29e71f6b17b90e12 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Mon, 16 May 2022 18:59:55 +0100 Subject: [PATCH 1/2] Changing how side of pier is calculated. --- .../TelescopeUnitTests.cs | 276 +++++++++--------- Meade.net.Telescope/Telescope.cs | 41 +-- Meade.net/Wrapper/SharedResourcesWrapper.cs | 3 +- 3 files changed, 150 insertions(+), 170 deletions(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index 0498a75..6ef8ca5 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -110,7 +110,6 @@ namespace Meade.net.Telescope.UnitTests _sharedResourcesWrapperMock.Setup(x => x.ReadProfile()).Returns(_profileProperties); _sharedResourcesWrapperMock - .SetupProperty(x => x.SideOfPier) .SetupProperty(x => x.TargetRightAscension) .SetupProperty(x => x.TargetDeclination) .SetupProperty(x => x.SlewSettleTime) @@ -1314,8 +1313,8 @@ namespace Meade.net.Telescope.UnitTests [TestCase(1, -1, 4, PierSide.pierEast)] [TestCase(4, 1, 1, PierSide.pierWest)] [TestCase(4, -1, 1, PierSide.pierWest)] - [TestCase(0, 0, 0, PierSide.pierUnknown)] - [TestCase(5, 0, 5, PierSide.pierUnknown)] + [TestCase(0, 0, 0, PierSide.pierWest)] + [TestCase(5, 0, 5, PierSide.pierWest)] [TestCase(23.8, 1, 23.9, PierSide.pierEast)] [TestCase(23.8, -1, 23.9, PierSide.pierEast)] [TestCase(23.9, 1, 1, PierSide.pierEast)] @@ -1326,9 +1325,6 @@ namespace Meade.net.Telescope.UnitTests { // given - // deterministic start - _sharedResourcesWrapperMock.Object.SideOfPier = PierSide.pierUnknown; - // SideralTime uses ConditionRA to normalize to [0..24h), so we use it to mock the property _astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny())).Returns(siderealTime); @@ -2024,172 +2020,172 @@ namespace Meade.net.Telescope.UnitTests Assert.That(excpetion.AccessorSet, Is.True); } - [TestCase(0, 34, PierSide.pierEast)] - [TestCase(12, 34, PierSide.pierEast)] - [TestCase(23.4, 34, PierSide.pierWest)] - public void SideOfPier_WhenSecondConnectionMade_ThenValueIsPreserved(double ra, double dec, PierSide expectedPierSide) - { - _sharedResourcesWrapperMock.Setup(x => x.SendChar("MS", false)).Returns("0"); - _utilMock.Setup(x => x.HMSToHours(null)).Returns(ra); - _utilMock.Setup(x => x.DMSToDegrees(null)).Returns(dec); - _astroUtilsMock.Setup(x => x.ConditionHA(It.IsAny())).Returns(pHA => pHA < -12 ? pHA + 12 : pHA > 12 ? pHA - 12 : pHA); - _astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny())).Returns(pRA => pRA < 0 ? pRA + 24 : pRA >= 24 ? pRA - 24 : pRA); + //[TestCase(0, 34, PierSide.pierEast)] + //[TestCase(12, 34, PierSide.pierEast)] + //[TestCase(23.4, 34, PierSide.pierWest)] + //public void SideOfPier_WhenSecondConnectionMade_ThenValueIsPreserved(double ra, double dec, PierSide expectedPierSide) + //{ + // _sharedResourcesWrapperMock.Setup(x => x.SendChar("MS", false)).Returns("0"); + // _utilMock.Setup(x => x.HMSToHours(null)).Returns(ra); + // _utilMock.Setup(x => x.DMSToDegrees(null)).Returns(dec); + // _astroUtilsMock.Setup(x => x.ConditionHA(It.IsAny())).Returns(pHA => pHA < -12 ? pHA + 12 : pHA > 12 ? pHA - 12 : pHA); + // _astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny())).Returns(pRA => pRA < 0 ? pRA + 24 : pRA >= 24 ? pRA - 24 : pRA); - ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_43Eg); - Assert.That(_connectionInfo.SameDevice, Is.EqualTo(1)); + // ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_43Eg); + // Assert.That(_connectionInfo.SameDevice, Is.EqualTo(1)); - _telescope.SlewToCoordinates(ra, dec); - var sideOfPierAfterSlew = _telescope.SideOfPier; + // _telescope.SlewToCoordinates(ra, dec); + // var sideOfPierAfterSlew = _telescope.SideOfPier; - Assert.That(sideOfPierAfterSlew, Is.EqualTo(expectedPierSide)); + // Assert.That(sideOfPierAfterSlew, Is.EqualTo(expectedPierSide)); - var secondTelescopeInstance = - new ASCOM.Meade.net.Telescope(_utilMock.Object, _utilExtraMock.Object, _astroUtilsMock.Object, - _sharedResourcesWrapperMock.Object, _astroMathsMock.Object, _clockMock.Object, _novasMock.Object); + // var secondTelescopeInstance = + // new ASCOM.Meade.net.Telescope(_utilMock.Object, _utilExtraMock.Object, _astroUtilsMock.Object, + // _sharedResourcesWrapperMock.Object, _astroMathsMock.Object, _clockMock.Object, _novasMock.Object); - Assert.That(secondTelescopeInstance.Connected, Is.False); + // Assert.That(secondTelescopeInstance.Connected, Is.False); - _connectionInfo.SameDevice = 2; - secondTelescopeInstance.Connected = true; + // _connectionInfo.SameDevice = 2; + // secondTelescopeInstance.Connected = true; - Assert.That(secondTelescopeInstance.SideOfPier, Is.EqualTo(sideOfPierAfterSlew)); + // Assert.That(secondTelescopeInstance.SideOfPier, Is.EqualTo(sideOfPierAfterSlew)); - _sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Once); - _utilMock.Verify(x => x.HMSToHours(null), Times.Once); - _utilMock.Verify(x => x.DMSToDegrees(null), Times.AtLeast(2)); - _astroUtilsMock.Verify(x => x.ConditionHA(It.IsAny()), Times.Once); - _astroUtilsMock.Verify(x => x.ConditionRA(It.IsAny()), Times.Once); - } + // _sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Once); + // _utilMock.Verify(x => x.HMSToHours(null), Times.Once); + // _utilMock.Verify(x => x.DMSToDegrees(null), Times.AtLeast(2)); + // _astroUtilsMock.Verify(x => x.ConditionHA(It.IsAny()), Times.Once); + // _astroUtilsMock.Verify(x => x.ConditionRA(It.IsAny()), Times.Once); + //} delegate void NovasSiderealTimeDelegate(double jdHigh, double jdLow, double jdDelta, GstType gstType, Method method, Accuracy accuracy, ref double sideralTime); /// /// Test cases obtained via .NET telescope simulator /// - [TestCase(9.4337648353882, -76.7178112042103, "2021-06-07T05:23:41.7610000Z", 8.13556526999591, 145.166333333333, 2d, PierSide.pierWest, PierSide.pierEast)] - [TestCase(10.1581570159006, 11.8639491368916, "2021-06-07T10:59:19.7000000Z", 9.72726050605156, 145.166333333333, 1d, PierSide.pierWest, PierSide.pierEast)] - [TestCase(9.66583199112222, 81.2310578173083, "2021-06-07T11:19:24.5540000Z", 7.73744116673785, 110.285166666667, 2d, PierSide.pierWest, PierSide.pierEast)] - [TestCase(8.32978972808615, -29.816491813155, "2021-06-07T11:29:33.7040000Z", 7.90712206850482, 110.285166666667, 1d, PierSide.pierWest, PierSide.pierEast)] - [TestCase(1.76405553984887, 60.7756226366989, "2021-06-07T11:34:07.5270000Z", 0.214893775091689, -6.24266666666667, 2d, PierSide.pierWest, PierSide.pierEast)] - [TestCase(0.523375885742411, -33.1288722052936, "2021-06-07T11:38:25.1670000Z", 0.286661722506396, -6.24266666666667, 0.5d, PierSide.pierWest, PierSide.pierEast)] - public void SideOfPier_WhenTrackingThroughMeridianAfterSubsequentGoto_ThenAMeridianFlipIsPerformed( - double ra, - double dec, - string jnowTimeStr, /* JNOW of object before transit */ - double jnowSiderealTime, - double siteLongitude, - double trackingTimeHours, - PierSide pierSideBeforeTransit, - PierSide pierSideAfterRetargeting - ) - { - // given - var jnowTime = DateTimeOffset.ParseExact(jnowTimeStr, "o", CultureInfo.InvariantCulture).UtcDateTime; - var trackingTimeDiff = TimeSpan.FromHours(trackingTimeHours); - var timeAfterTracking = jnowTime + trackingTimeDiff; - var raAsHMS = ra + "HMS"; - var decAsDMS = dec + "DMS"; - var currentTime = jnowTime; + //[TestCase(9.4337648353882, -76.7178112042103, "2021-06-07T05:23:41.7610000Z", 8.13556526999591, 145.166333333333, 2d, PierSide.pierWest, PierSide.pierEast)] + //[TestCase(10.1581570159006, 11.8639491368916, "2021-06-07T10:59:19.7000000Z", 9.72726050605156, 145.166333333333, 1d, PierSide.pierWest, PierSide.pierEast)] + //[TestCase(9.66583199112222, 81.2310578173083, "2021-06-07T11:19:24.5540000Z", 7.73744116673785, 110.285166666667, 2d, PierSide.pierWest, PierSide.pierEast)] + //[TestCase(8.32978972808615, -29.816491813155, "2021-06-07T11:29:33.7040000Z", 7.90712206850482, 110.285166666667, 1d, PierSide.pierWest, PierSide.pierEast)] + //[TestCase(1.76405553984887, 60.7756226366989, "2021-06-07T11:34:07.5270000Z", 0.214893775091689, -6.24266666666667, 2d, PierSide.pierWest, PierSide.pierEast)] + //[TestCase(0.523375885742411, -33.1288722052936, "2021-06-07T11:38:25.1670000Z", 0.286661722506396, -6.24266666666667, 0.5d, PierSide.pierWest, PierSide.pierEast)] + //public void SideOfPier_WhenTrackingThroughMeridianAfterSubsequentGoto_ThenAMeridianFlipIsPerformed( + // double ra, + // double dec, + // string jnowTimeStr, /* JNOW of object before transit */ + // double jnowSiderealTime, + // double siteLongitude, + // double trackingTimeHours, + // PierSide pierSideBeforeTransit, + // PierSide pierSideAfterRetargeting + //) + //{ + // // given + // var jnowTime = DateTimeOffset.ParseExact(jnowTimeStr, "o", CultureInfo.InvariantCulture).UtcDateTime; + // var trackingTimeDiff = TimeSpan.FromHours(trackingTimeHours); + // var timeAfterTracking = jnowTime + trackingTimeDiff; + // var raAsHMS = ra + "HMS"; + // var decAsDMS = dec + "DMS"; + // var currentTime = jnowTime; - _clockMock.Setup(x => x.UtcNow).Returns(() => currentTime); + // _clockMock.Setup(x => x.UtcNow).Returns(() => currentTime); - _sharedResourcesWrapperMock.Setup(x => x.SendChar("MS", false)).Returns("0"); + // _sharedResourcesWrapperMock.Setup(x => x.SendChar("MS", false)).Returns("0"); - // setup for RA - _utilMock.Setup(x => x.HoursToHMS(ra, ":", ":", ":", 2)).Returns(raAsHMS); - _utilMock.Setup(x => x.HMSToHours(raAsHMS)).Returns(ra); + // // setup for RA + // _utilMock.Setup(x => x.HoursToHMS(ra, ":", ":", ":", 2)).Returns(raAsHMS); + // _utilMock.Setup(x => x.HMSToHours(raAsHMS)).Returns(ra); - // setup for DEC - _utilMock.Setup(x => x.DMSToDegrees(decAsDMS)).Returns(dec); - _utilMock.Setup(x => x.DegreesToDMS(dec, "*", ":", ":", 2)).Returns(decAsDMS); + // // setup for DEC + // _utilMock.Setup(x => x.DMSToDegrees(decAsDMS)).Returns(dec); + // _utilMock.Setup(x => x.DegreesToDMS(dec, "*", ":", ":", 2)).Returns(decAsDMS); - // setup for SiteLongitude - var siteLongitudeResult = siteLongitude + "Gg"; - _sharedResourcesWrapperMock.Setup(x => x.SendString("Gg", false)).Returns(siteLongitudeResult); - // remember to invert longitude - _utilMock.Setup(x => x.DMSToDegrees(siteLongitudeResult)).Returns(-siteLongitude); + // // setup for SiteLongitude + // var siteLongitudeResult = siteLongitude + "Gg"; + // _sharedResourcesWrapperMock.Setup(x => x.SendString("Gg", false)).Returns(siteLongitudeResult); + // // remember to invert longitude + // _utilMock.Setup(x => x.DMSToDegrees(siteLongitudeResult)).Returns(-siteLongitude); - // setup for SideralTime - var siteLongitudeAdj = siteLongitude / 360.0 * 24.0; - var jnowSiderealTimeWithoutLongAdj = jnowSiderealTime - siteLongitudeAdj; - var afterTrackingSiderealTimeWithoutLongAdj = jnowSiderealTimeWithoutLongAdj + trackingTimeHours; + // // setup for SideralTime + // var siteLongitudeAdj = siteLongitude / 360.0 * 24.0; + // var jnowSiderealTimeWithoutLongAdj = jnowSiderealTime - siteLongitudeAdj; + // var afterTrackingSiderealTimeWithoutLongAdj = jnowSiderealTimeWithoutLongAdj + trackingTimeHours; - _utilMock.Setup(x => x.DateUTCToJulian(It.IsAny())).Returns(pDateTime => pDateTime.Ticks); + // _utilMock.Setup(x => x.DateUTCToJulian(It.IsAny())).Returns(pDateTime => pDateTime.Ticks); - _novasMock - .Setup(x => x.SiderealTime( - It.IsAny(), - 0d, - 0d, - GstType.GreenwichApparentSiderealTime, - Method.EquinoxBased, - Accuracy.Reduced, - ref It.Ref.IsAny)) - .Callback(new NovasSiderealTimeDelegate(NovasSiderealTime)) - .Returns(0); + // _novasMock + // .Setup(x => x.SiderealTime( + // It.IsAny(), + // 0d, + // 0d, + // GstType.GreenwichApparentSiderealTime, + // Method.EquinoxBased, + // Accuracy.Reduced, + // ref It.Ref.IsAny)) + // .Callback(new NovasSiderealTimeDelegate(NovasSiderealTime)) + // .Returns(0); - _astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny())).Returns(pRA => pRA < 0 ? pRA + 24 : pRA >= 24 ? pRA - 24 : pRA); + // _astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny())).Returns(pRA => pRA < 0 ? pRA + 24 : pRA >= 24 ? pRA - 24 : pRA); - void NovasSiderealTime(double pJDHigh, double pJDLow, double pJDDelta, GstType pGSTType, Method pMethod, Accuracy pAccuracy, ref double pSideralTime) - { - if (pJDHigh == jnowTime.Ticks) - { - pSideralTime = jnowSiderealTimeWithoutLongAdj; - } - else if (pJDHigh == timeAfterTracking.Ticks) - { - pSideralTime = afterTrackingSiderealTimeWithoutLongAdj; - } - else - { - Assert.Fail($"No sideral time defined for {pJDHigh}"); - } - } + // void NovasSiderealTime(double pJDHigh, double pJDLow, double pJDDelta, GstType pGSTType, Method pMethod, Accuracy pAccuracy, ref double pSideralTime) + // { + // if (pJDHigh == jnowTime.Ticks) + // { + // pSideralTime = jnowSiderealTimeWithoutLongAdj; + // } + // else if (pJDHigh == timeAfterTracking.Ticks) + // { + // pSideralTime = afterTrackingSiderealTimeWithoutLongAdj; + // } + // else + // { + // Assert.Fail($"No sideral time defined for {pJDHigh}"); + // } + // } - // Setup DestinationSideOfPier - _astroUtilsMock.Setup(x => x.ConditionHA(It.IsAny())).Returns(pHA => pHA < -12 ? pHA + 12 : pHA > 12 ? pHA - 12 : pHA); + // // Setup DestinationSideOfPier + // _astroUtilsMock.Setup(x => x.ConditionHA(It.IsAny())).Returns(pHA => pHA < -12 ? pHA + 12 : pHA > 12 ? pHA - 12 : pHA); - // Use firmware that supports GW - ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_43Eg); + // // Use firmware that supports GW + // ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_43Eg); - // when - _telescope.SlewToCoordinatesAsync(ra, dec); - var actualSideOfPierAfterSlew = _telescope.SideOfPier; - // simulate tracking time - currentTime += trackingTimeDiff; - var actualSideOfPierAfterTracking = _telescope.SideOfPier; - _telescope.SlewToTargetAsync(); - var actualSideOfPierAfterRetargeting = _telescope.SideOfPier; + // // when + // _telescope.SlewToCoordinatesAsync(ra, dec); + // var actualSideOfPierAfterSlew = _telescope.SideOfPier; + // // simulate tracking time + // currentTime += trackingTimeDiff; + // var actualSideOfPierAfterTracking = _telescope.SideOfPier; + // _telescope.SlewToTargetAsync(); + // var actualSideOfPierAfterRetargeting = _telescope.SideOfPier; - // then - Assert.That(_telescope.TargetRightAscension, Is.EqualTo(ra)); - Assert.That(_telescope.TargetDeclination, Is.EqualTo(dec)); - Assert.That(actualSideOfPierAfterSlew, Is.EqualTo(pierSideBeforeTransit)); - Assert.That(actualSideOfPierAfterTracking, Is.EqualTo(pierSideBeforeTransit)); - Assert.That(actualSideOfPierAfterRetargeting, Is.EqualTo(pierSideAfterRetargeting)); + // // then + // Assert.That(_telescope.TargetRightAscension, Is.EqualTo(ra)); + // Assert.That(_telescope.TargetDeclination, Is.EqualTo(dec)); + // Assert.That(actualSideOfPierAfterSlew, Is.EqualTo(pierSideBeforeTransit)); + // Assert.That(actualSideOfPierAfterTracking, Is.EqualTo(pierSideBeforeTransit)); + // Assert.That(actualSideOfPierAfterRetargeting, Is.EqualTo(pierSideAfterRetargeting)); - _clockMock.Verify(x => x.UtcNow, Times.AtLeast(2)); + // _clockMock.Verify(x => x.UtcNow, Times.AtLeast(2)); - foreach (var time in new[] { jnowTime, timeAfterTracking }) - { - _utilMock.Verify(x => x.DateUTCToJulian(time)); + // foreach (var time in new[] { jnowTime, timeAfterTracking }) + // { + // _utilMock.Verify(x => x.DateUTCToJulian(time)); - _novasMock - .Verify(x => x.SiderealTime( - time.Ticks, - 0d, - 0d, - GstType.GreenwichApparentSiderealTime, - Method.EquinoxBased, - Accuracy.Reduced, - ref It.Ref.IsAny), - Times.Once); - } + // _novasMock + // .Verify(x => x.SiderealTime( + // time.Ticks, + // 0d, + // 0d, + // GstType.GreenwichApparentSiderealTime, + // Method.EquinoxBased, + // Accuracy.Reduced, + // ref It.Ref.IsAny), + // Times.Once); + // } - _sharedResourcesWrapperMock.Verify(x => x.SendString("Gg", false), Times.Exactly(3)); - _sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Exactly(2)); - _sharedResourcesWrapperMock.Verify(x => x.SendString("D", false), Times.AtLeast(3)); - } + // _sharedResourcesWrapperMock.Verify(x => x.SendString("Gg", false), Times.Exactly(3)); + // _sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Exactly(2)); + // _sharedResourcesWrapperMock.Verify(x => x.SendString("D", false), Times.AtLeast(3)); + //} [Test] public void SiteElevation_Get_WhenNotConnectedThrowsException() diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index b334430..cc0e097 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -512,7 +512,6 @@ namespace ASCOM.Meade.net SetTelescopePrecision("Connect"); // target RA, DEC and SideOfPier are set to default values - SharedResourcesWrapper.SideOfPier = PierSide.pierUnknown; SharedResourcesWrapper.TargetDeclination = InvalidParameter; SharedResourcesWrapper.TargetRightAscension = InvalidParameter; @@ -1857,13 +1856,7 @@ namespace ASCOM.Meade.net { CheckConnected("DestinationSideOfPier"); - double hourAngle = _astroUtilities.ConditionHA(SiderealTime - rightAscension); - - var destinationSOP = hourAngle > 0 - ? PierSide.pierEast - : (hourAngle < 0 - ? PierSide.pierWest - : SharedResourcesWrapper.SideOfPier); // avoid pierUnknown while Slewing + var destinationSOP = CalculateSideOfPier(rightAscension); LogMessage("DestinationSideOfPier", $"Destination SOP of RA {rightAscension.ToString(CultureInfo.InvariantCulture)} is {destinationSOP}"); @@ -1877,6 +1870,16 @@ namespace ASCOM.Meade.net } } + private PierSide CalculateSideOfPier(double rightAscension) + { + double hourAngle = _astroUtilities.ConditionHA(SiderealTime - rightAscension); + + var destinationSOP = hourAngle > 0 + ? PierSide.pierEast + : PierSide.pierWest; + return destinationSOP; + } + public bool DoesRefraction { get @@ -2502,16 +2505,7 @@ namespace ASCOM.Meade.net throw new PropertyNotImplementedException("SideOfPier", false); } - PierSide pierSide; - if (Slewing) - { - // because we update SideOfPier after initiating the slew command we return unknown while still slewing - pierSide = PierSide.pierUnknown; - } - else - { - pierSide = SharedResourcesWrapper.SideOfPier; - } + var pierSide = CalculateSideOfPier(RightAscension); LogMessage("SideOfPier", "Get - " + pierSide); return pierSide; @@ -2990,21 +2984,12 @@ namespace ASCOM.Meade.net //0 Slew is Possible //1# Object Below Horizon w/string message //2# Object Below Higher w/string message - + switch (response) { case "0": //We're slewing everything should be working just fine. LogMessage("DoSlewAsync", "Slewing to target"); - - if (IsMeridianFlipOnSlewSupported()) - { - // Update side of pier to destination side of pier - // Assumption: Mount will do meridian flip if required - SharedResourcesWrapper.SideOfPier = - DestinationSideOfPier(TargetRightAscension, TargetDeclination); - } - SetSlewingMinEndTime(); break; case "1": diff --git a/Meade.net/Wrapper/SharedResourcesWrapper.cs b/Meade.net/Wrapper/SharedResourcesWrapper.cs index bbd9f82..052350a 100644 --- a/Meade.net/Wrapper/SharedResourcesWrapper.cs +++ b/Meade.net/Wrapper/SharedResourcesWrapper.cs @@ -31,8 +31,7 @@ namespace ASCOM.Meade.net.Wrapper bool IsParked { get; } ParkedPosition ParkedPosition { get; } bool RestartTracking { get; } - - PierSide SideOfPier { get; set; } + double? TargetRightAscension { get; set; } double? TargetDeclination { get; set; } From 7dc96c650d986f576c2749dc65d6b806b1165b54 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Tue, 17 May 2022 19:11:01 +0100 Subject: [PATCH 2/2] tidied up old unneeded unit test code --- .../TelescopeUnitTests.cs | 204 ------------------ 1 file changed, 204 deletions(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index 6ef8ca5..6195dc9 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -2,7 +2,6 @@ using System.Globalization; using System.Reflection; using ASCOM; -using ASCOM.Astrometry; using ASCOM.Astrometry.AstroUtils; using ASCOM.Astrometry.NOVAS; using ASCOM.DeviceInterface; @@ -838,17 +837,6 @@ namespace Meade.net.Telescope.UnitTests _sharedResourcesWrapperMock.Verify(x => x.SendBlind(expectedCommand, false), Times.Once); } - //[TestCase(TelescopeList.Autostar497, "43Ef")] - //public void AlignmentMode_Set_WhenAutostarFirmwareToLow_ThenThrowsException(string productName, string firmware) - //{ - // ConnectTelescope(productName, firmware); - - // var excpetion = Assert.Throws(() => _telescope.AlignmentMode = AlignmentModes.algAltAz); - - // Assert.That(excpetion.Property, Is.EqualTo("AlignmentMode")); - // Assert.That(excpetion.AccessorSet, Is.True); - //} - [Test] public void ApertureArea_Get_ReturnsExpectedResult() { @@ -1038,8 +1026,6 @@ namespace Meade.net.Telescope.UnitTests _profileProperties.Precision = desiredPresision; _connectionInfo.SameDevice = 2; - //_connectionInfo.Connections = 2; - _telescope.Connected = true; @@ -2020,173 +2006,6 @@ namespace Meade.net.Telescope.UnitTests Assert.That(excpetion.AccessorSet, Is.True); } - //[TestCase(0, 34, PierSide.pierEast)] - //[TestCase(12, 34, PierSide.pierEast)] - //[TestCase(23.4, 34, PierSide.pierWest)] - //public void SideOfPier_WhenSecondConnectionMade_ThenValueIsPreserved(double ra, double dec, PierSide expectedPierSide) - //{ - // _sharedResourcesWrapperMock.Setup(x => x.SendChar("MS", false)).Returns("0"); - // _utilMock.Setup(x => x.HMSToHours(null)).Returns(ra); - // _utilMock.Setup(x => x.DMSToDegrees(null)).Returns(dec); - // _astroUtilsMock.Setup(x => x.ConditionHA(It.IsAny())).Returns(pHA => pHA < -12 ? pHA + 12 : pHA > 12 ? pHA - 12 : pHA); - // _astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny())).Returns(pRA => pRA < 0 ? pRA + 24 : pRA >= 24 ? pRA - 24 : pRA); - - // ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_43Eg); - // Assert.That(_connectionInfo.SameDevice, Is.EqualTo(1)); - - // _telescope.SlewToCoordinates(ra, dec); - // var sideOfPierAfterSlew = _telescope.SideOfPier; - - // Assert.That(sideOfPierAfterSlew, Is.EqualTo(expectedPierSide)); - - // var secondTelescopeInstance = - // new ASCOM.Meade.net.Telescope(_utilMock.Object, _utilExtraMock.Object, _astroUtilsMock.Object, - // _sharedResourcesWrapperMock.Object, _astroMathsMock.Object, _clockMock.Object, _novasMock.Object); - - // Assert.That(secondTelescopeInstance.Connected, Is.False); - - // _connectionInfo.SameDevice = 2; - // secondTelescopeInstance.Connected = true; - - // Assert.That(secondTelescopeInstance.SideOfPier, Is.EqualTo(sideOfPierAfterSlew)); - - // _sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Once); - // _utilMock.Verify(x => x.HMSToHours(null), Times.Once); - // _utilMock.Verify(x => x.DMSToDegrees(null), Times.AtLeast(2)); - // _astroUtilsMock.Verify(x => x.ConditionHA(It.IsAny()), Times.Once); - // _astroUtilsMock.Verify(x => x.ConditionRA(It.IsAny()), Times.Once); - //} - - delegate void NovasSiderealTimeDelegate(double jdHigh, double jdLow, double jdDelta, GstType gstType, Method method, Accuracy accuracy, ref double sideralTime); - - /// - /// Test cases obtained via .NET telescope simulator - /// - //[TestCase(9.4337648353882, -76.7178112042103, "2021-06-07T05:23:41.7610000Z", 8.13556526999591, 145.166333333333, 2d, PierSide.pierWest, PierSide.pierEast)] - //[TestCase(10.1581570159006, 11.8639491368916, "2021-06-07T10:59:19.7000000Z", 9.72726050605156, 145.166333333333, 1d, PierSide.pierWest, PierSide.pierEast)] - //[TestCase(9.66583199112222, 81.2310578173083, "2021-06-07T11:19:24.5540000Z", 7.73744116673785, 110.285166666667, 2d, PierSide.pierWest, PierSide.pierEast)] - //[TestCase(8.32978972808615, -29.816491813155, "2021-06-07T11:29:33.7040000Z", 7.90712206850482, 110.285166666667, 1d, PierSide.pierWest, PierSide.pierEast)] - //[TestCase(1.76405553984887, 60.7756226366989, "2021-06-07T11:34:07.5270000Z", 0.214893775091689, -6.24266666666667, 2d, PierSide.pierWest, PierSide.pierEast)] - //[TestCase(0.523375885742411, -33.1288722052936, "2021-06-07T11:38:25.1670000Z", 0.286661722506396, -6.24266666666667, 0.5d, PierSide.pierWest, PierSide.pierEast)] - //public void SideOfPier_WhenTrackingThroughMeridianAfterSubsequentGoto_ThenAMeridianFlipIsPerformed( - // double ra, - // double dec, - // string jnowTimeStr, /* JNOW of object before transit */ - // double jnowSiderealTime, - // double siteLongitude, - // double trackingTimeHours, - // PierSide pierSideBeforeTransit, - // PierSide pierSideAfterRetargeting - //) - //{ - // // given - // var jnowTime = DateTimeOffset.ParseExact(jnowTimeStr, "o", CultureInfo.InvariantCulture).UtcDateTime; - // var trackingTimeDiff = TimeSpan.FromHours(trackingTimeHours); - // var timeAfterTracking = jnowTime + trackingTimeDiff; - // var raAsHMS = ra + "HMS"; - // var decAsDMS = dec + "DMS"; - // var currentTime = jnowTime; - - // _clockMock.Setup(x => x.UtcNow).Returns(() => currentTime); - - // _sharedResourcesWrapperMock.Setup(x => x.SendChar("MS", false)).Returns("0"); - - // // setup for RA - // _utilMock.Setup(x => x.HoursToHMS(ra, ":", ":", ":", 2)).Returns(raAsHMS); - // _utilMock.Setup(x => x.HMSToHours(raAsHMS)).Returns(ra); - - // // setup for DEC - // _utilMock.Setup(x => x.DMSToDegrees(decAsDMS)).Returns(dec); - // _utilMock.Setup(x => x.DegreesToDMS(dec, "*", ":", ":", 2)).Returns(decAsDMS); - - // // setup for SiteLongitude - // var siteLongitudeResult = siteLongitude + "Gg"; - // _sharedResourcesWrapperMock.Setup(x => x.SendString("Gg", false)).Returns(siteLongitudeResult); - // // remember to invert longitude - // _utilMock.Setup(x => x.DMSToDegrees(siteLongitudeResult)).Returns(-siteLongitude); - - // // setup for SideralTime - // var siteLongitudeAdj = siteLongitude / 360.0 * 24.0; - // var jnowSiderealTimeWithoutLongAdj = jnowSiderealTime - siteLongitudeAdj; - // var afterTrackingSiderealTimeWithoutLongAdj = jnowSiderealTimeWithoutLongAdj + trackingTimeHours; - - // _utilMock.Setup(x => x.DateUTCToJulian(It.IsAny())).Returns(pDateTime => pDateTime.Ticks); - - // _novasMock - // .Setup(x => x.SiderealTime( - // It.IsAny(), - // 0d, - // 0d, - // GstType.GreenwichApparentSiderealTime, - // Method.EquinoxBased, - // Accuracy.Reduced, - // ref It.Ref.IsAny)) - // .Callback(new NovasSiderealTimeDelegate(NovasSiderealTime)) - // .Returns(0); - - // _astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny())).Returns(pRA => pRA < 0 ? pRA + 24 : pRA >= 24 ? pRA - 24 : pRA); - - // void NovasSiderealTime(double pJDHigh, double pJDLow, double pJDDelta, GstType pGSTType, Method pMethod, Accuracy pAccuracy, ref double pSideralTime) - // { - // if (pJDHigh == jnowTime.Ticks) - // { - // pSideralTime = jnowSiderealTimeWithoutLongAdj; - // } - // else if (pJDHigh == timeAfterTracking.Ticks) - // { - // pSideralTime = afterTrackingSiderealTimeWithoutLongAdj; - // } - // else - // { - // Assert.Fail($"No sideral time defined for {pJDHigh}"); - // } - // } - - // // Setup DestinationSideOfPier - // _astroUtilsMock.Setup(x => x.ConditionHA(It.IsAny())).Returns(pHA => pHA < -12 ? pHA + 12 : pHA > 12 ? pHA - 12 : pHA); - - // // Use firmware that supports GW - // ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_43Eg); - - // // when - // _telescope.SlewToCoordinatesAsync(ra, dec); - // var actualSideOfPierAfterSlew = _telescope.SideOfPier; - // // simulate tracking time - // currentTime += trackingTimeDiff; - // var actualSideOfPierAfterTracking = _telescope.SideOfPier; - // _telescope.SlewToTargetAsync(); - // var actualSideOfPierAfterRetargeting = _telescope.SideOfPier; - - // // then - // Assert.That(_telescope.TargetRightAscension, Is.EqualTo(ra)); - // Assert.That(_telescope.TargetDeclination, Is.EqualTo(dec)); - // Assert.That(actualSideOfPierAfterSlew, Is.EqualTo(pierSideBeforeTransit)); - // Assert.That(actualSideOfPierAfterTracking, Is.EqualTo(pierSideBeforeTransit)); - // Assert.That(actualSideOfPierAfterRetargeting, Is.EqualTo(pierSideAfterRetargeting)); - - // _clockMock.Verify(x => x.UtcNow, Times.AtLeast(2)); - - // foreach (var time in new[] { jnowTime, timeAfterTracking }) - // { - // _utilMock.Verify(x => x.DateUTCToJulian(time)); - - // _novasMock - // .Verify(x => x.SiderealTime( - // time.Ticks, - // 0d, - // 0d, - // GstType.GreenwichApparentSiderealTime, - // Method.EquinoxBased, - // Accuracy.Reduced, - // ref It.Ref.IsAny), - // Times.Once); - // } - - // _sharedResourcesWrapperMock.Verify(x => x.SendString("Gg", false), Times.Exactly(3)); - // _sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Exactly(2)); - // _sharedResourcesWrapperMock.Verify(x => x.SendString("D", false), Times.AtLeast(3)); - //} - [Test] public void SiteElevation_Get_WhenNotConnectedThrowsException() { @@ -2742,17 +2561,6 @@ namespace Meade.net.Telescope.UnitTests Assert.That(_telescope.Tracking, Is.EqualTo(expectedResult)); } - //[TestCase(true)] - //[TestCase(false)] - //public void Tracking_Set_WhenCanSetTrackingIsFalse_ThenThrowsNotImplementedException(bool tracking) - //{ - // // GW is not supported, so CanSetTracking is false - // ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_30Ee); - - // Assert.Throws( () => { _telescope.Tracking = tracking; } ); - //} - - // [TestCase(true, "AP")] [TestCase(false, "AL")] public void Tracking_Set_WhenCanSetTrackingIsTrue_ThenValueIsUpdated(bool tracking, string alignmentCommand) { @@ -3396,22 +3204,10 @@ namespace Meade.net.Telescope.UnitTests _utilMock.Setup(x => x.DMSToDegrees(telescopeDecResult)).Returns(declination); _utilMock.Setup(x => x.DegreesToDMS(declination, "*", ":", ":", digitsRA)).Returns(telescopeDecResult); - //var slewCounter = 0; - //var iterations = 10; - //_sharedResourcesWrapperMock.Setup(x => x.SendString("D", false)).Returns(() => - //{ - // slewCounter++; - // if (slewCounter <= iterations) - // return "|"; - // else - // return ""; - //}); - ConnectTelescope(); _telescope.SlewToCoordinatesAsync(_testProperties.rightAscension, declination); - //_utilMock.Verify(x => x.WaitForMilliseconds(It.IsAny()), Times.Exactly(iterations)); Assert.That(_telescope.TargetRightAscension, Is.EqualTo(_testProperties.rightAscension)); Assert.That(_telescope.TargetDeclination, Is.EqualTo(declination)); _sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Once);