/// <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);
        }