Skip to content

Commit 2f2fd36

Browse files
author
tongbong
committed
Add more degree based units
1 parent b5c5cf9 commit 2f2fd36

File tree

6 files changed

+106
-0
lines changed

6 files changed

+106
-0
lines changed

UnitsNet.Tests/CustomCode/AngleTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ public class AngleTests : AngleTestsBase
3434

3535
protected override double RadiansInOneDegree => Math.PI/2/90;
3636

37+
protected override double MillidegreesInOneDegree => 1E3;
38+
39+
protected override double MicrodegreesInOneDegree => 1E6;
40+
41+
protected override double NanodegreesInOneDegree => 1E9;
42+
3743
protected override double NanoradiansInOneDegree => Math.PI/2/90*1E9;
3844

3945
protected override double MicroradiansInOneDegree => Math.PI/2/90*1E6;

UnitsNet.Tests/GeneratedCode/AngleTestsBase.g.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,11 @@ public abstract partial class AngleTestsBase
4242
protected abstract double DeciradiansInOneDegree { get; }
4343
protected abstract double DegreesInOneDegree { get; }
4444
protected abstract double GradiansInOneDegree { get; }
45+
protected abstract double MicrodegreesInOneDegree { get; }
4546
protected abstract double MicroradiansInOneDegree { get; }
47+
protected abstract double MillidegreesInOneDegree { get; }
4648
protected abstract double MilliradiansInOneDegree { get; }
49+
protected abstract double NanodegreesInOneDegree { get; }
4750
protected abstract double NanoradiansInOneDegree { get; }
4851
protected abstract double RadiansInOneDegree { get; }
4952

@@ -54,8 +57,11 @@ public abstract partial class AngleTestsBase
5457
protected virtual double DeciradiansTolerance { get { return 1e-5; } }
5558
protected virtual double DegreesTolerance { get { return 1e-5; } }
5659
protected virtual double GradiansTolerance { get { return 1e-5; } }
60+
protected virtual double MicrodegreesTolerance { get { return 1e-5; } }
5761
protected virtual double MicroradiansTolerance { get { return 1e-5; } }
62+
protected virtual double MillidegreesTolerance { get { return 1e-5; } }
5863
protected virtual double MilliradiansTolerance { get { return 1e-5; } }
64+
protected virtual double NanodegreesTolerance { get { return 1e-5; } }
5965
protected virtual double NanoradiansTolerance { get { return 1e-5; } }
6066
protected virtual double RadiansTolerance { get { return 1e-5; } }
6167
// ReSharper restore VirtualMemberNeverOverriden.Global
@@ -70,8 +76,11 @@ public void DegreeToAngleUnits()
7076
Assert.AreEqual(DeciradiansInOneDegree, degree.Deciradians, DeciradiansTolerance);
7177
Assert.AreEqual(DegreesInOneDegree, degree.Degrees, DegreesTolerance);
7278
Assert.AreEqual(GradiansInOneDegree, degree.Gradians, GradiansTolerance);
79+
Assert.AreEqual(MicrodegreesInOneDegree, degree.Microdegrees, MicrodegreesTolerance);
7380
Assert.AreEqual(MicroradiansInOneDegree, degree.Microradians, MicroradiansTolerance);
81+
Assert.AreEqual(MillidegreesInOneDegree, degree.Millidegrees, MillidegreesTolerance);
7482
Assert.AreEqual(MilliradiansInOneDegree, degree.Milliradians, MilliradiansTolerance);
83+
Assert.AreEqual(NanodegreesInOneDegree, degree.Nanodegrees, NanodegreesTolerance);
7584
Assert.AreEqual(NanoradiansInOneDegree, degree.Nanoradians, NanoradiansTolerance);
7685
Assert.AreEqual(RadiansInOneDegree, degree.Radians, RadiansTolerance);
7786
}
@@ -85,8 +94,11 @@ public void FromValueAndUnit()
8594
Assert.AreEqual(1, Angle.From(1, AngleUnit.Deciradian).Deciradians, DeciradiansTolerance);
8695
Assert.AreEqual(1, Angle.From(1, AngleUnit.Degree).Degrees, DegreesTolerance);
8796
Assert.AreEqual(1, Angle.From(1, AngleUnit.Gradian).Gradians, GradiansTolerance);
97+
Assert.AreEqual(1, Angle.From(1, AngleUnit.Microdegree).Microdegrees, MicrodegreesTolerance);
8898
Assert.AreEqual(1, Angle.From(1, AngleUnit.Microradian).Microradians, MicroradiansTolerance);
99+
Assert.AreEqual(1, Angle.From(1, AngleUnit.Millidegree).Millidegrees, MillidegreesTolerance);
89100
Assert.AreEqual(1, Angle.From(1, AngleUnit.Milliradian).Milliradians, MilliradiansTolerance);
101+
Assert.AreEqual(1, Angle.From(1, AngleUnit.Nanodegree).Nanodegrees, NanodegreesTolerance);
90102
Assert.AreEqual(1, Angle.From(1, AngleUnit.Nanoradian).Nanoradians, NanoradiansTolerance);
91103
Assert.AreEqual(1, Angle.From(1, AngleUnit.Radian).Radians, RadiansTolerance);
92104
}
@@ -101,8 +113,11 @@ public void As()
101113
Assert.AreEqual(DeciradiansInOneDegree, degree.As(AngleUnit.Deciradian), DeciradiansTolerance);
102114
Assert.AreEqual(DegreesInOneDegree, degree.As(AngleUnit.Degree), DegreesTolerance);
103115
Assert.AreEqual(GradiansInOneDegree, degree.As(AngleUnit.Gradian), GradiansTolerance);
116+
Assert.AreEqual(MicrodegreesInOneDegree, degree.As(AngleUnit.Microdegree), MicrodegreesTolerance);
104117
Assert.AreEqual(MicroradiansInOneDegree, degree.As(AngleUnit.Microradian), MicroradiansTolerance);
118+
Assert.AreEqual(MillidegreesInOneDegree, degree.As(AngleUnit.Millidegree), MillidegreesTolerance);
105119
Assert.AreEqual(MilliradiansInOneDegree, degree.As(AngleUnit.Milliradian), MilliradiansTolerance);
120+
Assert.AreEqual(NanodegreesInOneDegree, degree.As(AngleUnit.Nanodegree), NanodegreesTolerance);
106121
Assert.AreEqual(NanoradiansInOneDegree, degree.As(AngleUnit.Nanoradian), NanoradiansTolerance);
107122
Assert.AreEqual(RadiansInOneDegree, degree.As(AngleUnit.Radian), RadiansTolerance);
108123
}
@@ -117,8 +132,11 @@ public void ConversionRoundTrip()
117132
Assert.AreEqual(1, Angle.FromDeciradians(degree.Deciradians).Degrees, DeciradiansTolerance);
118133
Assert.AreEqual(1, Angle.FromDegrees(degree.Degrees).Degrees, DegreesTolerance);
119134
Assert.AreEqual(1, Angle.FromGradians(degree.Gradians).Degrees, GradiansTolerance);
135+
Assert.AreEqual(1, Angle.FromMicrodegrees(degree.Microdegrees).Degrees, MicrodegreesTolerance);
120136
Assert.AreEqual(1, Angle.FromMicroradians(degree.Microradians).Degrees, MicroradiansTolerance);
137+
Assert.AreEqual(1, Angle.FromMillidegrees(degree.Millidegrees).Degrees, MillidegreesTolerance);
121138
Assert.AreEqual(1, Angle.FromMilliradians(degree.Milliradians).Degrees, MilliradiansTolerance);
139+
Assert.AreEqual(1, Angle.FromNanodegrees(degree.Nanodegrees).Degrees, NanodegreesTolerance);
122140
Assert.AreEqual(1, Angle.FromNanoradians(degree.Nanoradians).Degrees, NanoradiansTolerance);
123141
Assert.AreEqual(1, Angle.FromRadians(degree.Radians).Degrees, RadiansTolerance);
124142
}

