public void Constructor_Seconds_Assert() { var degrees = 41.79620158; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); Assert.IsTrue(subject.Seconds.WithinTolerance(46.3256880000117), "Value == {0}", subject.Seconds); }
public void Constructor_Degree_Assert() { var degrees = 41.79620158; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); Assert.IsTrue(subject.Degree.WithinTolerance(41), "Value == {0}", subject.Degree); }
private string ToDegreeMinute(DegreeMinuteSecond dms) { string d = string.Format(this.DegreeFormatString, dms.Degree); string m = string.Format("{0:00.#########}", Math.Round(dms.Minutes, this.Scale)); return(string.Format("{1}{2}{0}{3}{4}", this.Separator, d, this.DegreeSymbol, m, this.MinuteSymbol)); }
public void Constructor_Minutes_Assert() { var degrees = 41.79620158; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); Assert.IsTrue(subject.Minutes.WithinTolerance(47.7720948000001), "Value == {0}", subject.Minutes); }
public void Constructor_Mils_Assert() { var degrees = 41.79620158; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); Assert.IsTrue(subject.Mils.WithinTolerance(0.006530656496875), "Value == {0}", subject.Mils); }
public void ToMils_Provider_Null_ThrowsException() { var degrees = 41.79620158; IFormatProvider provider = default(IFormatProvider); DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); subject.ToMils(provider); }
public void ToMils_Provider_Invalid_ThrowsException() { var degrees = 41.79620158; IFormatProvider provider = new System.Globalization.DateTimeFormatInfo(); DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); subject.ToMils(provider); }
public void ToCompassPoint_Default_Assert() { var degrees = 10.5; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToCompassPoint(); Assert.AreEqual("N", result); }
public void ToBearing_Negative_Assert() { var degrees = -41.79620158; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToBearing(); Assert.AreEqual("318°", result); }
public void ToString_Assert() { var degrees = 41.79620158; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToString(); Assert.AreEqual("041° 47' 46''", result); }
public void ToMils_Negative_Assert() { var degrees = -41.79620158; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToMils(); Assert.AreEqual("5409 mils", result); }
public void ToLongitude_West_Assert() { var degrees = -41.79620158; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToLongitude(); Assert.AreEqual("041° 47' 46'' W", result); }
public void ToLatitude_South_Assert() { var degrees = -41.79620158; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToLatitude(); Assert.AreEqual("41° 47' 46'' S", result); }
public void TryParse_DMS_West_Assert() { DegreeMinuteSecond dms = null; string value = "041° 47' 46.32569'' W"; bool result = DegreeMinuteSecond.TryParse(value, out dms); Assert.IsTrue(result); Assert.IsTrue(dms.Degrees.WithinTolerance(-41.7962015805556), dms.Degrees.ToString()); }
public void ToBearing_Format_Assert() { var degrees = 41.79620158; string format = "dms3"; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToBearing(format); Assert.AreEqual("041° 47' 46.326''", result); }
public void ToMils_Format_Assert() { var degrees = 41.79620158; string format = "dms3"; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToMils(format); Assert.AreEqual("710.535 mils", result); }
public void TryParse_DoubleString_Assert() { DegreeMinuteSecond dms = null; string value = "41.79620158"; bool result = DegreeMinuteSecond.TryParse(value, out dms); Assert.IsTrue(result); Assert.AreEqual(Convert.ToDouble(value), dms.Degrees); }
public void ToCompassPoint_SecondaryIntercardinal_Assert() { var degrees = 21.5; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); IFormatProvider provider = new CompassPointFormatInfo(CompassPointPrecision.SecondaryIntercardinal); string result = subject.ToCompassPoint(provider); Assert.AreEqual("NNE", result); }
public void ToMils_Provider_Format_Assert() { var degrees = 41.79620158; string format = "dms5"; IFormatProvider provider = new MilliradianFormatInfo(); DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToMils(provider, format); Assert.AreEqual("710.53543 mils", result); }
public void ToString_Provider_Format_Assert() { var degrees = 41.79620158; string format = "dms5"; IFormatProvider provider = new DegreeMinuteSecondFormatInfo(); DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToString(provider, format); Assert.AreEqual("041° 47' 46.32569''", result); }
public void ToMils_Provider_Assert() { var degrees = 41.79620158; MilliradianFormatInfo provider = new MilliradianFormatInfo(); provider.Separator = "-"; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToMils(provider); Assert.AreEqual("711-mils", result); }
public void ToString_Provider_Assert() { var degrees = 41.79620158; DegreeMinuteSecondFormatInfo provider = new DegreeMinuteSecondFormatInfo(); provider.Separator = "-"; DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees); string result = subject.ToString(provider); Assert.AreEqual("041°-47'-46''", result); }
private static double ConvertToBearing(string value) { DegreeMinuteSecond dms; if (DegreeMinuteSecond.TryParse(value, out dms)) { return(dms.Bearing); } else { throw new InvalidCastException(string.Format("Could not convert '{0}' to a DegreeMinuteSecond.", value)); } }
/// <summary> /// Format this object to a Degrees-Minutes-Seconds string. /// </summary> /// <param name="format"></param> /// <param name="arg"></param> /// <param name="formatProvider"></param> /// <returns></returns> protected override string DoFormat(string format, object arg, IFormatProvider formatProvider) { DegreeMinuteSecond dms = null; if (!DegreeMinuteSecondFormatInfo.TryParse(arg, out dms)) { // Provide default formatting if the argument is not as expected (Double or DegreeMinuteSecond). return(FormatUnexpectedDataType(format, arg)); } var bearing = base.DoFormat(format, dms.Bearing, formatProvider); // Just in case rounding took us up to 360°! return(bearing == null ? "–" : bearing.Replace("360", "0")); }
/// <summary> /// Format this object to a Milliradian (NATO) string. /// </summary> /// <param name="format"></param> /// <param name="arg"></param> /// <param name="formatProvider"></param> /// <returns></returns> protected override string DoFormat(string format, object arg, IFormatProvider formatProvider) { DegreeMinuteSecond dms = null; if (!DegreeMinuteSecondFormatInfo.TryParse(arg, out dms)) { // Provide default formatting if the argument is not as expected (Double or DegreeMinuteSecond). return(FormatUnexpectedDataType(format, arg)); } UpdateScaleFromFormatString(format); var mils = dms.Bearing * (6400 / 360); var m = Math.Round(mils, base.Scale); return(string.Format("{0}{1}{2}", m, base.Separator, this.MilsSymbol)); }
/// <summary> /// Format this object to a Degrees-Minutes-Seconds string. /// </summary> /// <param name="format"></param> /// <param name="arg"></param> /// <param name="formatProvider"></param> /// <returns></returns> protected override string DoFormat(string format, object arg, IFormatProvider formatProvider) { DegreeMinuteSecond dms = null; if (!DegreeMinuteSecondFormatInfo.TryParse(arg, out dms)) { // Provide default formatting if the argument is not as expected (Double or DegreeMinuteSecond). return(FormatUnexpectedDataType(format, arg)); } DegreeMinuteSecond degreeMinuteSecond = dms.Degrees < 0 ? new DegreeMinuteSecond(Math.Abs(dms.Degrees)) : dms; string latitude = base.DoFormat(format, degreeMinuteSecond, formatProvider); string cardinal = dms.Degrees < 0 ? Direction.South : Direction.North; return(latitude == null ? "–" : latitude + base.Separator + cardinal); }
/// <summary> /// Format this object to a Compass Point string. /// </summary> /// <param name="format"></param> /// <param name="arg"></param> /// <param name="formatProvider"></param> /// <returns></returns> protected override string DoFormat(string format, object arg, IFormatProvider formatProvider) { DegreeMinuteSecond dms = null; if (!DegreeMinuteSecondFormatInfo.TryParse(arg, out dms)) { // Provide default formatting if the argument is not as expected (Double or DegreeMinuteSecond). return(FormatUnexpectedDataType(format, arg)); } // No of compass points at required precision (1=>4, 2=>8, 3=>16). var n = 4 * Math.Pow(2, _precision - 1); double cardinalIndex = Math.Round(dms.Bearing * n / 360) % n * 16 / n; var cardinal = Cardinals[(int)cardinalIndex]; return(cardinal); }
/// <summary> /// Format this object to a Degrees-Minutes-Seconds string. /// </summary> /// <param name="format"></param> /// <param name="arg"></param> /// <param name="formatProvider"></param> /// <returns></returns> protected virtual string DoFormat(string format, object arg, IFormatProvider formatProvider) { if (arg == null) { throw new ArgumentNullException(nameof(arg), "The argument cannot be null."); } DegreeMinuteSecond dms = null; if (!DegreeMinuteSecondFormatInfo.TryParse(arg, out dms)) { // Provide default formatting if the argument is not as expected (Double or DegreeMinuteSecond). return(FormatUnexpectedDataType(format, arg)); } // Adjust for missing format. #pragma warning disable S3900 string f = string.Empty; if (string.IsNullOrWhiteSpace(format)) { // Default to everything. f = "DMS"; } else { f = format.ToUpper(System.Globalization.CultureInfo.CurrentCulture); } #pragma warning restore S3900 UpdateScaleFromFormatString(format); string secondsFormat = "S"; string minutesFormat = "M"; if (f.Contains(secondsFormat)) { return(ToDegreeMinuteSecond(dms)); } else if (f.Contains(minutesFormat)) { return(ToDegreeMinute(dms)); } else { return(ToDegree(dms)); } }
/// <summary> /// Attempt to parse the argument to a DegreeMinuteSecond object. /// </summary> /// <param name="arg"></param> /// <param name="result"></param> /// <returns></returns> protected static bool TryParse(object arg, out DegreeMinuteSecond result) { DegreeMinuteSecond dms = arg as DegreeMinuteSecond; if (dms == null && arg is double == false) { result = null; return(false); } else if (dms == null) { result = new DegreeMinuteSecond((double)arg); return(true); } else { result = dms; return(true); } }
private string ToDegree(DegreeMinuteSecond dms) { string d = string.Format(this.DegreeFormatString, Math.Round(dms.Degrees, this.Scale)); return(string.Format("{0}{1}", d, this.DegreeSymbol)); }