public void TransformToCoordinate_ShouldReturnFirstResult_WhenUsingFirstSuccessCompositeAdapter() { CrsTransformationAdapterComposite firstSuccessCompositeAdapter = crsTransformationAdapterCompositeFactory.CreateCrsTransformationFirstSuccess(allLeafAdapters); CrsCoordinate resultCoordinate = firstSuccessCompositeAdapter.TransformToCoordinate(inputCoordinateSweref99, EpsgNumber.WORLD__WGS_84__4326); Assert.IsNotNull(resultCoordinate); // The assumption below (according to the setup code in the "before" method in this JUnit class) // is that the first adapter in the above list allLeafAdapters will return the result outputCoordinateWgs84ForImplementation_1 Assert.AreEqual( outputCoordinateWgs84ForImplementation_1.YNorthingLatitude, resultCoordinate.YNorthingLatitude, SMALL_DELTA_VALUE_FOR_COMPARISONS ); Assert.AreEqual( outputCoordinateWgs84ForImplementation_1.XEastingLongitude, resultCoordinate.XEastingLongitude, SMALL_DELTA_VALUE_FOR_COMPARISONS ); AssertCompositeResultHasLeafSubResults( firstSuccessCompositeAdapter, 1 // expectedNumberOfLeafResults ); }
public void TransformToCoordinate_ShouldReturnWeightedAverageResult_WhenUsingWeightedAverageCompositeAdapter() { double[] weights = { 1, 2, 4, 5, 9 }; double totWeights = 0; double totLats = 0; double totLons = 0; for (int i = 0; i < weights.Length; i++) { double weight = weights[i]; totWeights += weight; CrsCoordinate coordinate = outputCoordinates[i]; totLats += weight * coordinate.YNorthingLatitude; totLons += weight * coordinate.XEastingLongitude; } double weightedLat = totLats / totWeights; double weightedLon = totLons / totWeights; CrsCoordinate expectedWeightedAverage = CrsCoordinateFactory.CreateFromLatitudeLongitude(weightedLat, weightedLon); List <CrsTransformationAdapterWeight> weightedAdapters = new List <CrsTransformationAdapterWeight> { weightFactory.CreateFromInstance(leafAdapterImplementation_1, weights[0]), weightFactory.CreateFromInstance(leafAdapterImplementation_2, weights[1]), weightFactory.CreateFromInstance(leafAdapterImplementation_3, weights[2]), weightFactory.CreateFromInstance(leafAdapterImplementation_4, weights[3]), weightFactory.CreateFromInstance(leafAdapterImplementation_5, weights[4]) }; CrsTransformationAdapterComposite weightedAverageCompositeAdapter = crsTransformationAdapterCompositeFactory.CreateCrsTransformationWeightedAverage(weightedAdapters); CrsCoordinate result = weightedAverageCompositeAdapter.TransformToCoordinate(inputCoordinateSweref99, EpsgNumber.WORLD__WGS_84__4326); Assert.IsNotNull(result); Assert.AreEqual(expectedWeightedAverage.YNorthingLatitude, result.YNorthingLatitude, SMALL_DELTA_VALUE_FOR_COMPARISONS); Assert.AreEqual(expectedWeightedAverage.XEastingLongitude, result.XEastingLongitude, SMALL_DELTA_VALUE_FOR_COMPARISONS); AssertCompositeResultHasLeafSubResults( weightedAverageCompositeAdapter, allLeafAdapters.Count ); }
public void TransformToCoordinate_ShouldReturnMedianResult_WhenUsingMedianCompositeAdapter() { CrsTransformationAdapterComposite medianCompositeAdapter = crsTransformationAdapterCompositeFactory.CreateCrsTransformationMedian(allLeafAdapters); CrsCoordinate resultCoordinate = medianCompositeAdapter.TransformToCoordinate(inputCoordinateSweref99, EpsgNumber.WORLD__WGS_84__4326); Assert.IsNotNull(resultCoordinate); Assert.AreEqual( expectedMedianLatitude, resultCoordinate.YNorthingLatitude, SMALL_DELTA_VALUE_FOR_COMPARISONS ); Assert.AreEqual( expectedMedianLongitude, resultCoordinate.XEastingLongitude, SMALL_DELTA_VALUE_FOR_COMPARISONS ); AssertCompositeResultHasLeafSubResults( medianCompositeAdapter, allLeafAdapters.Count // expectedNumberOfLeafResults ); }