Skip to content

Commit

Permalink
Add Weight conversion functionality (#983)
Browse files Browse the repository at this point in the history
* Add Weight conversion functionality similar to the distance and other Unit Conversion methods
Add Unit Tests for these new conversions

* Delete Resource.designer.cs

* Add reference docs for unit converters.
  • Loading branch information
munkii authored and jamesmontemagno committed Nov 15, 2019
1 parent bedfe18 commit c629fa5
Show file tree
Hide file tree
Showing 10 changed files with 177 additions and 1 deletion.
48 changes: 48 additions & 0 deletions Tests/UnitConverters_Tests.cs
Expand Up @@ -122,6 +122,54 @@ public void KilometersToMiles(double km, double miles)
Assert.Equal(miles, UnitConverters.KilometersToMiles(km), 4);
}

[Theory]
[InlineData(115, 52.1631)]
[InlineData(65.9, 29.8917)]
[InlineData(180, 81.6466)]
[InlineData(8, 3.6287)]
[InlineData(331.1, 150.1844)]
[InlineData(0, 0)]
public void PoundsToKilograms(double pounds, double kg)
{
Assert.Equal(kg, UnitConverters.PoundsToKilograms(pounds), 4);
}

[Theory]
[InlineData(115, 8.2143)]
[InlineData(65.9, 4.7071)]
[InlineData(180, 12.8571)]
[InlineData(8, 0.5714)]
[InlineData(184.8, 13.2)]
[InlineData(0, 0)]
public void PoundsToStones(double pounds, double stones)
{
Assert.Equal(stones, UnitConverters.PoundsToStones(pounds), 4);
}

[Theory]
[InlineData(14, 196)]
[InlineData(10.8, 151.2)]
[InlineData(22.8, 319.2)]
[InlineData(5, 70)]
[InlineData(16.85, 235.9)]
[InlineData(0, 0)]
public void StonesToPounds(double stones, double pounds)
{
Assert.Equal(pounds, UnitConverters.StonesToPounds(stones), 4);
}

