Implemented the select site custom action.

This commit is contained in:
2019-07-20 23:56:52 +01:00
parent 5d3688bde7
commit 6b9eff2b86
2 changed files with 60 additions and 3 deletions
@@ -87,8 +87,9 @@ namespace Meade.net.Telescope.UnitTests
var supportedActions = _telescope.SupportedActions; var supportedActions = _telescope.SupportedActions;
Assert.That(supportedActions, Is.Not.Null); Assert.That(supportedActions, Is.Not.Null);
Assert.That(supportedActions.Count, Is.EqualTo(1)); Assert.That(supportedActions.Count, Is.EqualTo(2));
Assert.That(supportedActions.Contains("handbox"), Is.True); Assert.That(supportedActions.Contains("handbox"), Is.True);
Assert.That(supportedActions.Contains("site"), Is.True);
} }
[Test] [Test]
@@ -132,7 +133,7 @@ namespace Meade.net.Telescope.UnitTests
[TestCase("back", ":EK87#")] [TestCase("back", ":EK87#")]
[TestCase("forward", ":EK69#")] [TestCase("forward", ":EK69#")]
[TestCase("?", ":EK63#")] [TestCase("?", ":EK63#")]
public void Action_Handbox_blindCommands(string action, string expectedString) public void Action_Handbox_WhenCalling_ThenSendsAppropriateBlindCommands(string action, string expectedString)
{ {
ConnectTelescope(); ConnectTelescope();
@@ -141,6 +142,30 @@ namespace Meade.net.Telescope.UnitTests
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(expectedString), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.SendBlind(expectedString), Times.Once);
} }
[TestCase("1")]
[TestCase("2")]
[TestCase("3")]
[TestCase("4")]
public void Action_Site_WhenCallingWithValidValues_ThenSelectsCorrectSite(string site)
{
ConnectTelescope();
_telescope.Action("site", site);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind($":W{site}#"), Times.Once);
}
[TestCase("0")]
[TestCase("5")]
public void Action_Site_WhenCallingWithInCorrectValues_ThenThrowsException(string site)
{
ConnectTelescope();
var exception = Assert.Throws<InvalidValueException>(() => { _telescope.Action("site", site); });
Assert.That(exception.Message, Is.EqualTo($"Site {site} not allowed must be between 1 and 4"));
}
[Test] [Test]
public void Action_Handbox_nonExistantAction() public void Action_Handbox_nonExistantAction()
{ {
@@ -335,9 +360,18 @@ namespace Meade.net.Telescope.UnitTests
_sharedResourcesWrapperMock.Verify(x => x.SendBlind(":U#"), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.SendBlind(":U#"), Times.Once);
} }
[Test]
public void SelectSite_Get_WhenNotConnected_ThrowsException()
{
var exception = Assert.Throws<NotConnectedException>(() => { _telescope.SelectSite(1); });
Assert.That(exception.Message, Is.EqualTo("Not connected to telescope when trying to execute: SelectSite"));
}
[Test] [Test]
public void SelectSite_WhenNewSiteToLow_ThenThrowsException() public void SelectSite_WhenNewSiteToLow_ThenThrowsException()
{ {
ConnectTelescope();
var site = 0; var site = 0;
var result = Assert.Throws<ArgumentOutOfRangeException>(() => { _telescope.SelectSite(site); }); var result = Assert.Throws<ArgumentOutOfRangeException>(() => { _telescope.SelectSite(site); });
@@ -347,6 +381,8 @@ namespace Meade.net.Telescope.UnitTests
[Test] [Test]
public void SelectSite_WhenNewSiteToHigh_ThenThrowsException() public void SelectSite_WhenNewSiteToHigh_ThenThrowsException()
{ {
ConnectTelescope();
var site = 5; var site = 5;
var result = Assert.Throws<ArgumentOutOfRangeException>(() => { _telescope.SelectSite(site); }); var result = Assert.Throws<ArgumentOutOfRangeException>(() => { _telescope.SelectSite(site); });
@@ -359,6 +395,8 @@ namespace Meade.net.Telescope.UnitTests
[TestCase(4)] [TestCase(4)]
public void SelectSite_WhenNewSiteToHigh_ThenThrowsException(int site) public void SelectSite_WhenNewSiteToHigh_ThenThrowsException(int site)
{ {
ConnectTelescope();
_telescope.SelectSite(site); _telescope.SelectSite(site);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind($":W{site}#"), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.SendBlind($":W{site}#"), Times.Once);
+20 -1
View File
@@ -157,6 +157,7 @@ namespace ASCOM.Meade.net
LogMessage("SupportedActions Get", "Returning empty arraylist"); LogMessage("SupportedActions Get", "Returning empty arraylist");
var supportedActions = new ArrayList(); var supportedActions = new ArrayList();
supportedActions.Add("handbox"); supportedActions.Add("handbox");
supportedActions.Add("site");
return supportedActions; return supportedActions;
} }
} }
@@ -239,6 +240,23 @@ namespace ASCOM.Meade.net
LogMessage("", "Action {0}, parameters {1} not implemented", actionName, actionParameters); LogMessage("", "Action {0}, parameters {1} not implemented", actionName, actionParameters);
throw new ActionNotImplementedException($"{actionName}({actionParameters})"); throw new ActionNotImplementedException($"{actionName}({actionParameters})");
} }
break;
case "site":
switch (actionParameters.ToLower())
{
case "1":
case "2":
case "3":
case "4":
SelectSite(actionParameters.ToInteger());
break;
default:
LogMessage("", "Action {0}, parameters {1} not implemented", actionName, actionParameters);
throw new InvalidValueException($"Site {actionParameters} not allowed must be between 1 and 4");
}
break; break;
default: default:
LogMessage("", "Action {0}, parameters {1} not implemented", actionName, actionParameters); LogMessage("", "Action {0}, parameters {1} not implemented", actionName, actionParameters);
@@ -396,9 +414,10 @@ namespace ASCOM.Meade.net
}); });
} }
//todo hook this up to a custom action
public void SelectSite(int site) public void SelectSite(int site)
{ {
CheckConnected("SelectSite");
if (site < 1) if (site < 1)
throw new ArgumentOutOfRangeException("site",site,"Site cannot be lower than 1"); throw new ArgumentOutOfRangeException("site",site,"Site cannot be lower than 1");
else if (site > 4) else if (site > 4)