From bfde58c6af18cd0e40d9ae36f5e7ce6af196f372 Mon Sep 17 00:00:00 2001 From: Colin Date: Sat, 13 Jul 2019 19:27:51 +0100 Subject: [PATCH] Lots more unit tests, and some refactoring to make the code follow SOLID better. --- .../TelescopeUnitTests.cs | 122 +++++++++++++++++- Meade.net.Telescope/Telescope.cs | 16 +-- 2 files changed, 128 insertions(+), 10 deletions(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index e0af2bf..a3868db 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -1,6 +1,8 @@ using System; +using System.Globalization; using ASCOM; using ASCOM.Astrometry.AstroUtils; +using ASCOM.DeviceInterface; using ASCOM.Meade.net; using ASCOM.Meade.net.AstroMaths; using ASCOM.Meade.net.Wrapper; @@ -34,7 +36,7 @@ namespace Meade.net.Telescope.UnitTests _astroUtilsMock = new Mock(); _sharedResourcesWrapperMock = new Mock(); - _sharedResourcesWrapperMock.Setup(x => x.SendString(":GZ#")).Returns("DDD*MM’SS#"); + _sharedResourcesWrapperMock.Setup(x => x.SendString(":GZ#")).Returns("DDD*MM’SS"); _sharedResourcesWrapperMock.Setup(x => x.AUTOSTAR497).Returns(() => "AUTOSTAR"); _sharedResourcesWrapperMock.Setup(x => x.AUTOSTAR497_31EE).Returns(() => "31Ee"); @@ -309,5 +311,123 @@ namespace Meade.net.Telescope.UnitTests Assert.That(result, Is.EqualTo(isSupported)); } + + [Test] + public void SetLongFormatFalse_WhenTelescopeReturnsShortFormat_ThenDoesNothing() + { + _sharedResourcesWrapperMock.Setup(x => x.SendString(":GZ#")).Returns("DDD*MM"); + _telescope.SetLongFormat(false); + + _sharedResourcesWrapperMock.Verify(x => x.SendBlind(":U#"),Times.Never); + } + + [Test] + public void SetLongFormatFalse_WhenTelescopeReturnsLongFormat_ThenTogglesPrecision() + { + _sharedResourcesWrapperMock.Setup(x => x.SendString(":GZ#")).Returns("DDD*MM’SS"); + _telescope.SetLongFormat(false); + + _sharedResourcesWrapperMock.Verify(x => x.SendBlind(":U#"), Times.Once); + } + + [Test] + public void SetLongFormatTrue_WhenTelescopeReturnsLongFormat_ThenDoesNothing() + { + _sharedResourcesWrapperMock.Setup(x => x.SendString(":GZ#")).Returns("DDD*MM’SS"); + _telescope.SetLongFormat(true); + + _sharedResourcesWrapperMock.Verify(x => x.SendBlind(":U#"), Times.Never); + } + + [Test] + public void SetLongFormatTrue_WhenTelescopeReturnsShortFormat_ThenTogglesPrecision() + { + _sharedResourcesWrapperMock.Setup(x => x.SendString(":GZ#")).Returns("DDD*MM"); + _telescope.SetLongFormat(true); + + _sharedResourcesWrapperMock.Verify(x => x.SendBlind(":U#"), Times.Once); + } + + [Test] + public void SelectSite_WhenNewSiteToLow_ThenThrowsException() + { + var site = 0; + var result = Assert.Throws(() => { _telescope.SelectSite(site); }); + + Assert.That(result.Message, Is.EqualTo($"Site cannot be lower than 1\r\nParameter name: site\r\nActual value was {site}.")); + } + + [Test] + public void SelectSite_WhenNewSiteToHigh_ThenThrowsException() + { + var site = 5; + var result = Assert.Throws(() => { _telescope.SelectSite(site); }); + + Assert.That(result.Message, Is.EqualTo($"Site cannot be higher than 4\r\nParameter name: site\r\nActual value was {site}.")); + } + + [TestCase(1)] + [TestCase(2)] + [TestCase(3)] + [TestCase(4)] + public void SelectSite_WhenNewSiteToHigh_ThenThrowsException(int site) + { + _telescope.SelectSite(site); + + _sharedResourcesWrapperMock.Verify(x => x.SendBlind($":W{site}#"), Times.Once); + } + + [Test] + public void Description_Get() + { + var expectedDescription = "Meade Generic"; + + var description = _telescope.Description; + + Assert.That(description, Is.EqualTo(expectedDescription)); + } + + [Test] + public void DriverVersion_Get() + { + Version version = System.Reflection.Assembly.GetAssembly(typeof(ASCOM.Meade.net.Telescope)).GetName().Version; + + string exptectedDriverInfo = $"{version.Major}.{version.Minor}.{version.Revision}.{version.Build}"; + + var driverVersion = _telescope.DriverVersion; + + Assert.That(driverVersion, Is.EqualTo(exptectedDriverInfo)); + } + + [Test] + public void DriverInfo_Get() + { + Version version = System.Reflection.Assembly.GetAssembly(typeof(ASCOM.Meade.net.Telescope)).GetName().Version; + + string exptectedDriverInfo = $"{_telescope.Description} .net driver. Version: {_telescope.DriverVersion}"; + + var driverInfo = _telescope.DriverInfo; + + Assert.That(driverInfo, Is.EqualTo(exptectedDriverInfo)); + } + + [Test] + public void InterfaceVersion_Get() + { + var interfaceVersion = _telescope.InterfaceVersion; + Assert.That(interfaceVersion, Is.EqualTo(3)); + + Assert.That(_telescope, Is.AssignableTo()); + } + + [Test] + public void Name_Get() + { + string expectedName = "Meade Generic"; + + var name = _telescope.Name; + + Assert.That(name, Is.EqualTo(expectedName)); + } } } diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index d04c107..3dab40a 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -356,7 +356,7 @@ namespace ASCOM.Meade.net { var result = _sharedResourcesWrapper.SendString(":GZ#"); //:GZ# Get telescope azimuth - //Returns: DDD*MM#T or DDD*MM’SS# + //Returns: DDD*MM# or DDD*MM’SS# //The current telescope Azimuth depending on the selected precision. bool isLongFormat = result.Length > 6; @@ -373,12 +373,13 @@ namespace ASCOM.Meade.net }); } - private void SelectSite(int site) + //todo hook this up to a custom action + public void SelectSite(int site) { if (site < 1) - throw new ArgumentOutOfRangeException("site cannot be lower than 1"); + throw new ArgumentOutOfRangeException("site",site,"Site cannot be lower than 1"); else if (site > 4) - throw new ArgumentOutOfRangeException("site cannot be higher than 4"); + throw new ArgumentOutOfRangeException("site", site, "Site cannot be higher than 4"); _sharedResourcesWrapper.SendBlind($":W{site}#"); //:W# @@ -400,10 +401,8 @@ namespace ASCOM.Meade.net { get { - Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; // TODO customise this driver description - string driverInfo = "Meade Generic .net driver. Version: " + String.Format(CultureInfo.InvariantCulture, "{0}.{1}", version.Major, - version.Minor); + string driverInfo = $"{Description} .net driver. Version: {DriverVersion}"; LogMessage("DriverInfo Get", driverInfo); return driverInfo; } @@ -414,8 +413,7 @@ namespace ASCOM.Meade.net get { Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; - string driverVersion = - String.Format(CultureInfo.InvariantCulture, "{0}.{1}", version.Major, version.Minor); + string driverVersion = $"{version.Major}.{version.Minor}.{version.Revision}.{version.Build}"; LogMessage("DriverVersion Get", driverVersion); return driverVersion; }