diff --git a/Common/UnitDefinitions/Length.json b/Common/UnitDefinitions/Length.json index e4606a04c0..ff6ace50bd 100644 --- a/Common/UnitDefinitions/Length.json +++ b/Common/UnitDefinitions/Length.json @@ -279,6 +279,21 @@ "Abbreviations": [ "twip" ] } ] + }, + { + "SingularName": "Hand", + "PluralName": "Hands", + "BaseUnits": { + "L": "Hand" + }, + "FromUnitToBaseFunc": "x * 1.016e-1", + "FromBaseToUnitFunc": "x / 1.016e-1", + "Localization": [ + { + "Culture": "en-US", + "Abbreviations": [ "h", "hh" ] + } + ] } ] } diff --git a/UnitsNet.Tests/CustomCode/LengthTests.cs b/UnitsNet.Tests/CustomCode/LengthTests.cs index 123e00ca3c..545d4a14e7 100644 --- a/UnitsNet.Tests/CustomCode/LengthTests.cs +++ b/UnitsNet.Tests/CustomCode/LengthTests.cs @@ -53,7 +53,9 @@ public class LengthTests : LengthTestsBase protected override double NauticalMilesInOneMeter => 1.0/1852.0; - [Fact] + protected override double HandsInOneMeter => 9.8425196850393701; + + [ Fact] public void AreaTimesLengthEqualsVolume() { Volume volume = Area.FromSquareMeters(10)*Length.FromMeters(3); diff --git a/UnitsNet.Tests/GeneratedCode/LengthTestsBase.g.cs b/UnitsNet.Tests/GeneratedCode/LengthTestsBase.g.cs index f70c6816e0..1230de4251 100644 --- a/UnitsNet.Tests/GeneratedCode/LengthTestsBase.g.cs +++ b/UnitsNet.Tests/GeneratedCode/LengthTestsBase.g.cs @@ -40,6 +40,7 @@ public abstract partial class LengthTestsBase protected abstract double DtpPointsInOneMeter { get; } protected abstract double FathomsInOneMeter { get; } protected abstract double FeetInOneMeter { get; } + protected abstract double HandsInOneMeter { get; } protected abstract double InchesInOneMeter { get; } protected abstract double KilometersInOneMeter { get; } protected abstract double MetersInOneMeter { get; } @@ -64,6 +65,7 @@ public abstract partial class LengthTestsBase protected virtual double DtpPointsTolerance { get { return 1e-5; } } protected virtual double FathomsTolerance { get { return 1e-5; } } protected virtual double FeetTolerance { get { return 1e-5; } } + protected virtual double HandsTolerance { get { return 1e-5; } } protected virtual double InchesTolerance { get { return 1e-5; } } protected virtual double KilometersTolerance { get { return 1e-5; } } protected virtual double MetersTolerance { get { return 1e-5; } } @@ -111,6 +113,7 @@ public void MeterToLengthUnits() AssertEx.EqualTolerance(DtpPointsInOneMeter, meter.DtpPoints, DtpPointsTolerance); AssertEx.EqualTolerance(FathomsInOneMeter, meter.Fathoms, FathomsTolerance); AssertEx.EqualTolerance(FeetInOneMeter, meter.Feet, FeetTolerance); + AssertEx.EqualTolerance(HandsInOneMeter, meter.Hands, HandsTolerance); AssertEx.EqualTolerance(InchesInOneMeter, meter.Inches, InchesTolerance); AssertEx.EqualTolerance(KilometersInOneMeter, meter.Kilometers, KilometersTolerance); AssertEx.EqualTolerance(MetersInOneMeter, meter.Meters, MetersTolerance); @@ -138,6 +141,7 @@ public void FromValueAndUnit() AssertEx.EqualTolerance(1, Length.From(1, LengthUnit.DtpPoint).DtpPoints, DtpPointsTolerance); AssertEx.EqualTolerance(1, Length.From(1, LengthUnit.Fathom).Fathoms, FathomsTolerance); AssertEx.EqualTolerance(1, Length.From(1, LengthUnit.Foot).Feet, FeetTolerance); + AssertEx.EqualTolerance(1, Length.From(1, LengthUnit.Hand).Hands, HandsTolerance); AssertEx.EqualTolerance(1, Length.From(1, LengthUnit.Inch).Inches, InchesTolerance); AssertEx.EqualTolerance(1, Length.From(1, LengthUnit.Kilometer).Kilometers, KilometersTolerance); AssertEx.EqualTolerance(1, Length.From(1, LengthUnit.Meter).Meters, MetersTolerance); @@ -179,6 +183,7 @@ public void As() AssertEx.EqualTolerance(DtpPointsInOneMeter, meter.As(LengthUnit.DtpPoint), DtpPointsTolerance); AssertEx.EqualTolerance(FathomsInOneMeter, meter.As(LengthUnit.Fathom), FathomsTolerance); AssertEx.EqualTolerance(FeetInOneMeter, meter.As(LengthUnit.Foot), FeetTolerance); + AssertEx.EqualTolerance(HandsInOneMeter, meter.As(LengthUnit.Hand), HandsTolerance); AssertEx.EqualTolerance(InchesInOneMeter, meter.As(LengthUnit.Inch), InchesTolerance); AssertEx.EqualTolerance(KilometersInOneMeter, meter.As(LengthUnit.Kilometer), KilometersTolerance); AssertEx.EqualTolerance(MetersInOneMeter, meter.As(LengthUnit.Meter), MetersTolerance); @@ -226,6 +231,10 @@ public void ToUnit() AssertEx.EqualTolerance(FeetInOneMeter, (double)footQuantity.Value, FeetTolerance); Assert.Equal(LengthUnit.Foot, footQuantity.Unit); + var handQuantity = meter.ToUnit(LengthUnit.Hand); + AssertEx.EqualTolerance(HandsInOneMeter, (double)handQuantity.Value, HandsTolerance); + Assert.Equal(LengthUnit.Hand, handQuantity.Unit); + var inchQuantity = meter.ToUnit(LengthUnit.Inch); AssertEx.EqualTolerance(InchesInOneMeter, (double)inchQuantity.Value, InchesTolerance); Assert.Equal(LengthUnit.Inch, inchQuantity.Unit); @@ -301,6 +310,7 @@ public void ConversionRoundTrip() AssertEx.EqualTolerance(1, Length.FromDtpPoints(meter.DtpPoints).Meters, DtpPointsTolerance); AssertEx.EqualTolerance(1, Length.FromFathoms(meter.Fathoms).Meters, FathomsTolerance); AssertEx.EqualTolerance(1, Length.FromFeet(meter.Feet).Meters, FeetTolerance); + AssertEx.EqualTolerance(1, Length.FromHands(meter.Hands).Meters, HandsTolerance); AssertEx.EqualTolerance(1, Length.FromInches(meter.Inches).Meters, InchesTolerance); AssertEx.EqualTolerance(1, Length.FromKilometers(meter.Kilometers).Meters, KilometersTolerance); AssertEx.EqualTolerance(1, Length.FromMeters(meter.Meters).Meters, MetersTolerance); diff --git a/UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Length.WindowsRuntimeComponent.g.cs b/UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Length.WindowsRuntimeComponent.g.cs index f8b6158b73..f1b58ce33d 100644 --- a/UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Length.WindowsRuntimeComponent.g.cs +++ b/UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Length.WindowsRuntimeComponent.g.cs @@ -185,6 +185,11 @@ private Length(double numericValue, LengthUnit unit) /// public double Feet => As(LengthUnit.Foot); + /// + /// Get Length in Hands. + /// + public double Hands => As(LengthUnit.Hand); + /// /// Get Length in Inches. /// @@ -356,6 +361,16 @@ public static Length FromFeet(double feet) return new Length(value, LengthUnit.Foot); } /// + /// Get Length from Hands. + /// + /// If value is NaN or Infinity. + [Windows.Foundation.Metadata.DefaultOverload] + public static Length FromHands(double hands) + { + double value = (double) hands; + return new Length(value, LengthUnit.Hand); + } + /// /// Get Length from Inches. /// /// If value is NaN or Infinity. @@ -812,6 +827,7 @@ private double AsBaseUnit() case LengthUnit.DtpPoint: return (_value/72)*2.54e-2; case LengthUnit.Fathom: return _value*1.8288; case LengthUnit.Foot: return _value*0.3048; + case LengthUnit.Hand: return _value * 1.016e-1; case LengthUnit.Inch: return _value*2.54e-2; case LengthUnit.Kilometer: return (_value) * 1e3d; case LengthUnit.Meter: return _value; @@ -848,6 +864,7 @@ private double AsBaseNumericType(LengthUnit unit) case LengthUnit.DtpPoint: return (baseUnitValue/2.54e-2)*72; case LengthUnit.Fathom: return baseUnitValue/1.8288; case LengthUnit.Foot: return baseUnitValue/0.3048; + case LengthUnit.Hand: return baseUnitValue / 1.016e-1; case LengthUnit.Inch: return baseUnitValue/2.54e-2; case LengthUnit.Kilometer: return (baseUnitValue) / 1e3d; case LengthUnit.Meter: return baseUnitValue; diff --git a/UnitsNet.WindowsRuntimeComponent/GeneratedCode/UnitAbbreviationsCache.g.cs b/UnitsNet.WindowsRuntimeComponent/GeneratedCode/UnitAbbreviationsCache.g.cs index 8133129dc3..054b10e4a5 100644 --- a/UnitsNet.WindowsRuntimeComponent/GeneratedCode/UnitAbbreviationsCache.g.cs +++ b/UnitsNet.WindowsRuntimeComponent/GeneratedCode/UnitAbbreviationsCache.g.cs @@ -489,6 +489,7 @@ private static readonly (string CultureName, Type UnitType, int UnitValue, strin ("en-US", typeof(LengthUnit), (int)LengthUnit.Fathom, new string[]{"fathom"}), ("en-US", typeof(LengthUnit), (int)LengthUnit.Foot, new string[]{"ft", "'", "′"}), ("ru-RU", typeof(LengthUnit), (int)LengthUnit.Foot, new string[]{"фут"}), + ("en-US", typeof(LengthUnit), (int)LengthUnit.Hand, new string[]{"h", "hh"}), ("en-US", typeof(LengthUnit), (int)LengthUnit.Inch, new string[]{"in", "\"", "″"}), ("ru-RU", typeof(LengthUnit), (int)LengthUnit.Inch, new string[]{"дюйм"}), ("en-US", typeof(LengthUnit), (int)LengthUnit.Kilometer, new string[]{"km"}), diff --git a/UnitsNet.WindowsRuntimeComponent/GeneratedCode/Units/LengthUnit.g.cs b/UnitsNet.WindowsRuntimeComponent/GeneratedCode/Units/LengthUnit.g.cs index 0dfbd398bc..04d4d92e0d 100644 --- a/UnitsNet.WindowsRuntimeComponent/GeneratedCode/Units/LengthUnit.g.cs +++ b/UnitsNet.WindowsRuntimeComponent/GeneratedCode/Units/LengthUnit.g.cs @@ -32,6 +32,7 @@ public enum LengthUnit DtpPoint, Fathom, Foot, + Hand, Inch, Kilometer, Meter, diff --git a/UnitsNet/GeneratedCode/Quantities/Length.NetFramework.g.cs b/UnitsNet/GeneratedCode/Quantities/Length.NetFramework.g.cs index d18ff4d489..1272736677 100644 --- a/UnitsNet/GeneratedCode/Quantities/Length.NetFramework.g.cs +++ b/UnitsNet/GeneratedCode/Quantities/Length.NetFramework.g.cs @@ -56,6 +56,7 @@ static Length() new UnitInfo(LengthUnit.DtpPoint, new BaseUnits(length: LengthUnit.DtpPoint)), new UnitInfo(LengthUnit.Fathom, new BaseUnits(length: LengthUnit.Fathom)), new UnitInfo(LengthUnit.Foot, new BaseUnits(length: LengthUnit.Foot)), + new UnitInfo(LengthUnit.Hand, new BaseUnits(length: LengthUnit.Hand)), new UnitInfo(LengthUnit.Inch, new BaseUnits(length: LengthUnit.Inch)), new UnitInfo(LengthUnit.Kilometer, BaseUnits.Undefined), new UnitInfo(LengthUnit.Meter, new BaseUnits(length: LengthUnit.Meter)), @@ -211,6 +212,11 @@ public Length(double numericValue, UnitSystem unitSystem) /// public double Feet => As(LengthUnit.Foot); + /// + /// Get Length in Hands. + /// + public double Hands => As(LengthUnit.Hand); + /// /// Get Length in Inches. /// @@ -375,6 +381,15 @@ public static Length FromFeet(QuantityValue feet) return new Length(value, LengthUnit.Foot); } /// + /// Get Length from Hands. + /// + /// If value is NaN or Infinity. + public static Length FromHands(QuantityValue hands) + { + double value = (double) hands; + return new Length(value, LengthUnit.Hand); + } + /// /// Get Length from Inches. /// /// If value is NaN or Infinity. @@ -943,6 +958,7 @@ private double GetValueInBaseUnit() case LengthUnit.DtpPoint: return (_value/72)*2.54e-2; case LengthUnit.Fathom: return _value*1.8288; case LengthUnit.Foot: return _value*0.3048; + case LengthUnit.Hand: return _value * 1.016e-1; case LengthUnit.Inch: return _value*2.54e-2; case LengthUnit.Kilometer: return (_value) * 1e3d; case LengthUnit.Meter: return _value; @@ -979,6 +995,7 @@ private double GetValueAs(LengthUnit unit) case LengthUnit.DtpPoint: return (baseUnitValue/2.54e-2)*72; case LengthUnit.Fathom: return baseUnitValue/1.8288; case LengthUnit.Foot: return baseUnitValue/0.3048; + case LengthUnit.Hand: return baseUnitValue / 1.016e-1; case LengthUnit.Inch: return baseUnitValue/2.54e-2; case LengthUnit.Kilometer: return (baseUnitValue) / 1e3d; case LengthUnit.Meter: return baseUnitValue; diff --git a/UnitsNet/GeneratedCode/UnitAbbreviationsCache.g.cs b/UnitsNet/GeneratedCode/UnitAbbreviationsCache.g.cs index 9018fb5310..296f6e7e7b 100644 --- a/UnitsNet/GeneratedCode/UnitAbbreviationsCache.g.cs +++ b/UnitsNet/GeneratedCode/UnitAbbreviationsCache.g.cs @@ -489,6 +489,7 @@ private static readonly (string CultureName, Type UnitType, int UnitValue, strin ("en-US", typeof(LengthUnit), (int)LengthUnit.Fathom, new string[]{"fathom"}), ("en-US", typeof(LengthUnit), (int)LengthUnit.Foot, new string[]{"ft", "'", "′"}), ("ru-RU", typeof(LengthUnit), (int)LengthUnit.Foot, new string[]{"фут"}), + ("en-US", typeof(LengthUnit), (int)LengthUnit.Hand, new string[]{"h", "hh"}), ("en-US", typeof(LengthUnit), (int)LengthUnit.Inch, new string[]{"in", "\"", "″"}), ("ru-RU", typeof(LengthUnit), (int)LengthUnit.Inch, new string[]{"дюйм"}), ("en-US", typeof(LengthUnit), (int)LengthUnit.Kilometer, new string[]{"km"}), diff --git a/UnitsNet/GeneratedCode/Units/LengthUnit.g.cs b/UnitsNet/GeneratedCode/Units/LengthUnit.g.cs index 0dfbd398bc..04d4d92e0d 100644 --- a/UnitsNet/GeneratedCode/Units/LengthUnit.g.cs +++ b/UnitsNet/GeneratedCode/Units/LengthUnit.g.cs @@ -32,6 +32,7 @@ public enum LengthUnit DtpPoint, Fathom, Foot, + Hand, Inch, Kilometer, Meter,