/// <summary> /// Takes a 6-character string gridsquare and processes it using LookupTablesHelper and GridsquareHelper to return a DDMCoordinate object. /// If solution cannot be found a null DDMCoordinate type is returned. /// </summary> /// <param name="gridsquare"></param> /// <returns></returns> public DDMCoordinate ConvertGridsquareToDDM(string gridsquare) { DDMCoordinate DdmResult = null; if (!string.IsNullOrEmpty(gridsquare) && !string.IsNullOrWhiteSpace(gridsquare)) { if (LookuptablesHelper.GenerateTableLookups() && GridsquareHelper.ValidateGridsquareInput(gridsquare, out string validGridsquare)) { decimal tempLatDegrees = ConversionHelper.GetLatDegrees(LookuptablesHelper, validGridsquare, out short latDirection); decimal latDegreesWithRemainder = ConversionHelper.AddLatDegreesRemainder(tempLatDegrees, latDirection, validGridsquare); decimal DDMlatMinutes = ConversionHelper.GetLatMinutes( LookuptablesHelper, latDegreesWithRemainder, latDirection, validGridsquare, out decimal adjustedLatDegrees); decimal tempLonDegrees = ConversionHelper.GetLonDegrees(LookuptablesHelper, validGridsquare, out short lonDirection); decimal lonDegreesWithRemainder = ConversionHelper.AddLonDegreesRemainder(tempLonDegrees, lonDirection, validGridsquare); decimal DDMlonMinutes = ConversionHelper.GetLonMinutes( LookuptablesHelper, lonDegreesWithRemainder, lonDirection, validGridsquare, out decimal adjustedLonDegrees); DdmResult = new DDMCoordinate( adjustedLatDegrees, DDMlatMinutes, adjustedLonDegrees, DDMlonMinutes); } } return(DdmResult); }
public void AddLonDegrees_West_Pass() { decimal startingLat = -120.0m; int latDir = -1; string grid = "CN87ut"; decimal expectedResult = -122.0m; decimal actualResult = ConversionHelper.AddLonDegreesRemainder(startingLat, latDir, grid); Assert.AreEqual(expectedResult, actualResult); }