Unit tests for TargetDeclination

This commit is contained in:
2019-07-16 22:03:56 +01:00
parent ee60613a95
commit 0ac7b8b7bd
2 changed files with 152 additions and 6 deletions
@@ -1383,5 +1383,149 @@ namespace Meade.net.Telescope.UnitTests
_sharedResourcesWrapperMock.Verify(x => x.SendChar(expectedCommand), Times.Once);
}
[Test]
public void SyncToAltAz_WhenConnected_ThenSendsExpectedMessage()
{
string expectedMessage = "test blind Message";
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
_telescope.Connected = true;
var exception = Assert.Throws<MethodNotImplementedException>(() => { _telescope.SyncToAltAz(0,0); });
Assert.That(exception.Message, Is.EqualTo("Method SyncToAltAz is not implemented in this driver."));
}
[Test]
public void SyncToTarget_WhenNotConnected_ThenThrowsException()
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
var exception = Assert.Throws<NotConnectedException>(() => { _telescope.SyncToTarget(); });
Assert.That(exception.Message, Is.EqualTo("Not connected to telescope when trying to execute: SyncToTarget"));
}
[Test]
public void SyncToTarget_WhenSyncToTargetFails_ThenThrowsException()
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
_telescope.Connected = true;
_sharedResourcesWrapperMock.Setup(x => x.SendString(":CM#")).Returns(string.Empty);
var exception = Assert.Throws<InvalidOperationException>(() => { _telescope.SyncToTarget(); } );
Assert.That(exception.Message, Is.EqualTo("Unable to perform sync"));
_sharedResourcesWrapperMock.Verify(x => x.SendString(":CM#"), Times.Once);
}
[Test]
public void SyncToTarget_WhenSyncToTargetWorks_ThennoExceptionThrown()
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
_telescope.Connected = true;
_sharedResourcesWrapperMock.Setup(x => x.SendString(":CM#")).Returns(" M31 EX GAL MAG 3.5 SZ178.0'#");
Assert.DoesNotThrow(() => { _telescope.SyncToTarget(); });
_sharedResourcesWrapperMock.Verify(x => x.SendString(":CM#"), Times.Once);
}
[Test]
public void TargetDeclination_Set_WhenNotConnected_ThenThrowsException()
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
var exception = Assert.Throws<NotConnectedException>(() => { _telescope.TargetDeclination = 0; });
Assert.That(exception.Message, Is.EqualTo("Not connected to telescope when trying to execute: TargetDeclination Set"));
}
[Test]
public void TargetDeclination_Set_WhenValueTooHigh_ThenThrowsException()
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
_telescope.Connected = true;
var exception = Assert.Throws<InvalidValueException>(() => { _telescope.TargetDeclination = 90.1; });
Assert.That(exception.Message, Is.EqualTo("Declination cannot be greater than 90."));
}
[Test]
public void TargetDeclination_Set_WhenValueTooLow_ThenThrowsException()
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
_telescope.Connected = true;
var exception = Assert.Throws<InvalidValueException>(() => { _telescope.TargetDeclination = -90.1; });
Assert.That(exception.Message, Is.EqualTo("Declination cannot be less than -90."));
}
[Test]
public void TargetDeclination_Set_WhenTelescopeReportsInvalidDec_ThenThrowsException()
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
_telescope.Connected = true;
_sharedResourcesWrapperMock.Setup(x => x.SendChar(It.IsAny<string>())).Returns("0");
var exception = Assert.Throws<InvalidOperationException>(() => { _telescope.TargetDeclination = 50; });
Assert.That(exception.Message, Is.EqualTo("Target declination invalid"));
}
[TestCase(-30.5, "-30*30:00", ":Sd-30*30:00#")]
[TestCase(30.5, "30*30:00", ":Sd+30*30:00#")]
[TestCase(-75.25, "-75*15:00", ":Sd-75*15:00#")]
[TestCase(50, "50*00:00", ":Sd+50*00:00#")]
public void TargetDeclination_Set_WhenValueOK_ThenSetsNewTargetDeclination( double declination,string decstring, string commandString)
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
_telescope.Connected = true;
_utilMock.Setup(x => x.DegreesToDMS(declination, "*", ":", ":", 2)).Returns(decstring);
_sharedResourcesWrapperMock.Setup(x => x.SendChar(commandString)).Returns("1");
_telescope.TargetDeclination = declination;
_sharedResourcesWrapperMock.Verify(x => x.SendChar(commandString),Times.Once);
}
[Test]
public void TargetDeclination_Get_WhenTargetNotSet_ThenThrowsException()
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
_telescope.Connected = true;
var exception = Assert.Throws<InvalidOperationException>(() => { var result = _telescope.TargetDeclination; });
Assert.That(exception.Message, Is.EqualTo("Target not set"));
}
[TestCase(50, "50*00:00", ":Sd+50*00:00#")]
public void TargetDeclination_Get_WhenValueOK_ThenSetsNewTargetDeclination(double declination, string decstring, string commandString)
{
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
_telescope.Connected = true;
_utilMock.Setup(x => x.DegreesToDMS(declination, "*", ":", ":", 2)).Returns(decstring);
_sharedResourcesWrapperMock.Setup(x => x.SendChar(commandString)).Returns("1");
_telescope.TargetDeclination = declination;
var result = _telescope.TargetDeclination;
Assert.That(result, Is.EqualTo(declination));
}
}
}
+6 -4
View File
@@ -309,8 +309,10 @@ namespace ASCOM.Meade.net
SetLongFormat(true);
_userNewerPulseGuiding = IsNewPulseGuidingSupported();
LogMessage("Connected Set", $"New Pulse Guiding Supported: {_userNewerPulseGuiding}");
_targetDeclination = INVALID_PARAMETER;
_targetRightAscension = INVALID_PARAMETER;
LogMessage("Connected Set", $"New Pulse Guiding Supported: {_userNewerPulseGuiding}");
IsConnected = true;
}
catch (Exception)
@@ -1601,7 +1603,7 @@ namespace ASCOM.Meade.net
//:CM# Synchronizes the telescope's position with the currently selected database object's coordinates.
//Returns:
//LX200's - a "#" terminated string with the name of the object that was synced.
// Autostars & Autostar II - At static string: " M31 EX GAL MAG 3.5 SZ178.0'#"
// Autostars & Autostar II - A static string: " M31 EX GAL MAG 3.5 SZ178.0'#"
if (result == string.Empty)
throw new ASCOM.InvalidOperationException("Unable to perform sync");
@@ -1631,6 +1633,8 @@ namespace ASCOM.Meade.net
{
LogMessage("TargetDeclination Set", $"{value}");
CheckConnected("TargetDeclination Set");
//todo implement low precision version of this.
if (value > 90)
throw new ASCOM.InvalidValueException("Declination cannot be greater than 90.");
@@ -1638,8 +1642,6 @@ namespace ASCOM.Meade.net
if (value < -90)
throw new ASCOM.InvalidValueException("Declination cannot be less than -90.");
CheckConnected("TargetDeclination Set");
var dms = _utilities.DegreesToDMS(value, "*", ":", ":", 2);
var s = value < 0 ? string.Empty : "+";