summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests/DistanceTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/DistanceTests.cs')
-rw-r--r--Xamarin.Forms.Core.UnitTests/DistanceTests.cs197
1 files changed, 197 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/DistanceTests.cs b/Xamarin.Forms.Core.UnitTests/DistanceTests.cs
new file mode 100644
index 00000000..829bf957
--- /dev/null
+++ b/Xamarin.Forms.Core.UnitTests/DistanceTests.cs
@@ -0,0 +1,197 @@
+using System;
+using NUnit.Framework;
+using Xamarin.Forms.Maps;
+
+
+namespace Xamarin.Forms.Core.UnitTests
+{
+ [TestFixture]
+ public class DistanceTests : BaseTestFixture
+ {
+ [Test]
+ public void Constructor ()
+ {
+ var distance = new Distance (25);
+ Assert.AreEqual (25, distance.Meters);
+ }
+
+ [Test]
+ public void ConstructFromKilometers()
+ {
+ const double EPSILON = 0.001;
+
+ Distance distance = Distance.FromKilometers(2);
+
+ Assert.True(Math.Abs(distance.Kilometers - 2) < EPSILON);
+ Assert.True(Math.Abs(distance.Meters - 2000) < EPSILON);
+ Assert.True(Math.Abs(distance.Miles - 1.24274) < EPSILON);
+ }
+
+ [Test]
+ public void ConstructFromMeters()
+ {
+ const double EPSILON = 0.001;
+
+ Distance distance = Distance.FromMeters(10560);
+
+ Assert.True(Math.Abs(distance.Meters - 10560) < EPSILON);
+ Assert.True(Math.Abs(distance.Miles - 6.5616798) < EPSILON);
+ Assert.True(Math.Abs(distance.Kilometers - 10.56) < EPSILON);
+ }
+
+ [Test]
+ public void ConstructFromMiles()
+ {
+ const double EPSILON = 0.001;
+
+ // Reached the limit of double precision using the number
+ // of miles of the earth's circumference
+ const double EPSILON_FOR_LARGE_MILES_TO_METERS = 16;
+
+ // Reached the limit of double precision
+ const double EPSILON_FOR_LARGE_MILES_TO_KM = 0.1;
+
+ Distance distance = Distance.FromMiles(3963.1676);
+
+ Assert.True(Math.Abs(distance.Miles - 3963.1676) < EPSILON);
+ Assert.True(Math.Abs(distance.Meters - 6378099.99805) < EPSILON_FOR_LARGE_MILES_TO_METERS);
+ Assert.True(Math.Abs(distance.Kilometers - 6378.09999805) < EPSILON_FOR_LARGE_MILES_TO_KM);
+ }
+
+ [Test]
+ public void EqualityOp([Range(5, 9)] double x, [Range(5, 9)] double y)
+ {
+ bool result = Distance.FromMeters(x) == Distance.FromMeters(y);
+
+ if (x == y)
+ Assert.True(result);
+ else
+ Assert.False(result);
+ }
+
+ [Test]
+ public void Equals([Range(3, 7)] double x, [Range(3, 7)] double y)
+ {
+ bool result = Distance.FromMiles(x).Equals(Distance.FromMiles(y));
+ if (x == y)
+ Assert.True(result);
+ else
+ Assert.False(result);
+ }
+
+ [Test]
+ public void EqualsNull()
+ {
+ Assert.False(Distance.FromMeters(5).Equals(null));
+ }
+
+ [Test]
+ public void GettingAndSettingKilometers()
+ {
+ const double EPSILON = 0.001;
+
+ Distance distance = Distance.FromKilometers(1891);
+ Assert.True(Math.Abs(distance.Kilometers - 1891) < EPSILON);
+ }
+
+ [Test]
+ public void GettingAndSettingMeters()
+ {
+ const double EPSILON = 0.001;
+
+ Distance distance = Distance.FromMeters(123434);
+ Assert.True(Math.Abs(distance.Meters - 123434) < EPSILON);
+ }
+
+ [Test]
+ public void GettingAndSettingMiles()
+ {
+ const double EPSILON = 0.001;
+
+ Distance distance = Distance.FromMiles(515);
+ Assert.True(Math.Abs(distance.Miles - 515) < EPSILON);
+ }
+
+ [Test]
+ public void HashCode([Range(4, 5)] double x, [Range(4, 5)] double y)
+ {
+ Distance distance1 = Distance.FromMiles(x);
+ Distance distance2 = Distance.FromMiles(y);
+
+ bool result = distance1.GetHashCode() == distance2.GetHashCode();
+
+ if (x == y)
+ Assert.True(result);
+ else
+ Assert.False(result);
+ }
+
+ [Test]
+ public void InequalityOp([Range(5, 9)] double x, [Range(5, 9)] double y)
+ {
+ bool result = Distance.FromMeters(x) != Distance.FromMeters(y);
+
+ if (x != y)
+ Assert.True(result);
+ else
+ Assert.False(result);
+ }
+
+ [Test]
+ public void ObjectInitializerKilometers()
+ {
+ const double EPSILON = 0.001;
+
+ Distance distance = Distance.FromKilometers(10);
+ Assert.True(Math.Abs(distance.Meters - 10000) < EPSILON);
+ }
+
+ [Test]
+ public void ObjectInitializerMeters()
+ {
+ const double EPSILON = 0.001;
+
+ Distance distance = Distance.FromMeters(1057);
+ Assert.True(Math.Abs(distance.Kilometers - 1.057) < EPSILON);
+ }
+
+ [Test]
+ public void ObjectInitializerMiles()
+ {
+ const double EPSILON = 0.001;
+
+ Distance distance = Distance.FromMiles(100);
+ Assert.True(Math.Abs(distance.Meters - 160934.4) < EPSILON);
+ }
+
+ [Test]
+ public void ClampFromMeters ()
+ {
+ var distance = Distance.FromMeters (-1);
+
+ Assert.AreEqual (0, distance.Meters);
+ }
+
+ [Test]
+ public void ClampFromMiles ()
+ {
+ var distance = Distance.FromMiles (-1);
+
+ Assert.AreEqual (0, distance.Meters);
+ }
+
+ [Test]
+ public void ClampFromKilometers ()
+ {
+ var distance = Distance.FromKilometers (-1);
+
+ Assert.AreEqual (0, distance.Meters);
+ }
+
+ [Test]
+ public void Equals ()
+ {
+ Assert.True (Distance.FromMiles (2).Equals ((object) Distance.FromMiles (2)));
+ }
+ }
+}