Skip to content
This repository has been archived by the owner on May 15, 2024. It is now read-only.

Add all possible combinations for coords to km or mile #721

Merged
merged 6 commits into from
Mar 1, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions Tests/UnitConverters_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,41 @@ public void KilometersToMiles(double km, double miles)
[InlineData(42.93708, -75.6107, -33.92528, 18.42389, 12789.5628)] // new york -> cape town
[InlineData(45.80721, 15.96757, 19.432608, -99.133209, 10264.4796)] // zagreb -> mexico city
[InlineData(43.623409, -79.368683, 42.35866, -71.05674, 690.2032)] // toronto -> boston, ma
[InlineData(37.720134, -122.182552, 37.720266, -122.181969, .0533)]
public void CoordinatesToKilometers(double lat1, double lon1, double lat2, double lon2, double distance)
{
Assert.Equal(distance, UnitConverters.CoordinatesToKilometers(lat1, lon1, lat2, lon2), 4);
var location1 = new Location(lat1, lon1);
var location2 = new Location(lat2, lon2);
Assert.Equal(distance, Location.CalculateDistance(location1, location2, DistanceUnits.Kilometers), 4);
Assert.Equal(distance, Location.CalculateDistance(location2, location1, DistanceUnits.Kilometers), 4);
Assert.Equal(distance, location1.CalculateDistance(location2, DistanceUnits.Kilometers), 4);
Assert.Equal(distance, location2.CalculateDistance(location1, DistanceUnits.Kilometers), 4);
Assert.Equal(distance, LocationExtensions.CalculateDistance(location1, location2, DistanceUnits.Kilometers), 4);
Assert.Equal(distance, LocationExtensions.CalculateDistance(location2, location1, DistanceUnits.Kilometers), 4);
}

[Theory]
[InlineData(55.85781, -4.24253, 51.509865, -0.118092, 554.3128)] // glasgow -> london
[InlineData(36.12, -86.67, 33.94, -118.40, 2886.4444)] // nashville, tn -> los angeles, ca
[InlineData(51.509865, -0.118092, -33.92528, 18.42389, 9671.1251)] // london -> cape town
[InlineData(51.509865, -0.118092, 40.42028, -3.70577, 1263.4938)] // london -> madrid
[InlineData(42.93708, -75.6107, -33.92528, 18.42389, 12789.5628)] // new york -> cape town
[InlineData(45.80721, 15.96757, 19.432608, -99.133209, 10264.4796)] // zagreb -> mexico city
[InlineData(43.623409, -79.368683, 42.35866, -71.05674, 690.2032)] // toronto -> boston, ma
[InlineData(37.720134, -122.182552, 37.720266, -122.181969, .0533)]
public void CoordinatesToMiles(double lat1, double lon1, double lat2, double lon2, double distance)
{
distance = UnitConverters.KilometersToMiles(distance);
Assert.Equal(distance, UnitConverters.CoordinatesToMiles(lat1, lon1, lat2, lon2), 3);
var location1 = new Location(lat1, lon1);
var location2 = new Location(lat2, lon2);
Assert.Equal(distance, Location.CalculateDistance(location1, location2, DistanceUnits.Miles), 3);
Assert.Equal(distance, Location.CalculateDistance(location2, location1, DistanceUnits.Miles), 3);
Assert.Equal(distance, location1.CalculateDistance(location2, DistanceUnits.Miles), 3);
Assert.Equal(distance, location2.CalculateDistance(location1, DistanceUnits.Miles), 3);
Assert.Equal(distance, LocationExtensions.CalculateDistance(location1, location2, DistanceUnits.Miles), 3);
Assert.Equal(distance, LocationExtensions.CalculateDistance(location2, location1, DistanceUnits.Miles), 3);
}
}
}
95 changes: 66 additions & 29 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,10 @@ resources:

jobs:

