Beispiel #1
0
        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);
        }
Beispiel #2
0
        public void Constructor_Degree_Assert()
        {
            var degrees = 41.79620158;
            DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees);

            Assert.IsTrue(subject.Degree.WithinTolerance(41), "Value == {0}", subject.Degree);
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        public void ToMils_Provider_Null_ThrowsException()
        {
            var                degrees  = 41.79620158;
            IFormatProvider    provider = default(IFormatProvider);
            DegreeMinuteSecond subject  = new DegreeMinuteSecond(degrees);

            subject.ToMils(provider);
        }
Beispiel #7
0
        public void ToMils_Provider_Invalid_ThrowsException()
        {
            var                degrees  = 41.79620158;
            IFormatProvider    provider = new System.Globalization.DateTimeFormatInfo();
            DegreeMinuteSecond subject  = new DegreeMinuteSecond(degrees);

            subject.ToMils(provider);
        }
Beispiel #8
0
        public void ToCompassPoint_Default_Assert()
        {
            var degrees = 10.5;
            DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees);

            string result = subject.ToCompassPoint();

            Assert.AreEqual("N", result);
        }
Beispiel #9
0
        public void ToBearing_Negative_Assert()
        {
            var degrees = -41.79620158;
            DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees);

            string result = subject.ToBearing();

            Assert.AreEqual("318°", result);
        }
Beispiel #10
0
        public void ToString_Assert()
        {
            var degrees = 41.79620158;
            DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees);

            string result = subject.ToString();

            Assert.AreEqual("041° 47' 46''", result);
        }
Beispiel #11
0
        public void ToMils_Negative_Assert()
        {
            var degrees = -41.79620158;
            DegreeMinuteSecond subject = new DegreeMinuteSecond(degrees);

            string result = subject.ToMils();

            Assert.AreEqual("5409 mils", result);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
        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());
        }
Beispiel #15
0
        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);
        }
Beispiel #16
0
        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);
        }
Beispiel #17
0
        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);
        }
Beispiel #18
0
        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);
        }
Beispiel #19
0
        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);
        }
Beispiel #20
0
        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);
        }
Beispiel #21
0
        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);
        }
Beispiel #22
0
        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"));
        }
Beispiel #25
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);
        }
Beispiel #27
0
        /// <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);
        }
Beispiel #28
0
        /// <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));
            }
        }
Beispiel #29
0
        /// <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);
            }
        }
Beispiel #30
0
        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));
        }