@@ -1,5 +1,5 @@
using System ;
using System.Globalization ;
using System.Diagnostics.Eventing.Reader ;
using ASCOM ;
using ASCOM.Astrometry.AstroUtils ;
using ASCOM.DeviceInterface ;
@@ -506,5 +506,497 @@ namespace Meade.net.Telescope.UnitTests
Assert . That ( excpetion . Property , Is . EqualTo ( "AlignmentMode" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . True ) ;
}
[Test]
public void ApertureArea_Get_ThrowsNotImplementedException ( )
{
var excpetion = Assert . Throws < PropertyNotImplementedException > ( ( ) = > { var result = _telescope . ApertureArea ; } ) ;
Assert . That ( excpetion . Property , Is . EqualTo ( "ApertureArea" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . False ) ;
}
[Test]
public void ApertureDiameter_Get_ThrowsNotImplementedException ( )
{
var excpetion = Assert . Throws < PropertyNotImplementedException > ( ( ) = > { var result = _telescope . ApertureDiameter ; } ) ;
Assert . That ( excpetion . Property , Is . EqualTo ( "ApertureDiameter" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . False ) ;
}
[Test]
public void AtHome_Get_ReturnsFalse ( )
{
var result = _telescope . AtHome ;
Assert . That ( result , Is . False ) ;
}
[Test]
public void AtPark_Get_WhenNotParked_ThenReturnsFalse ( )
{
var result = _telescope . AtPark ;
Assert . That ( result , Is . False ) ;
}
[Test]
public void AtPark_Get_WhenParked_ThenReturnsTrue ( )
{
_sharedResourcesWrapperMock . Setup ( x = > x . ProductName ) . Returns ( ( ) = > _sharedResourcesWrapperMock . Object . AUTOSTAR497 ) ;
_sharedResourcesWrapperMock . Setup ( x = > x . FirmwareVersion ) . Returns ( ( ) = > _sharedResourcesWrapperMock . Object . AUTOSTAR497_43EG ) ;
_telescope . Connected = true ;
_telescope . Park ( ) ;
var result = _telescope . AtPark ;
Assert . That ( result , Is . True ) ;
}
[TestCase(TelescopeAxes.axisPrimary, 4)]
[TestCase(TelescopeAxes.axisSecondary, 4)]
[TestCase(TelescopeAxes.axisTertiary, 0)]
public void AxisRates_ReturnsExpectedResult ( TelescopeAxes axis , int expectedCount )
{
var result = _telescope . AxisRates ( axis ) ;
Assert . That ( result . Count , Is . EqualTo ( expectedCount ) ) ;
}
[Test]
public void CanFindHome_Get_ReturnsFalse ( )
{
var result = _telescope . CanFindHome ;
Assert . That ( result , Is . False ) ;
}
[TestCase(TelescopeAxes.axisPrimary, true)]
[TestCase(TelescopeAxes.axisSecondary, true)]
[TestCase(TelescopeAxes.axisTertiary, false)]
public void CanMoveAxis_ReturnsExpectedResult ( TelescopeAxes axis , bool expected )
{
var result = _telescope . CanMoveAxis ( axis ) ;
Assert . That ( result , Is . EqualTo ( expected ) ) ;
}
[Test]
public void CanPark_Get_ReturnsTrue ( )
{
var result = _telescope . CanPark ;
Assert . That ( result , Is . True ) ;
}
[Test]
public void CanPulseGuide_Get_ReturnsTrue ( )
{
var result = _telescope . CanPulseGuide ;
Assert . That ( result , Is . True ) ;
}
[Test]
public void CanSetDeclinationRate_Get_ReturnsFalse ( )
{
var result = _telescope . CanSetDeclinationRate ;
Assert . That ( result , Is . False ) ;
}
[Test]
public void CanSetGuideRates_Get_ReturnsFalse ( )
{
var result = _telescope . CanSetGuideRates ;
Assert . That ( result , Is . False ) ;
}
[Test]
public void CanSetPark_Get_ReturnsFalse ( )
{
var result = _telescope . CanSetPark ;
Assert . That ( result , Is . False ) ;
}
[Test]
public void CanSetPierSide_Get_ReturnsFalse ( )
{
var result = _telescope . CanSetPierSide ;
Assert . That ( result , Is . False ) ;
}
[Test]
public void CanSetRightAscensionRate_Get_ReturnsFalse ( )
{
var result = _telescope . CanSetRightAscensionRate ;
Assert . That ( result , Is . False ) ;
}
[Test]
public void CanSetTracking_Get_ReturnsTrue ( )
{
var result = _telescope . CanSetTracking ;
Assert . That ( result , Is . True ) ;
}
[Test]
public void CanSlew_Get_ReturnsTrue ( )
{
var result = _telescope . CanSlew ;
Assert . That ( result , Is . True ) ;
}
[Test]
public void CanSlewAltAz_Get_ReturnsTrue ( )
{
var result = _telescope . CanSlewAltAz ;
Assert . That ( result , Is . True ) ;
}
[Test]
public void CanSlewAltAzAsync_Get_ReturnsTrue ( )
{
var result = _telescope . CanSlewAltAzAsync ;
Assert . That ( result , Is . True ) ;
}
[Test]
public void CanSlewAsync_Get_ReturnsTrue ( )
{
var result = _telescope . CanSlewAsync ;
Assert . That ( result , Is . True ) ;
}
[Test]
public void CanSync_Get_ReturnsTrue ( )
{
var result = _telescope . CanSync ;
Assert . That ( result , Is . True ) ;
}
[Test]
public void CanSyncAltAz_Get_ReturnsFalse ( )
{
var result = _telescope . CanSyncAltAz ;
Assert . That ( result , Is . False ) ;
}
[Test]
public void CanUnpark_Get_ReturnsFalse ( )
{
var result = _telescope . CanUnpark ;
Assert . That ( result , Is . False ) ;
}
[Test]
public void Declination_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 actualResult = _telescope . Declination ; } ) ;
Assert . That ( exception . Message , Is . EqualTo ( "Not connected to telescope when trying to execute: Declination Get" ) ) ;
}
[TestCase("s12*34")]
[TestCase("s12*34’ 56")]
public void Declination_Get_WhenConnected_ThenReadsValueFromScope ( string declincationString )
{
var expectedResult = 12.34 ;
_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 ( ":GD#" ) ) . Returns ( declincationString ) ;
_utilMock . Setup ( x = > x . DMSToDegrees ( declincationString ) ) . Returns ( expectedResult ) ;
var actualResult = _telescope . Declination ;
Assert . That ( actualResult , Is . EqualTo ( expectedResult ) ) ;
}
[Test]
public void DeclinationRate_Get_ThenReturns0 ( )
{
var actualResult = _telescope . DeclinationRate ;
Assert . That ( actualResult , Is . EqualTo ( 0 ) ) ;
}
[Test]
public void DeclinationRate_Set_ThenThrowsException ( )
{
var excpetion = Assert . Throws < PropertyNotImplementedException > ( ( ) = > { _telescope . DeclinationRate = 0 ; } ) ;
Assert . That ( excpetion . Property , Is . EqualTo ( "DeclinationRate" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . True ) ;
}
[Test]
public void DestinationSideOfPier_ThenThrowsException ( )
{
var excpetion = Assert . Throws < MethodNotImplementedException > ( ( ) = > { var result = _telescope . DestinationSideOfPier ( 0 , 0 ) ; } ) ;
Assert . That ( excpetion . Method , Is . EqualTo ( "DestinationSideOfPier" ) ) ;
}
[Test]
public void DoesRefraction_Get_ThenThrowsException ( )
{
var excpetion = Assert . Throws < PropertyNotImplementedException > ( ( ) = > { var result = _telescope . DoesRefraction ; } ) ;
Assert . That ( excpetion . Property , Is . EqualTo ( "DoesRefraction" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . False ) ;
}
[Test]
public void DoesRefraction_Set_ThenThrowsException ( )
{
var excpetion = Assert . Throws < PropertyNotImplementedException > ( ( ) = > { _telescope . DoesRefraction = true ; } ) ;
Assert . That ( excpetion . Property , Is . EqualTo ( "DoesRefraction" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . True ) ;
}
[Test]
public void EquatorialSystem_Get_ReturnsExpectedValue ( )
{
var actualResult = _telescope . EquatorialSystem ;
Assert . That ( actualResult , Is . EqualTo ( EquatorialCoordinateType . equTopocentric ) ) ;
}
[Test]
public void FindHome_ThenThrowsException ( )
{
var excpetion = Assert . Throws < MethodNotImplementedException > ( ( ) = > { _telescope . FindHome ( ) ; } ) ;
Assert . That ( excpetion . Method , Is . EqualTo ( "FindHome" ) ) ;
}
[Test]
public void FocalLength_Get_ThenThrowsException ( )
{
var excpetion = Assert . Throws < PropertyNotImplementedException > ( ( ) = > { var result = _telescope . FocalLength ; } ) ;
Assert . That ( excpetion . Property , Is . EqualTo ( "FocalLength" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . False ) ;
}
[Test]
public void GuideRateDeclination_Get_ThenThrowsException ( )
{
var excpetion = Assert . Throws < PropertyNotImplementedException > ( ( ) = > { var result = _telescope . GuideRateDeclination ; } ) ;
Assert . That ( excpetion . Property , Is . EqualTo ( "GuideRateDeclination" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . False ) ;
}
[Test]
public void GuideRateDeclination_Set_ThenThrowsException ( )
{
var excpetion = Assert . Throws < PropertyNotImplementedException > ( ( ) = > { _telescope . GuideRateDeclination = 0 ; } ) ;
Assert . That ( excpetion . Property , Is . EqualTo ( "GuideRateDeclination" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . True ) ;
}
[Test]
public void GuideRateRightAscension_Get_ThenThrowsException ( )
{
var excpetion = Assert . Throws < PropertyNotImplementedException > ( ( ) = > { var result = _telescope . GuideRateRightAscension ; } ) ;
Assert . That ( excpetion . Property , Is . EqualTo ( "GuideRateRightAscension" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . False ) ;
}
[Test]
public void GuideRateRightAscension_Set_ThenThrowsException ( )
{
var excpetion = Assert . Throws < PropertyNotImplementedException > ( ( ) = > { _telescope . GuideRateRightAscension = 0 ; } ) ;
Assert . That ( excpetion . Property , Is . EqualTo ( "GuideRateRightAscension" ) ) ;
Assert . That ( excpetion . AccessorSet , Is . True ) ;
}
[Test]
public void IsPulseGuiding_Get_ReturnsFalse ( )
{
var result = _telescope . IsPulseGuiding ;
Assert . That ( result , Is . False ) ;
}
[Test]
public void MoveAxis_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 . MoveAxis ( TelescopeAxes . axisPrimary , 0 ) ; } ) ;
Assert . That ( exception . Message , Is . EqualTo ( "Not connected to telescope when trying to execute: MoveAxis" ) ) ;
}
[TestCase( 0, "", TelescopeAxes.axisPrimary)]
[TestCase( 1, ":RG#", TelescopeAxes.axisPrimary)]
[TestCase(-1, ":RG#", TelescopeAxes.axisPrimary)]
[TestCase( 2, ":RC#", TelescopeAxes.axisPrimary)]
[TestCase(-2, ":RC#", TelescopeAxes.axisPrimary)]
[TestCase( 3, ":RM#", TelescopeAxes.axisPrimary)]
[TestCase(-3, ":RM#", TelescopeAxes.axisPrimary)]
[TestCase( 4, ":RS#", TelescopeAxes.axisPrimary)]
[TestCase(-4, ":RS#", TelescopeAxes.axisPrimary)]
[TestCase(0, "", TelescopeAxes.axisSecondary)]
[TestCase(1, ":RG#", TelescopeAxes.axisSecondary)]
[TestCase(-1, ":RG#", TelescopeAxes.axisSecondary)]
[TestCase(2, ":RC#", TelescopeAxes.axisSecondary)]
[TestCase(-2, ":RC#", TelescopeAxes.axisSecondary)]
[TestCase(3, ":RM#", TelescopeAxes.axisSecondary)]
[TestCase(-3, ":RM#", TelescopeAxes.axisSecondary)]
[TestCase(4, ":RS#", TelescopeAxes.axisSecondary)]
[TestCase(-4, ":RS#", TelescopeAxes.axisSecondary)]
public void MoveAxis_WhenConnected_ThenExecutesCorrectCommandSequence ( double rate , string slewRateCommand , TelescopeAxes axis )
{
_sharedResourcesWrapperMock . Setup ( x = > x . ProductName ) . Returns ( ( ) = > _sharedResourcesWrapperMock . Object . AUTOSTAR497 ) ;
_sharedResourcesWrapperMock . Setup ( x = > x . FirmwareVersion ) . Returns ( ( ) = > _sharedResourcesWrapperMock . Object . AUTOSTAR497_31EE ) ;
_telescope . Connected = true ;
_telescope . MoveAxis ( axis , rate ) ;
if ( slewRateCommand ! = string . Empty )
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( slewRateCommand ) , Times . Once ) ;
else
{
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":RG#" ) , Times . Never ) ;
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":RC#" ) , Times . Never ) ;
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":RM#" ) , Times . Never ) ;
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":RS#" ) , Times . Never ) ;
}
switch ( axis )
{
case TelescopeAxes . axisPrimary :
if ( rate = = 0 )
{
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":Qe#" ) , Times . Once ) ;
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":Qw#" ) , Times . Once ) ;
}
else if ( rate > 0 )
{
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":Me#" ) , Times . Once ) ;
}
else
{
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":Mw#" ) , Times . Once ) ;
}
break ;
case TelescopeAxes . axisSecondary :
if ( rate = = 0 )
{
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":Qn#" ) , Times . Once ) ;
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":Qs#" ) , Times . Once ) ;
}
else if ( rate > 0 )
{
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":Mn#" ) , Times . Once ) ;
}
else
{
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":Ms#" ) , Times . Once ) ;
}
break ;
default :
Assert . Fail ( "This should never happen" ) ;
break ;
}
}
[Test]
public void MoveAxis_WhenRateTooHigh_ThenThrowsException ( )
{
var testRate = 5 ;
_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 . MoveAxis ( TelescopeAxes . axisTertiary , testRate ) ; } ) ;
Assert . That ( exception . Message , Is . EqualTo ( $"Rate {testRate} not supported" ) ) ;
}
[Test]
public void MoveAxis_WhenTertiaryAxis_ThenThrowsException ( )
{
var testRate = 0 ;
_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 . MoveAxis ( TelescopeAxes . axisTertiary , testRate ) ; } ) ;
Assert . That ( exception . Message , Is . EqualTo ( $"Can not move this axis." ) ) ;
}
[Test]
public void Park_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 . Park ( ) ; } ) ;
Assert . That ( exception . Message , Is . EqualTo ( "Not connected to telescope when trying to execute: Park" ) ) ;
}
[Test]
public void Park_WhenNotParked_ThenSendsParkCommand ( )
{
_sharedResourcesWrapperMock . Setup ( x = > x . ProductName ) . Returns ( ( ) = > _sharedResourcesWrapperMock . Object . AUTOSTAR497 ) ;
_sharedResourcesWrapperMock . Setup ( x = > x . FirmwareVersion ) . Returns ( ( ) = > _sharedResourcesWrapperMock . Object . AUTOSTAR497_31EE ) ;
_telescope . Connected = true ;
Assert . That ( _telescope . AtPark , Is . False ) ;
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":hP#" ) , Times . Never ) ;
_telescope . Park ( ) ;
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":hP#" ) , Times . Once ) ;
Assert . That ( _telescope . AtPark , Is . True ) ;
}
[Test]
public void Park_WhenParked_ThenDoesNothing ( )
{
_sharedResourcesWrapperMock . Setup ( x = > x . ProductName ) . Returns ( ( ) = > _sharedResourcesWrapperMock . Object . AUTOSTAR497 ) ;
_sharedResourcesWrapperMock . Setup ( x = > x . FirmwareVersion ) . Returns ( ( ) = > _sharedResourcesWrapperMock . Object . AUTOSTAR497_31EE ) ;
_telescope . Connected = true ;
_telescope . Park ( ) ;
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":hP#" ) , Times . Once ) ;
Assert . That ( _telescope . AtPark , Is . True ) ;
//act
_telescope . Park ( ) ;
//no change from previous state.
_sharedResourcesWrapperMock . Verify ( x = > x . SendBlind ( ":hP#" ) , Times . Once ) ;
Assert . That ( _telescope . AtPark , Is . True ) ;
}
}
}