- job: build
displayName: Build
strategy:
matrix:
Windows:
vmImage: vs2017-win2016
SolutionName: Xamarin.Essentials.sln
WindowsLibrary:
vmImage: vs2017-win2016
SolutionName: Xamarin.Essentials/Xamarin.Essentials.csproj
MacLibrary:
vmImage: macos-10.13
SolutionName: Xamarin.Essentials/Xamarin.Essentials.csproj
- job: build_windows
displayName: Build Windows Library
pool:
vmImage: $(vmImage)
vmImage: vs2017-win2016
steps:
# if this is a tagged build, then update the version number
- powershell: |
Expand All @@ -39,17 +28,11 @@ jobs:
Write-Host ("##vso[task.setvariable variable=NugetPackageVersion;]$tagVersion")
displayName: Set NuGet Version to Tag Number
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/')
# make sure to select the correct Xamarin and mono for macOS
- ${{ if eq(variables['vmImage'], 'macos-10.13') }}:
- bash: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh $(MONO_VERSION)
displayName: Switch to the latest Xamarin SDK
- bash: echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_$(XCODE_VERSION).app;sudo xcode-select --switch /Applications/Xcode_$(XCODE_VERSION).app/Contents/Developer
displayName: Switch to the latest Xcode
# restore, build and pack the packages
- task: MSBuild@1
displayName: Build Solution
inputs:
solution: $(SolutionName)
solution: Xamarin.Essentials/Xamarin.Essentials.csproj
configuration: Release
msbuildArguments: '/restore /t:Build /p:ContinuousIntegrationBuild=true /p:Deterministic=false'
- task: MSBuild@1
Expand All @@ -58,13 +41,67 @@ jobs:
solution: Xamarin.Essentials/Xamarin.Essentials.csproj
configuration: Release
msbuildArguments: '/t:Pack /p:PackageVersion=$(NugetPackageVersion) /p:PackageOutputPath="$(Build.ArtifactStagingDirectory)/nuget"'
# only publish the packages on Windows when building the library
- ${{ if eq(variables['Agent.JobName'], 'WindowsLibrary') }}:
- task: PublishBuildArtifacts@1
displayName: 'Publish Unsigned NuGets'
inputs:
artifactName: nuget
pathToPublish: '$(Build.ArtifactStagingDirectory)/nuget'
# publish the packages
- task: PublishBuildArtifacts@1
displayName: 'Publish Unsigned NuGets'
inputs:
artifactName: nuget
pathToPublish: '$(Build.ArtifactStagingDirectory)/nuget'
# make sure we are following the rules
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: Component Detection
inputs:
scanType: LogOnly

- job: build_macos
displayName: Build macOS Library
pool:
vmImage: macos-10.13
steps:
# if this is a tagged build, then update the version number
- powershell: |
$buildSourceBranch = "$(Build.SourceBranch)"
$tagVersion = $buildSourceBranch.Substring($buildSourceBranch.LastIndexOf("/") + 1)
Write-Host("Branch = $buildSourceBranch, Version = $tagVersion");
Write-Host ("##vso[task.setvariable variable=NugetPackageVersion;]$tagVersion")
displayName: Set NuGet Version to Tag Number
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/')
# make sure to select the correct Xamarin and mono
- bash: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh $(MONO_VERSION)
displayName: Switch to the latest Xamarin SDK
- bash: echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_$(XCODE_VERSION).app;sudo xcode-select --switch /Applications/Xcode_$(XCODE_VERSION).app/Contents/Developer
displayName: Switch to the latest Xcode
# restore, build and pack the packages
- task: MSBuild@1
displayName: Build Solution
inputs:
solution: Xamarin.Essentials/Xamarin.Essentials.csproj
configuration: Release
msbuildArguments: '/restore /t:Build /p:ContinuousIntegrationBuild=true /p:Deterministic=false'
- task: MSBuild@1
displayName: Pack NuGets
inputs:
solution: Xamarin.Essentials/Xamarin.Essentials.csproj
configuration: Release
msbuildArguments: '/t:Pack /p:PackageVersion=$(NugetPackageVersion) /p:PackageOutputPath="$(Build.ArtifactStagingDirectory)/nuget"'
# make sure we are following the rules
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: Component Detection
inputs:
scanType: LogOnly

- job: build_samples
displayName: Build Samples
pool:
vmImage: vs2017-win2016
steps:
# restore, build and pack the packages
- task: MSBuild@1
displayName: Build Solution
inputs:
solution: Xamarin.Essentials.sln
configuration: Release
msbuildArguments: '/restore /t:Build /p:ContinuousIntegrationBuild=true /p:Deterministic=false'
# make sure we are following the rules
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: Component Detection
Expand All @@ -75,7 +112,7 @@ jobs:
- ${{ if eq(variables['System.TeamProject'], 'devdiv') }}:
- job: signing
displayName: Signing NuGets
dependsOn: build
dependsOn: build_windows
pool:
name: VSEng-XamarinCustom
demands:
Expand Down