UnitsNet/GeneratedCode/Enums/AngleUnit.g.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,11 @@ public enum AngleUnit
3131
Deciradian,
3232
Degree,
3333
Gradian,
34+
Microdegree,
3435
Microradian,
36+
Millidegree,
3537
Milliradian,
38+
Nanodegree,
3639
Nanoradian,
3740
Radian,
3841
}

UnitsNet/GeneratedCode/UnitClasses/Angle.g.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,14 @@ public double Gradians
102102
get { return _degrees/0.9; }
103103
}
104104

105+
/// <summary>
106+
/// Get Angle in Microdegrees.
107+
/// </summary>
108+
public double Microdegrees
109+
{
110+
get { return (_degrees) / 1e-6d; }
111+
}
112+
105113
/// <summary>
106114
/// Get Angle in Microradians.
107115
/// </summary>
@@ -110,6 +118,14 @@ public double Microradians
110118
get { return (_degrees/180*Math.PI) / 1e-6d; }
111119
}
112120

121+
/// <summary>
122+
/// Get Angle in Millidegrees.
123+
/// </summary>
124+
public double Millidegrees
125+
{
126+
get { return (_degrees) / 1e-3d; }
127+
}
128+
113129
/// <summary>
114130
/// Get Angle in Milliradians.
115131
/// </summary>
@@ -118,6 +134,14 @@ public double Milliradians
118134
get { return (_degrees/180*Math.PI) / 1e-3d; }
119135
}
120136

137+
/// <summary>
138+
/// Get Angle in Nanodegrees.
139+
/// </summary>
140+
public double Nanodegrees
141+
{
142+
get { return (_degrees) / 1e-9d; }
143+
}
144+
121145
/// <summary>
122146
/// Get Angle in Nanoradians.
123147
/// </summary>
@@ -191,6 +215,14 @@ public static Angle FromGradians(double gradians)
191215
return new Angle(gradians*0.9);
192216
}
193217

