Example #1
0
        public void TestCtor()
        {
            // set up
            var appSettings = new AppSettings();
            var viewModel   = new CurrentPositionDetailsViewModel(appSettings);

            // check
            Assert.IsFalse(viewModel.IsHeadingAvail, "initially heading is not available");
        }
        /// <summary>
        /// Creates new current position details page
        /// </summary>
        public CurrentPositionDetailsPage()
        {
            this.Title = "Current position";

            this.InitializeComponent();

            this.geolocationService = DependencyService.Get <IGeolocationService>();

            this.BindingContext = this.viewModel = new CurrentPositionDetailsViewModel(App.Settings);

            this.SetupToolbar();

            Task.Run(this.InitPositionAsync);
        }
        public void TestUnsetAltitude()
        {
            // set up
            var appSettings = new AppSettings();
            var viewModel   = new CurrentPositionDetailsViewModel(appSettings);

            // run
            var location = new Xamarin.Essentials.Location(48.137222, 11.575556);

            viewModel.OnPositionChanged(
                this,
                new Core.GeolocationEventArgs(location));

            // check
            Assert.AreEqual(string.Empty, viewModel.Altitude, "accessing altitude must not crash");
            Assert.AreEqual(string.Empty, viewModel.Accuracy, "accessing accuracy must not crash");
            Assert.AreEqual(0, viewModel.HeadingInDegrees, "accessing heading must not crash");
        }
        public void TestCtor()
        {
            // set up
            var appSettings = new AppSettings();
            var viewModel   = new CurrentPositionDetailsViewModel(appSettings);

            // check
            Assert.AreEqual(string.Empty, viewModel.Longitude, "longitude text must be correct");
            Assert.AreEqual(string.Empty, viewModel.Latitude, "latitude text must be correct");
            Assert.AreEqual(string.Empty, viewModel.Altitude, "altitude text must be correct");
            Assert.AreEqual(string.Empty, viewModel.Accuracy, "accuracy text must be correct");
            Assert.AreEqual(Color.Black, viewModel.PositionAccuracyColor, "accuracy color must be black");
            Assert.AreEqual("Unknown", viewModel.LastPositionFix, "last position fix text must be correct");
            Assert.AreEqual(0, viewModel.SpeedInKmh, "speed value must be correct");
            Assert.IsFalse(viewModel.IsHeadingAvail, "initially heading is not available");
            Assert.AreEqual(0, viewModel.HeadingInDegrees, "heading value must be correct");
            Assert.IsFalse(viewModel.IsSunriseSunsetAvail, "sunrise/sunset must not be available");
            Assert.AreEqual("N/A", viewModel.SunriseTime, "sunrise time text must be correct");
            Assert.AreEqual("N/A", viewModel.SunsetTime, "sunset time text must be correct");
        }
        public void TestLocationUpdate()
        {
            // set up
            var appSettings = new AppSettings
            {
                CoordinateDisplayFormat = CoordinateDisplayFormat.Format_dd_mm_sss
            };

            var viewModel = new CurrentPositionDetailsViewModel(appSettings);

            // run
            var location = new Xamarin.Essentials.Location(48.137222, 11.575556, 512)
            {
                AltitudeReferenceSystem = Xamarin.Essentials.AltitudeReferenceSystem.Geoid,
                Accuracy           = 42,
                Course             = 64.2,
                Speed              = 4.1,
                Timestamp          = new DateTimeOffset(2022, 4, 19, 7, 44, 0, TimeSpan.FromHours(2)),
                IsFromMockProvider = true,
            };

            viewModel.OnPositionChanged(
                this,
                new Core.GeolocationEventArgs(location));

            // check
            Assert.AreEqual("11° 34' 32\"", viewModel.Longitude, "longitude text must be correct");
            Assert.AreEqual("48° 8' 13\"", viewModel.Latitude, "latitude text must be correct");
            Assert.AreEqual("512", viewModel.Altitude, "altitude text must be correct");
            Assert.AreEqual("42", viewModel.Accuracy, "accuracy text must be correct");
            Assert.AreEqual(Color.FromHex("#E0E000"), viewModel.PositionAccuracyColor, "accuracy color must be black");
            Assert.IsTrue(viewModel.LastPositionFix.Length > 0, "last position fix text must contain text");
            Assert.AreEqual(14, viewModel.SpeedInKmh, "speed value must be correct");
            Assert.IsTrue(viewModel.IsHeadingAvail, "initially heading is not available");
            Assert.AreEqual(64, viewModel.HeadingInDegrees, "heading value must be correct");
            Assert.IsTrue(viewModel.IsSunriseSunsetAvail, "sunrise/sunset must not be available");
            Assert.AreEqual("6:09:21", viewModel.SunriseTime, "sunrise time text must be correct");
            Assert.AreEqual("20:17:45", viewModel.SunsetTime, "sunset time text must be correct");
        }