[Theory]
[InlineData(79.2, 174.6061)]
[InlineData(94.6, 208.5573)]
[InlineData(67.0, 147.7097)]
[InlineData(57, 125.6635)]
[InlineData(82.85, 182.6530)]
[InlineData(0, 0)]
public void KilogramsToPounds(double kg, double pounds)
{
Assert.Equal(pounds, UnitConverters.KilogramsToPounds(kg), 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
Expand Down
16 changes: 16 additions & 0 deletions Xamarin.Essentials/Types/UnitConverters.shared.cs
Expand Up @@ -12,6 +12,10 @@ public static class UnitConverters
const double milesToMeters = 1609.344;
const double kilometersToMiles = 1.0 / milesToKilometers;
const double celsiusToKelvin = 273.15;
const double poundsToKg = 0.45359237;
const double poundsToStones = 0.07142857;
const double stonesToPounds = 14;
const double kgToPounds = 2.204623;

const double meanEarthRadiusInKilometers = 6371.0;

Expand Down Expand Up @@ -45,6 +49,18 @@ public static class UnitConverters
public static double RadiansToDegrees(double radians) =>
radians / degreesToRadians;

public static double PoundsToKilograms(double pounds) =>
pounds * poundsToKg;

public static double PoundsToStones(double pounds) =>
pounds * poundsToStones;

public static double StonesToPounds(double stones) =>
stones * stonesToPounds;

public static double KilogramsToPounds(double kilograms) =>
kilograms * kgToPounds;

public static double DegreesPerSecondToRadiansPerSecond(double degrees) =>
HertzToRadiansPerSecond(DegreesPerSecondToHertz(degrees));

Expand Down
2 changes: 1 addition & 1 deletion Xamarin.Essentials/mdoc.targets
Expand Up @@ -98,7 +98,7 @@
<MakeDir Directories="$(TmpDir)" />
<Copy SourceFiles="$(MDocDocumentationDirectory)\..\frameworks.xml" DestinationFolder="$(TmpDir)" />
<Copy SourceFiles="$(BinConfigDir)netstandard2.0\$(AssemblyName).dll" DestinationFolder="$(TmpDir)xamarin-essentials" />
<Copy SourceFiles="$(BinConfigDir)monoandroid90\$(AssemblyName).dll" DestinationFolder="$(TmpDir)xamarin-essentials-android" />
<Copy SourceFiles="$(BinConfigDir)monoandroid90\90\$(AssemblyName).dll" DestinationFolder="$(TmpDir)xamarin-essentials-android" />
<Copy SourceFiles="$(BinConfigDir)xamarin.ios10\$(AssemblyName).dll" DestinationFolder="$(TmpDir)xamarin-essentials-ios" />
<Copy SourceFiles="$(BinConfigDir)xamarin.tvos10\$(AssemblyName).dll" DestinationFolder="$(TmpDir)xamarin-essentials-tvos" />
<Copy SourceFiles="$(BinConfigDir)xamarin.watchos10\$(AssemblyName).dll" DestinationFolder="$(TmpDir)xamarin-essentials-watchos" />
Expand Down
4 changes: 4 additions & 0 deletions docs/en/FrameworksIndex/xamarin-essentials-android.xml
Expand Up @@ -667,6 +667,7 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.HertzToRadiansPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.InternationalFeetToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KelvinToCelsius(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilogramsToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilometersToMiles(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToHectopascals(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToPascals(System.Double)" />
Expand All @@ -675,9 +676,12 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToKilometers(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PascalsToAtmospheres(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToKilograms(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToStones(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToDegreesPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToHertz(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansToDegrees(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.StonesToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.USSurveyFeetToMeters(System.Double)" />
</Type>
<Type Name="Xamarin.Essentials.VersionTracking" Id="T:Xamarin.Essentials.VersionTracking">
Expand Down
4 changes: 4 additions & 0 deletions docs/en/FrameworksIndex/xamarin-essentials-ios.xml
Expand Up @@ -657,6 +657,7 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.HertzToRadiansPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.InternationalFeetToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KelvinToCelsius(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilogramsToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilometersToMiles(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToHectopascals(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToPascals(System.Double)" />
Expand All @@ -665,9 +666,12 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToKilometers(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PascalsToAtmospheres(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToKilograms(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToStones(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToDegreesPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToHertz(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansToDegrees(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.StonesToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.USSurveyFeetToMeters(System.Double)" />
</Type>
<Type Name="Xamarin.Essentials.VersionTracking" Id="T:Xamarin.Essentials.VersionTracking">
Expand Down
4 changes: 4 additions & 0 deletions docs/en/FrameworksIndex/xamarin-essentials-tvos.xml
Expand Up @@ -652,6 +652,7 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.HertzToRadiansPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.InternationalFeetToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KelvinToCelsius(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilogramsToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilometersToMiles(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToHectopascals(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToPascals(System.Double)" />
Expand All @@ -660,9 +661,12 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToKilometers(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PascalsToAtmospheres(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToKilograms(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToStones(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToDegreesPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToHertz(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansToDegrees(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.StonesToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.USSurveyFeetToMeters(System.Double)" />
</Type>
<Type Name="Xamarin.Essentials.VersionTracking" Id="T:Xamarin.Essentials.VersionTracking">
Expand Down
4 changes: 4 additions & 0 deletions docs/en/FrameworksIndex/xamarin-essentials-uwp.xml
Expand Up @@ -656,6 +656,7 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.HertzToRadiansPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.InternationalFeetToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KelvinToCelsius(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilogramsToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilometersToMiles(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToHectopascals(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToPascals(System.Double)" />
Expand All @@ -664,9 +665,12 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToKilometers(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PascalsToAtmospheres(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToKilograms(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToStones(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToDegreesPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToHertz(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansToDegrees(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.StonesToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.USSurveyFeetToMeters(System.Double)" />
</Type>
<Type Name="Xamarin.Essentials.VersionTracking" Id="T:Xamarin.Essentials.VersionTracking">
Expand Down
4 changes: 4 additions & 0 deletions docs/en/FrameworksIndex/xamarin-essentials-watchos.xml
Expand Up @@ -652,6 +652,7 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.HertzToRadiansPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.InternationalFeetToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KelvinToCelsius(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilogramsToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilometersToMiles(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToHectopascals(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToPascals(System.Double)" />
Expand All @@ -660,9 +661,12 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToKilometers(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PascalsToAtmospheres(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToKilograms(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToStones(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToDegreesPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToHertz(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansToDegrees(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.StonesToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.USSurveyFeetToMeters(System.Double)" />
</Type>
<Type Name="Xamarin.Essentials.VersionTracking" Id="T:Xamarin.Essentials.VersionTracking">
Expand Down
4 changes: 4 additions & 0 deletions docs/en/FrameworksIndex/xamarin-essentials.xml
Expand Up @@ -640,6 +640,7 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.HertzToRadiansPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.InternationalFeetToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KelvinToCelsius(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilogramsToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilometersToMiles(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToHectopascals(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.KilopascalsToPascals(System.Double)" />
Expand All @@ -648,9 +649,12 @@
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToKilometers(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.MilesToMeters(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PascalsToAtmospheres(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToKilograms(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.PoundsToStones(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToDegreesPerSecond(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansPerSecondToHertz(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.RadiansToDegrees(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.StonesToPounds(System.Double)" />
<Member Id="M:Xamarin.Essentials.UnitConverters.USSurveyFeetToMeters(System.Double)" />
</Type>
<Type Name="Xamarin.Essentials.VersionTracking" Id="T:Xamarin.Essentials.VersionTracking">
Expand Down
88 changes: 88 additions & 0 deletions docs/en/Xamarin.Essentials/UnitConverters.xml
Expand Up @@ -357,6 +357,28 @@
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="KilogramsToPounds">
<MemberSignature Language="C#" Value="public static double KilogramsToPounds (double kilograms);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 KilogramsToPounds(float64 kilograms) cil managed" />
<MemberSignature Language="DocId" Value="M:Xamarin.Essentials.UnitConverters.KilogramsToPounds(System.Double)" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>Xamarin.Essentials</AssemblyName>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Double</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="kilograms" Type="System.Double" />
</Parameters>
<Docs>
<param name="kilograms">To be added.</param>
<summary>To be added.</summary>
<returns>To be added.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="KilometersToMiles">
<MemberSignature Language="C#" Value="public static double KilometersToMiles (double kilometers);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 KilometersToMiles(float64 kilometers) cil managed" />
Expand Down Expand Up @@ -533,6 +555,50 @@
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="PoundsToKilograms">
<MemberSignature Language="C#" Value="public static double PoundsToKilograms (double pounds);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 PoundsToKilograms(float64 pounds) cil managed" />
<MemberSignature Language="DocId" Value="M:Xamarin.Essentials.UnitConverters.PoundsToKilograms(System.Double)" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>Xamarin.Essentials</AssemblyName>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Double</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="pounds" Type="System.Double" />
</Parameters>
<Docs>
<param name="pounds">To be added.</param>
<summary>To be added.</summary>
<returns>To be added.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="PoundsToStones">
<MemberSignature Language="C#" Value="public static double PoundsToStones (double pounds);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 PoundsToStones(float64 pounds) cil managed" />
<MemberSignature Language="DocId" Value="M:Xamarin.Essentials.UnitConverters.PoundsToStones(System.Double)" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>Xamarin.Essentials</AssemblyName>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Double</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="pounds" Type="System.Double" />
</Parameters>
<Docs>
<param name="pounds">To be added.</param>
<summary>To be added.</summary>
<returns>To be added.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="RadiansPerSecondToDegreesPerSecond">
<MemberSignature Language="C#" Value="public static double RadiansPerSecondToDegreesPerSecond (double radians);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 RadiansPerSecondToDegreesPerSecond(float64 radians) cil managed" />
Expand Down Expand Up @@ -599,6 +665,28 @@
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="StonesToPounds">
<MemberSignature Language="C#" Value="public static double StonesToPounds (double stones);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 StonesToPounds(float64 stones) cil managed" />
<MemberSignature Language="DocId" Value="M:Xamarin.Essentials.UnitConverters.StonesToPounds(System.Double)" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>Xamarin.Essentials</AssemblyName>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Double</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="stones" Type="System.Double" />
</Parameters>
<Docs>
<param name="stones">To be added.</param>
<summary>To be added.</summary>
<returns>To be added.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="USSurveyFeetToMeters">
<MemberSignature Language="C#" Value="public static double USSurveyFeetToMeters (double usFeet);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 USSurveyFeetToMeters(float64 usFeet) cil managed" />
Expand Down

0 comments on commit c629fa5

Please sign in to comment.