218+
/// <summary>
219+
/// Get Angle from Microdegrees.
220+
/// </summary>
221+
public static Angle FromMicrodegrees(double microdegrees)
222+
{
223+
return new Angle((microdegrees) * 1e-6d);
224+
}
225+
194226
/// <summary>
195227
/// Get Angle from Microradians.
196228
/// </summary>
@@ -199,6 +231,14 @@ public static Angle FromMicroradians(double microradians)
199231
return new Angle((microradians*180/Math.PI) * 1e-6d);
200232
}
201233

234+
/// <summary>
235+
/// Get Angle from Millidegrees.
236+
/// </summary>
237+
public static Angle FromMillidegrees(double millidegrees)
238+
{
239+
return new Angle((millidegrees) * 1e-3d);
240+
}
241+
202242
/// <summary>
203243
/// Get Angle from Milliradians.
204244
/// </summary>
@@ -207,6 +247,14 @@ public static Angle FromMilliradians(double milliradians)
207247
return new Angle((milliradians*180/Math.PI) * 1e-3d);
208248
}
209249

250+
/// <summary>
251+
/// Get Angle from Nanodegrees.
252+
/// </summary>
253+
public static Angle FromNanodegrees(double nanodegrees)
254+
{
255+
return new Angle((nanodegrees) * 1e-9d);
256+
}
257+
210258
/// <summary>
211259
/// Get Angle from Nanoradians.
212260
/// </summary>
@@ -246,10 +294,16 @@ public static Angle From(double value, AngleUnit fromUnit)
246294
return FromDegrees(value);
247295
case AngleUnit.Gradian:
248296
return FromGradians(value);
297+
case AngleUnit.Microdegree:
298+
return FromMicrodegrees(value);
249299
case AngleUnit.Microradian:
250300
return FromMicroradians(value);
301+
case AngleUnit.Millidegree:
302+
return FromMillidegrees(value);
251303
case AngleUnit.Milliradian:
252304
return FromMilliradians(value);
305+
case AngleUnit.Nanodegree:
306+
return FromNanodegrees(value);
253307
case AngleUnit.Nanoradian:
254308
return FromNanoradians(value);
255309
case AngleUnit.Radian:
@@ -399,10 +453,16 @@ public double As(AngleUnit unit)
399453
return Degrees;
400454
case AngleUnit.Gradian:
401455
return Gradians;
456+
case AngleUnit.Microdegree:
457+
return Microdegrees;
402458
case AngleUnit.Microradian:
403459
return Microradians;
460+
case AngleUnit.Millidegree:
461+
return Millidegrees;
404462
case AngleUnit.Milliradian:
405463
return Milliradians;
464+
case AngleUnit.Nanodegree:
465+
return Nanodegrees;
406466
case AngleUnit.Nanoradian:
407467
return Nanoradians;
408468
case AngleUnit.Radian:

UnitsNet/GeneratedCode/UnitSystem.Default.g.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,18 +129,36 @@ private static readonly ReadOnlyCollection<UnitLocalization> DefaultLocalization
129129
new AbbreviationsForCulture("en-US", "g"),
130130
new AbbreviationsForCulture("ru-RU", "g"),
131131
}),
132+
new CulturesForEnumValue((int) AngleUnit.Microdegree,
133+
new[]
134+
{
135+
new AbbreviationsForCulture("en-US", "μ°"),
136+
new AbbreviationsForCulture("ru-RU", "μ°"),
137+
}),
132138
new CulturesForEnumValue((int) AngleUnit.Microradian,
133139
new[]
134140
{
135141
new AbbreviationsForCulture("en-US", "μrad"),
136142
new AbbreviationsForCulture("ru-RU", "μрад"),
137143
}),
144+
new CulturesForEnumValue((int) AngleUnit.Millidegree,
145+
new[]
146+
{
147+
new AbbreviationsForCulture("en-US", "m°"),
148+
new AbbreviationsForCulture("ru-RU", "m°"),
149+
}),
138150
new CulturesForEnumValue((int) AngleUnit.Milliradian,
139151
new[]
140152
{
141153
new AbbreviationsForCulture("en-US", "mrad"),
142154
new AbbreviationsForCulture("ru-RU", "mрад"),
143155
}),
156+
new CulturesForEnumValue((int) AngleUnit.Nanodegree,
157+
new[]
158+
{
159+
new AbbreviationsForCulture("en-US", "n°"),
160+
new AbbreviationsForCulture("ru-RU", "n°"),
161+
}),
144162
new CulturesForEnumValue((int) AngleUnit.Nanoradian,
145163
new[]
146164
{

UnitsNet/Scripts/UnitDefinitions/Angle.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
{
2424
"SingularName": "Degree",
2525
"PluralName": "Degrees",
26+
"Prefixes": [ "Nano", "Micro", "Milli" ],
2627
"FromUnitToBaseFunc": "x",
2728
"FromBaseToUnitFunc": "x",
2829
"Localization": [

0 commit comments

Comments
 (0)