public void Vincenty_CorrectlyCalculatesGreatCircleDistanceConcurrently(double latA, double lonA, double latB, double lonB, double distanceinMeters, int maxIterations, double tolerance) { IGeographicCoordinate pointA = new GeographicCoordinate(latA, lonA); IGeographicCoordinate pointB = new GeographicCoordinate(latB, lonB); IDistance expected = new Distance(distanceinMeters, DistanceMeasurement.Meters); var distances = new ConcurrentQueue <IDistance>() { }; void action() => distances.Enqueue(pointA.GreatCircleDistanceTo(pointB, maxIterations, tolerance)); Action[] actions = Enumerable.Repeat((Action)action, 10).ToArray(); Parallel.Invoke(actions); while (distances.Count > 0) { IDistance result; distances.TryPeek(out result); Assert.Equal(expected, result); distances.TryDequeue(out result); } }
public void Vincenty_CorrectlyCalculatesGreatCircleDistance(double latA, double lonA, double latB, double lonB, double distanceinMeters, int maxIterations, double tolerance) { IGeographicCoordinate pointA = new GeographicCoordinate(latA, lonA); IGeographicCoordinate pointB = new GeographicCoordinate(latB, lonB); IDistance expected = new Distance(distanceinMeters, DistanceMeasurement.Meters); IDistance result = pointA.GreatCircleDistanceTo(pointB, maxIterations, tolerance); Assert.Equal(expected, result); }