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,