|
|
|
@@ -998,5 +998,330 @@ namespace Meade.net.Telescope.UnitTests
|
|
|
|
|
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":hP#"), Times.Once);
|
|
|
|
|
Assert.That(_telescope.AtPark, Is.True);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void PulseGuide_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.PulseGuide(GuideDirections.guideEast,0); });
|
|
|
|
|
Assert.That(exception.Message, Is.EqualTo("Not connected to telescope when trying to execute: PulseGuide"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestCase(GuideDirections.guideEast)]
|
|
|
|
|
[TestCase(GuideDirections.guideWest)]
|
|
|
|
|
[TestCase(GuideDirections.guideNorth)]
|
|
|
|
|
[TestCase(GuideDirections.guideSouth)]
|
|
|
|
|
public void PulseGuide_WhenConnectedAndNewerPulseGuidingAvailable_ThenSendsNewCommandsAndWaits(GuideDirections direction)
|
|
|
|
|
{
|
|
|
|
|
var duration = 0;
|
|
|
|
|
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
|
|
|
|
|
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497_31EE);
|
|
|
|
|
_telescope.Connected = true;
|
|
|
|
|
|
|
|
|
|
_telescope.PulseGuide(direction, 0);
|
|
|
|
|
|
|
|
|
|
string d = string.Empty;
|
|
|
|
|
switch (direction)
|
|
|
|
|
{
|
|
|
|
|
case GuideDirections.guideEast:
|
|
|
|
|
d = "e";
|
|
|
|
|
break;
|
|
|
|
|
case GuideDirections.guideWest:
|
|
|
|
|
d = "w";
|
|
|
|
|
break;
|
|
|
|
|
case GuideDirections.guideNorth:
|
|
|
|
|
d = "n";
|
|
|
|
|
break;
|
|
|
|
|
case GuideDirections.guideSouth:
|
|
|
|
|
d = "s";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_sharedResourcesWrapperMock.Verify(x => x.SendBlind($":Mg{d}{duration:0000}#"));
|
|
|
|
|
_utilMock.Verify( x => x.WaitForMilliseconds(duration), Times.Once);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestCase(GuideDirections.guideEast)]
|
|
|
|
|
[TestCase(GuideDirections.guideWest)]
|
|
|
|
|
[TestCase(GuideDirections.guideNorth)]
|
|
|
|
|
[TestCase(GuideDirections.guideSouth)]
|
|
|
|
|
public void PulseGuide_WhenConnectedAndNewerPulseGuidingNotAvailable_ThenSendsOldCommandsAndWaits(GuideDirections direction)
|
|
|
|
|
{
|
|
|
|
|
var duration = 0;
|
|
|
|
|
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => _sharedResourcesWrapperMock.Object.AUTOSTAR497);
|
|
|
|
|
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => "31Ed");
|
|
|
|
|
_telescope.Connected = true;
|
|
|
|
|
|
|
|
|
|
_telescope.PulseGuide(direction, 0);
|
|
|
|
|
|
|
|
|
|
string d = string.Empty;
|
|
|
|
|
switch (direction)
|
|
|
|
|
{
|
|
|
|
|
case GuideDirections.guideEast:
|
|
|
|
|
d = "e";
|
|
|
|
|
break;
|
|
|
|
|
case GuideDirections.guideWest:
|
|
|
|
|
d = "w";
|
|
|
|
|
break;
|
|
|
|
|
case GuideDirections.guideNorth:
|
|
|
|
|
d = "n";
|
|
|
|
|
break;
|
|
|
|
|
case GuideDirections.guideSouth:
|
|
|
|
|
d = "s";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":RG#"));
|
|
|
|
|
_sharedResourcesWrapperMock.Verify(x => x.SendBlind($":M{d}#"));
|
|
|
|
|
_utilMock.Verify(x => x.WaitForMilliseconds(duration), Times.Once);
|
|
|
|
|
_sharedResourcesWrapperMock.Verify(x => x.SendBlind($":Q{d}#"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void RightAscension_Get_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>(() => { var result = _telescope.RightAscension; });
|
|
|
|
|
Assert.That(exception.Message, Is.EqualTo("Not connected to telescope when trying to execute: RightAscension Get"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void RightAscension_Get_WhenConnected_ThenReturnsExpectedResult()
|
|
|
|
|
{
|
|
|
|
|
var telescopeRaResult = "HH:MM:SS";
|
|
|
|
|
var hmsResult = 1.2;
|
|
|
|
|
|
|
|
|
|
_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(":GR#")).Returns(telescopeRaResult);
|
|
|
|
|
|
|
|
|
|
_utilMock.Setup(x => x.HMSToHours(telescopeRaResult)).Returns(hmsResult);
|
|
|
|
|
|
|
|
|
|
var result = _telescope.RightAscension;
|
|
|
|
|
|
|
|
|
|
_sharedResourcesWrapperMock.Verify( x => x.SendString(":GR#"), Times.Once);
|
|
|
|
|
_utilMock.Verify( x => x.HMSToHours(telescopeRaResult), Times.Once);
|
|
|
|
|
|
|
|
|
|
Assert.That(result,Is.EqualTo(hmsResult));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void RightAscensionRate_Get_ThenReturns0()
|
|
|
|
|
{
|
|
|
|
|
var result = _telescope.RightAscensionRate;
|
|
|
|
|
|
|
|
|
|
Assert.That(result, Is.EqualTo(0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void RightAscensionRate_Set_ThenThrowsException()
|
|
|
|
|
{
|
|
|
|
|
var excpetion = Assert.Throws<PropertyNotImplementedException>(() => { _telescope.RightAscensionRate = 1; });
|
|
|
|
|
|
|
|
|
|
Assert.That(excpetion.Property, Is.EqualTo("RightAscensionRate"));
|
|
|
|
|
Assert.That(excpetion.AccessorSet, Is.True);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SetPark_ThenThrowsException()
|
|
|
|
|
{
|
|
|
|
|
var excpetion = Assert.Throws<MethodNotImplementedException>(() => { _telescope.SetPark(); });
|
|
|
|
|
|
|
|
|
|
Assert.That(excpetion.Method, Is.EqualTo("SetPark"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SideOfPier_Get_ThenThrowsException()
|
|
|
|
|
{
|
|
|
|
|
var excpetion = Assert.Throws<PropertyNotImplementedException>(() => { var result = _telescope.SideOfPier; });
|
|
|
|
|
|
|
|
|
|
Assert.That(excpetion.Property, Is.EqualTo("SideOfPier"));
|
|
|
|
|
Assert.That(excpetion.AccessorSet, Is.False);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SideOfPier_Set_ThenThrowsException()
|
|
|
|
|
{
|
|
|
|
|
var excpetion = Assert.Throws<PropertyNotImplementedException>(() => { _telescope.SideOfPier = 0; });
|
|
|
|
|
|
|
|
|
|
Assert.That(excpetion.Property, Is.EqualTo("SideOfPier"));
|
|
|
|
|
Assert.That(excpetion.AccessorSet, Is.True);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SiteElevation_Get_ThenThrowsException()
|
|
|
|
|
{
|
|
|
|
|
var excpetion = Assert.Throws<PropertyNotImplementedException>(() => { var result = _telescope.SiteElevation; });
|
|
|
|
|
|
|
|
|
|
Assert.That(excpetion.Property, Is.EqualTo("SiteElevation"));
|
|
|
|
|
Assert.That(excpetion.AccessorSet, Is.False);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SiteElevation_Set_ThenThrowsException()
|
|
|
|
|
{
|
|
|
|
|
var excpetion = Assert.Throws<PropertyNotImplementedException>(() => { _telescope.SiteElevation = 0; });
|
|
|
|
|
|
|
|
|
|
Assert.That(excpetion.Property, Is.EqualTo("SiteElevation"));
|
|
|
|
|
Assert.That(excpetion.AccessorSet, Is.True);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SlewSettleTime_Get_ThenThrowsException()
|
|
|
|
|
{
|
|
|
|
|
var excpetion = Assert.Throws<PropertyNotImplementedException>(() => { var result = _telescope.SlewSettleTime; });
|
|
|
|
|
|
|
|
|
|
Assert.That(excpetion.Property, Is.EqualTo("SlewSettleTime"));
|
|
|
|
|
Assert.That(excpetion.AccessorSet, Is.False);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SlewSettleTime_Set_ThenThrowsException()
|
|
|
|
|
{
|
|
|
|
|
var excpetion = Assert.Throws<PropertyNotImplementedException>(() => { _telescope.SlewSettleTime = 0; });
|
|
|
|
|
|
|
|
|
|
Assert.That(excpetion.Property, Is.EqualTo("SlewSettleTime"));
|
|
|
|
|
Assert.That(excpetion.AccessorSet, Is.True);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void Unpark_ThenThrowsException()
|
|
|
|
|
{
|
|
|
|
|
var excpetion = Assert.Throws<MethodNotImplementedException>(() => { _telescope.Unpark(); });
|
|
|
|
|
|
|
|
|
|
Assert.That(excpetion.Method, Is.EqualTo("Unpark"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SiteLatitude_Get_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>(() => { var result = _telescope.SiteLatitude; });
|
|
|
|
|
Assert.That(exception.Message, Is.EqualTo("Not connected to telescope when trying to execute: SiteLatitude Get"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SiteLatitude_Get_WhenConnected_ThenRetrievesAndReturnsExpectedValue()
|
|
|
|
|
{
|
|
|
|
|
var siteLatitudeString = "testLatString";
|
|
|
|
|
var siteLatitudeValue = 123.45;
|
|
|
|
|
|
|
|
|
|
_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(":Gt#")).Returns(siteLatitudeString);
|
|
|
|
|
_utilMock.Setup(x => x.DMSToDegrees(siteLatitudeString)).Returns(siteLatitudeValue);
|
|
|
|
|
|
|
|
|
|
var result = _telescope.SiteLatitude;
|
|
|
|
|
|
|
|
|
|
_sharedResourcesWrapperMock.Verify( x => x.SendString(":Gt#"), Times.Once);
|
|
|
|
|
|
|
|
|
|
Assert.That(result,Is.EqualTo(siteLatitudeValue));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SiteLatitude_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.SiteLatitude = 123.45; });
|
|
|
|
|
Assert.That(exception.Message, Is.EqualTo("Not connected to telescope when trying to execute: SiteLatitude Set"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SiteLatitude_Set_WhenConnectedAndLatitudeIsGreaterThan90_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.SiteLatitude = 90.01; });
|
|
|
|
|
Assert.That(exception.Message, Is.EqualTo("Latitude cannot be greater than 90 degrees."));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SiteLatitude_Set_WhenConnectedAndLatitudeIsLessThanNegative90_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.SiteLatitude = -90.01; });
|
|
|
|
|
Assert.That(exception.Message, Is.EqualTo("Latitude cannot be less than -90 degrees."));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestCase(-10.5)]
|
|
|
|
|
[TestCase(20.75)]
|
|
|
|
|
public void SiteLatitude_Set_WhenValueSetAndTelescopRejects_ThenExceptionThrown(double siteLatitude)
|
|
|
|
|
{
|
|
|
|
|
_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<ASCOM.InvalidOperationException>(() => { _telescope.SiteLatitude = siteLatitude; });
|
|
|
|
|
|
|
|
|
|
Assert.That(exception.Message, Is.EqualTo("Failed to set site latitude."));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestCase(-10.5, ":St-10*30#")]
|
|
|
|
|
[TestCase(20.75, ":St+20*45#")]
|
|
|
|
|
public void SiteLatitude_Set_WhenValidValues_ThenValueSentToTelescope(double siteLatitude, string expectedCommand)
|
|
|
|
|
{
|
|
|
|
|
_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(expectedCommand)).Returns("1");
|
|
|
|
|
|
|
|
|
|
_telescope.SiteLatitude = siteLatitude;
|
|
|
|
|
|
|
|
|
|
_sharedResourcesWrapperMock.Verify(x => x.SendChar(expectedCommand), Times.Once);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void SiteLongitude_Get_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>(() => { var result = _telescope.SiteLongitude; });
|
|
|
|
|
Assert.That(exception.Message, Is.EqualTo("Not connected to telescope when trying to execute: SiteLongitude Get"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//todo figure out if this is right. don't feel right to me
|
|
|
|
|
[TestCase("5", 5, -5)]
|
|
|
|
|
[TestCase("-5", -5, 5)]
|
|
|
|
|
[TestCase("185", 185, 175)]
|
|
|
|
|
[TestCase("350", 350, 10)]
|
|
|
|
|
public void SiteLongitude_Get_WhenConnected_ThenRetrivesAndReturnsExpectedValue(string telescopelongitudeString, double telescopeLongitudeValue, double expectedResult)
|
|
|
|
|
{
|
|
|
|
|
var telescopeLongitude = "testLongitude";
|
|
|
|
|
|
|
|
|
|
_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(":Gg#")).Returns(telescopeLongitude);
|
|
|
|
|
_utilMock.Setup(x => x.DMSToDegrees(telescopeLongitude)).Returns(telescopeLongitudeValue);
|
|
|
|
|
|
|
|
|
|
var result = _telescope.SiteLongitude;
|
|
|
|
|
|
|
|
|
|
Assert.That(result, Is.EqualTo(expectedResult));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|