From 2f2fd36630b7cbd7c34194c3682b519b02aec321 Mon Sep 17 00:00:00 2001 From: tongbong Date: Mon, 29 Feb 2016 17:33:26 +0100 Subject: [PATCH] Add more degree based units --- UnitsNet.Tests/CustomCode/AngleTests.cs | 6 ++ .../GeneratedCode/AngleTestsBase.g.cs | 18 ++++++ UnitsNet/GeneratedCode/Enums/AngleUnit.g.cs | 3 + UnitsNet/GeneratedCode/UnitClasses/Angle.g.cs | 60 +++++++++++++++++++ .../GeneratedCode/UnitSystem.Default.g.cs | 18 ++++++ UnitsNet/Scripts/UnitDefinitions/Angle.json | 1 + 6 files changed, 106 insertions(+) diff --git a/UnitsNet.Tests/CustomCode/AngleTests.cs b/UnitsNet.Tests/CustomCode/AngleTests.cs index 911d1bb54b..14970d7320 100644 --- a/UnitsNet.Tests/CustomCode/AngleTests.cs +++ b/UnitsNet.Tests/CustomCode/AngleTests.cs @@ -34,6 +34,12 @@ public class AngleTests : AngleTestsBase protected override double RadiansInOneDegree => Math.PI/2/90; + protected override double MillidegreesInOneDegree => 1E3; + + protected override double MicrodegreesInOneDegree => 1E6; + + protected override double NanodegreesInOneDegree => 1E9; + protected override double NanoradiansInOneDegree => Math.PI/2/90*1E9; protected override double MicroradiansInOneDegree => Math.PI/2/90*1E6; diff --git a/UnitsNet.Tests/GeneratedCode/AngleTestsBase.g.cs b/UnitsNet.Tests/GeneratedCode/AngleTestsBase.g.cs index d330008fcc..8c10131423 100644 --- a/UnitsNet.Tests/GeneratedCode/AngleTestsBase.g.cs +++ b/UnitsNet.Tests/GeneratedCode/AngleTestsBase.g.cs @@ -42,8 +42,11 @@ public abstract partial class AngleTestsBase protected abstract double DeciradiansInOneDegree { get; } protected abstract double DegreesInOneDegree { get; } protected abstract double GradiansInOneDegree { get; } + protected abstract double MicrodegreesInOneDegree { get; } protected abstract double MicroradiansInOneDegree { get; } + protected abstract double MillidegreesInOneDegree { get; } protected abstract double MilliradiansInOneDegree { get; } + protected abstract double NanodegreesInOneDegree { get; } protected abstract double NanoradiansInOneDegree { get; } protected abstract double RadiansInOneDegree { get; } @@ -54,8 +57,11 @@ public abstract partial class AngleTestsBase protected virtual double DeciradiansTolerance { get { return 1e-5; } } protected virtual double DegreesTolerance { get { return 1e-5; } } protected virtual double GradiansTolerance { get { return 1e-5; } } + protected virtual double MicrodegreesTolerance { get { return 1e-5; } } protected virtual double MicroradiansTolerance { get { return 1e-5; } } + protected virtual double MillidegreesTolerance { get { return 1e-5; } } protected virtual double MilliradiansTolerance { get { return 1e-5; } } + protected virtual double NanodegreesTolerance { get { return 1e-5; } } protected virtual double NanoradiansTolerance { get { return 1e-5; } } protected virtual double RadiansTolerance { get { return 1e-5; } } // ReSharper restore VirtualMemberNeverOverriden.Global @@ -70,8 +76,11 @@ public void DegreeToAngleUnits() Assert.AreEqual(DeciradiansInOneDegree, degree.Deciradians, DeciradiansTolerance); Assert.AreEqual(DegreesInOneDegree, degree.Degrees, DegreesTolerance); Assert.AreEqual(GradiansInOneDegree, degree.Gradians, GradiansTolerance); + Assert.AreEqual(MicrodegreesInOneDegree, degree.Microdegrees, MicrodegreesTolerance); Assert.AreEqual(MicroradiansInOneDegree, degree.Microradians, MicroradiansTolerance); + Assert.AreEqual(MillidegreesInOneDegree, degree.Millidegrees, MillidegreesTolerance); Assert.AreEqual(MilliradiansInOneDegree, degree.Milliradians, MilliradiansTolerance); + Assert.AreEqual(NanodegreesInOneDegree, degree.Nanodegrees, NanodegreesTolerance); Assert.AreEqual(NanoradiansInOneDegree, degree.Nanoradians, NanoradiansTolerance); Assert.AreEqual(RadiansInOneDegree, degree.Radians, RadiansTolerance); } @@ -85,8 +94,11 @@ public void FromValueAndUnit() Assert.AreEqual(1, Angle.From(1, AngleUnit.Deciradian).Deciradians, DeciradiansTolerance); Assert.AreEqual(1, Angle.From(1, AngleUnit.Degree).Degrees, DegreesTolerance); Assert.AreEqual(1, Angle.From(1, AngleUnit.Gradian).Gradians, GradiansTolerance); + Assert.AreEqual(1, Angle.From(1, AngleUnit.Microdegree).Microdegrees, MicrodegreesTolerance); Assert.AreEqual(1, Angle.From(1, AngleUnit.Microradian).Microradians, MicroradiansTolerance); + Assert.AreEqual(1, Angle.From(1, AngleUnit.Millidegree).Millidegrees, MillidegreesTolerance); Assert.AreEqual(1, Angle.From(1, AngleUnit.Milliradian).Milliradians, MilliradiansTolerance); + Assert.AreEqual(1, Angle.From(1, AngleUnit.Nanodegree).Nanodegrees, NanodegreesTolerance); Assert.AreEqual(1, Angle.From(1, AngleUnit.Nanoradian).Nanoradians, NanoradiansTolerance); Assert.AreEqual(1, Angle.From(1, AngleUnit.Radian).Radians, RadiansTolerance); } @@ -101,8 +113,11 @@ public void As() Assert.AreEqual(DeciradiansInOneDegree, degree.As(AngleUnit.Deciradian), DeciradiansTolerance); Assert.AreEqual(DegreesInOneDegree, degree.As(AngleUnit.Degree), DegreesTolerance); Assert.AreEqual(GradiansInOneDegree, degree.As(AngleUnit.Gradian), GradiansTolerance); + Assert.AreEqual(MicrodegreesInOneDegree, degree.As(AngleUnit.Microdegree), MicrodegreesTolerance); Assert.AreEqual(MicroradiansInOneDegree, degree.As(AngleUnit.Microradian), MicroradiansTolerance); + Assert.AreEqual(MillidegreesInOneDegree, degree.As(AngleUnit.Millidegree), MillidegreesTolerance); Assert.AreEqual(MilliradiansInOneDegree, degree.As(AngleUnit.Milliradian), MilliradiansTolerance); + Assert.AreEqual(NanodegreesInOneDegree, degree.As(AngleUnit.Nanodegree), NanodegreesTolerance); Assert.AreEqual(NanoradiansInOneDegree, degree.As(AngleUnit.Nanoradian), NanoradiansTolerance); Assert.AreEqual(RadiansInOneDegree, degree.As(AngleUnit.Radian), RadiansTolerance); } @@ -117,8 +132,11 @@ public void ConversionRoundTrip() Assert.AreEqual(1, Angle.FromDeciradians(degree.Deciradians).Degrees, DeciradiansTolerance); Assert.AreEqual(1, Angle.FromDegrees(degree.Degrees).Degrees, DegreesTolerance); Assert.AreEqual(1, Angle.FromGradians(degree.Gradians).Degrees, GradiansTolerance); + Assert.AreEqual(1, Angle.FromMicrodegrees(degree.Microdegrees).Degrees, MicrodegreesTolerance); Assert.AreEqual(1, Angle.FromMicroradians(degree.Microradians).Degrees, MicroradiansTolerance); + Assert.AreEqual(1, Angle.FromMillidegrees(degree.Millidegrees).Degrees, MillidegreesTolerance); Assert.AreEqual(1, Angle.FromMilliradians(degree.Milliradians).Degrees, MilliradiansTolerance); + Assert.AreEqual(1, Angle.FromNanodegrees(degree.Nanodegrees).Degrees, NanodegreesTolerance); Assert.AreEqual(1, Angle.FromNanoradians(degree.Nanoradians).Degrees, NanoradiansTolerance); Assert.AreEqual(1, Angle.FromRadians(degree.Radians).Degrees, RadiansTolerance); } diff --git a/UnitsNet/GeneratedCode/Enums/AngleUnit.g.cs b/UnitsNet/GeneratedCode/Enums/AngleUnit.g.cs index 006b01ffd9..d012235cc4 100644 --- a/UnitsNet/GeneratedCode/Enums/AngleUnit.g.cs +++ b/UnitsNet/GeneratedCode/Enums/AngleUnit.g.cs @@ -31,8 +31,11 @@ public enum AngleUnit Deciradian, Degree, Gradian, + Microdegree, Microradian, + Millidegree, Milliradian, + Nanodegree, Nanoradian, Radian, } diff --git a/UnitsNet/GeneratedCode/UnitClasses/Angle.g.cs b/UnitsNet/GeneratedCode/UnitClasses/Angle.g.cs index cdd3d974bc..51c03c060c 100644 --- a/UnitsNet/GeneratedCode/UnitClasses/Angle.g.cs +++ b/UnitsNet/GeneratedCode/UnitClasses/Angle.g.cs @@ -102,6 +102,14 @@ public double Gradians get { return _degrees/0.9; } } + /// + /// Get Angle in Microdegrees. + /// + public double Microdegrees + { + get { return (_degrees) / 1e-6d; } + } + /// /// Get Angle in Microradians. /// @@ -110,6 +118,14 @@ public double Microradians get { return (_degrees/180*Math.PI) / 1e-6d; } } + /// + /// Get Angle in Millidegrees. + /// + public double Millidegrees + { + get { return (_degrees) / 1e-3d; } + } + /// /// Get Angle in Milliradians. /// @@ -118,6 +134,14 @@ public double Milliradians get { return (_degrees/180*Math.PI) / 1e-3d; } } + /// + /// Get Angle in Nanodegrees. + /// + public double Nanodegrees + { + get { return (_degrees) / 1e-9d; } + } + /// /// Get Angle in Nanoradians. /// @@ -191,6 +215,14 @@ public static Angle FromGradians(double gradians) return new Angle(gradians*0.9); } + /// + /// Get Angle from Microdegrees. + /// + public static Angle FromMicrodegrees(double microdegrees) + { + return new Angle((microdegrees) * 1e-6d); + } + /// /// Get Angle from Microradians. /// @@ -199,6 +231,14 @@ public static Angle FromMicroradians(double microradians) return new Angle((microradians*180/Math.PI) * 1e-6d); } + /// + /// Get Angle from Millidegrees. + /// + public static Angle FromMillidegrees(double millidegrees) + { + return new Angle((millidegrees) * 1e-3d); + } + /// /// Get Angle from Milliradians. /// @@ -207,6 +247,14 @@ public static Angle FromMilliradians(double milliradians) return new Angle((milliradians*180/Math.PI) * 1e-3d); } + /// + /// Get Angle from Nanodegrees. + /// + public static Angle FromNanodegrees(double nanodegrees) + { + return new Angle((nanodegrees) * 1e-9d); + } + /// /// Get Angle from Nanoradians. /// @@ -246,10 +294,16 @@ public static Angle From(double value, AngleUnit fromUnit) return FromDegrees(value); case AngleUnit.Gradian: return FromGradians(value); + case AngleUnit.Microdegree: + return FromMicrodegrees(value); case AngleUnit.Microradian: return FromMicroradians(value); + case AngleUnit.Millidegree: + return FromMillidegrees(value); case AngleUnit.Milliradian: return FromMilliradians(value); + case AngleUnit.Nanodegree: + return FromNanodegrees(value); case AngleUnit.Nanoradian: return FromNanoradians(value); case AngleUnit.Radian: @@ -399,10 +453,16 @@ public double As(AngleUnit unit) return Degrees; case AngleUnit.Gradian: return Gradians; + case AngleUnit.Microdegree: + return Microdegrees; case AngleUnit.Microradian: return Microradians; + case AngleUnit.Millidegree: + return Millidegrees; case AngleUnit.Milliradian: return Milliradians; + case AngleUnit.Nanodegree: + return Nanodegrees; case AngleUnit.Nanoradian: return Nanoradians; case AngleUnit.Radian: diff --git a/UnitsNet/GeneratedCode/UnitSystem.Default.g.cs b/UnitsNet/GeneratedCode/UnitSystem.Default.g.cs index 93920aace2..666c3446e9 100644 --- a/UnitsNet/GeneratedCode/UnitSystem.Default.g.cs +++ b/UnitsNet/GeneratedCode/UnitSystem.Default.g.cs @@ -129,18 +129,36 @@ private static readonly ReadOnlyCollection DefaultLocalization new AbbreviationsForCulture("en-US", "g"), new AbbreviationsForCulture("ru-RU", "g"), }), + new CulturesForEnumValue((int) AngleUnit.Microdegree, + new[] + { + new AbbreviationsForCulture("en-US", "μ°"), + new AbbreviationsForCulture("ru-RU", "μ°"), + }), new CulturesForEnumValue((int) AngleUnit.Microradian, new[] { new AbbreviationsForCulture("en-US", "μrad"), new AbbreviationsForCulture("ru-RU", "μрад"), }), + new CulturesForEnumValue((int) AngleUnit.Millidegree, + new[] + { + new AbbreviationsForCulture("en-US", "m°"), + new AbbreviationsForCulture("ru-RU", "m°"), + }), new CulturesForEnumValue((int) AngleUnit.Milliradian, new[] { new AbbreviationsForCulture("en-US", "mrad"), new AbbreviationsForCulture("ru-RU", "mрад"), }), + new CulturesForEnumValue((int) AngleUnit.Nanodegree, + new[] + { + new AbbreviationsForCulture("en-US", "n°"), + new AbbreviationsForCulture("ru-RU", "n°"), + }), new CulturesForEnumValue((int) AngleUnit.Nanoradian, new[] { diff --git a/UnitsNet/Scripts/UnitDefinitions/Angle.json b/UnitsNet/Scripts/UnitDefinitions/Angle.json index e62d733d06..24ba21560d 100644 --- a/UnitsNet/Scripts/UnitDefinitions/Angle.json +++ b/UnitsNet/Scripts/UnitDefinitions/Angle.json @@ -23,6 +23,7 @@ { "SingularName": "Degree", "PluralName": "Degrees", + "Prefixes": [ "Nano", "Micro", "Milli" ], "FromUnitToBaseFunc": "x", "FromBaseToUnitFunc": "x", "Localization": [