Skip to content

Commit 2c9757d

Browse files
author
tongbong
committed
Add more units based on degree per second unit
1 parent d65d5bc commit 2c9757d

File tree

6 files changed

+123
-16
lines changed

6 files changed

+123
-16
lines changed

UnitsNet.Tests/CustomCode/RotationalSpeedTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@ public class RotationalSpeedTests : RotationalSpeedTestsBase
4444

4545
protected override double DegreesPerSecondInOneRadianPerSecond => (180 / Math.PI) * 1;
4646

47+
protected override double MillidegreesPerSecondInOneRadianPerSecond => ((180 / Math.PI) * 1)* 1E3;
48+
49+
protected override double MicrodegreesPerSecondInOneRadianPerSecond => ((180 / Math.PI) * 1) * 1E6;
50+
51+
protected override double NanodegreesPerSecondInOneRadianPerSecond => ((180 / Math.PI) * 1) * 1E9;
52+
53+
4754
[Test]
4855
public void DurationTimesRotationalSpeedEqualsAngle()
4956
{

UnitsNet.Tests/GeneratedCode/RotationalSpeedTestsBase.g.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,11 @@ public abstract partial class RotationalSpeedTestsBase
3939
protected abstract double CentiradiansPerSecondInOneRadianPerSecond { get; }
4040
protected abstract double DeciradiansPerSecondInOneRadianPerSecond { get; }
4141
protected abstract double DegreesPerSecondInOneRadianPerSecond { get; }
42+
protected abstract double MicrodegreesPerSecondInOneRadianPerSecond { get; }
4243
protected abstract double MicroradiansPerSecondInOneRadianPerSecond { get; }
44+
protected abstract double MillidegreesPerSecondInOneRadianPerSecond { get; }
4345
protected abstract double MilliradiansPerSecondInOneRadianPerSecond { get; }
46+
protected abstract double NanodegreesPerSecondInOneRadianPerSecond { get; }
4447
protected abstract double NanoradiansPerSecondInOneRadianPerSecond { get; }
4548
protected abstract double RadiansPerSecondInOneRadianPerSecond { get; }
4649
protected abstract double RevolutionsPerMinuteInOneRadianPerSecond { get; }
@@ -50,8 +53,11 @@ public abstract partial class RotationalSpeedTestsBase
5053
protected virtual double CentiradiansPerSecondTolerance { get { return 1e-5; } }
5154
protected virtual double DeciradiansPerSecondTolerance { get { return 1e-5; } }
5255
protected virtual double DegreesPerSecondTolerance { get { return 1e-5; } }
56+
protected virtual double MicrodegreesPerSecondTolerance { get { return 1e-5; } }
5357
protected virtual double MicroradiansPerSecondTolerance { get { return 1e-5; } }
58+
protected virtual double MillidegreesPerSecondTolerance { get { return 1e-5; } }
5459
protected virtual double MilliradiansPerSecondTolerance { get { return 1e-5; } }
60+
protected virtual double NanodegreesPerSecondTolerance { get { return 1e-5; } }
5561
protected virtual double NanoradiansPerSecondTolerance { get { return 1e-5; } }
5662
protected virtual double RadiansPerSecondTolerance { get { return 1e-5; } }
5763
protected virtual double RevolutionsPerMinuteTolerance { get { return 1e-5; } }
@@ -65,8 +71,11 @@ public void RadianPerSecondToRotationalSpeedUnits()
6571
Assert.AreEqual(CentiradiansPerSecondInOneRadianPerSecond, radianpersecond.CentiradiansPerSecond, CentiradiansPerSecondTolerance);
6672
Assert.AreEqual(DeciradiansPerSecondInOneRadianPerSecond, radianpersecond.DeciradiansPerSecond, DeciradiansPerSecondTolerance);
6773
Assert.AreEqual(DegreesPerSecondInOneRadianPerSecond, radianpersecond.DegreesPerSecond, DegreesPerSecondTolerance);
74+
Assert.AreEqual(MicrodegreesPerSecondInOneRadianPerSecond, radianpersecond.MicrodegreesPerSecond, MicrodegreesPerSecondTolerance);
6875
Assert.AreEqual(MicroradiansPerSecondInOneRadianPerSecond, radianpersecond.MicroradiansPerSecond, MicroradiansPerSecondTolerance);
76+
Assert.AreEqual(MillidegreesPerSecondInOneRadianPerSecond, radianpersecond.MillidegreesPerSecond, MillidegreesPerSecondTolerance);
6977
Assert.AreEqual(MilliradiansPerSecondInOneRadianPerSecond, radianpersecond.MilliradiansPerSecond, MilliradiansPerSecondTolerance);
78+
Assert.AreEqual(NanodegreesPerSecondInOneRadianPerSecond, radianpersecond.NanodegreesPerSecond, NanodegreesPerSecondTolerance);
7079
Assert.AreEqual(NanoradiansPerSecondInOneRadianPerSecond, radianpersecond.NanoradiansPerSecond, NanoradiansPerSecondTolerance);
7180
Assert.AreEqual(RadiansPerSecondInOneRadianPerSecond, radianpersecond.RadiansPerSecond, RadiansPerSecondTolerance);
7281
Assert.AreEqual(RevolutionsPerMinuteInOneRadianPerSecond, radianpersecond.RevolutionsPerMinute, RevolutionsPerMinuteTolerance);
@@ -79,8 +88,11 @@ public void FromValueAndUnit()
7988
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.CentiradianPerSecond).CentiradiansPerSecond, CentiradiansPerSecondTolerance);
8089
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.DeciradianPerSecond).DeciradiansPerSecond, DeciradiansPerSecondTolerance);
8190
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.DegreePerSecond).DegreesPerSecond, DegreesPerSecondTolerance);
91+
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.MicrodegreePerSecond).MicrodegreesPerSecond, MicrodegreesPerSecondTolerance);
8292
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.MicroradianPerSecond).MicroradiansPerSecond, MicroradiansPerSecondTolerance);
93+
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.MillidegreePerSecond).MillidegreesPerSecond, MillidegreesPerSecondTolerance);
8394
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.MilliradianPerSecond).MilliradiansPerSecond, MilliradiansPerSecondTolerance);
95+
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.NanodegreePerSecond).NanodegreesPerSecond, NanodegreesPerSecondTolerance);
8496
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.NanoradianPerSecond).NanoradiansPerSecond, NanoradiansPerSecondTolerance);
8597
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.RadianPerSecond).RadiansPerSecond, RadiansPerSecondTolerance);
8698
Assert.AreEqual(1, RotationalSpeed.From(1, RotationalSpeedUnit.RevolutionPerMinute).RevolutionsPerMinute, RevolutionsPerMinuteTolerance);
@@ -94,8 +106,11 @@ public void As()
94106
Assert.AreEqual(CentiradiansPerSecondInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.CentiradianPerSecond), CentiradiansPerSecondTolerance);
95107
Assert.AreEqual(DeciradiansPerSecondInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.DeciradianPerSecond), DeciradiansPerSecondTolerance);
96108
Assert.AreEqual(DegreesPerSecondInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.DegreePerSecond), DegreesPerSecondTolerance);
109+
Assert.AreEqual(MicrodegreesPerSecondInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.MicrodegreePerSecond), MicrodegreesPerSecondTolerance);
97110
Assert.AreEqual(MicroradiansPerSecondInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.MicroradianPerSecond), MicroradiansPerSecondTolerance);
111+
Assert.AreEqual(MillidegreesPerSecondInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.MillidegreePerSecond), MillidegreesPerSecondTolerance);
98112
Assert.AreEqual(MilliradiansPerSecondInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.MilliradianPerSecond), MilliradiansPerSecondTolerance);
113+
Assert.AreEqual(NanodegreesPerSecondInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.NanodegreePerSecond), NanodegreesPerSecondTolerance);
99114
Assert.AreEqual(NanoradiansPerSecondInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.NanoradianPerSecond), NanoradiansPerSecondTolerance);
100115
Assert.AreEqual(RadiansPerSecondInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.RadianPerSecond), RadiansPerSecondTolerance);
101116
Assert.AreEqual(RevolutionsPerMinuteInOneRadianPerSecond, radianpersecond.As(RotationalSpeedUnit.RevolutionPerMinute), RevolutionsPerMinuteTolerance);
@@ -109,8 +124,11 @@ public void ConversionRoundTrip()
109124
Assert.AreEqual(1, RotationalSpeed.FromCentiradiansPerSecond(radianpersecond.CentiradiansPerSecond).RadiansPerSecond, CentiradiansPerSecondTolerance);
110125
Assert.AreEqual(1, RotationalSpeed.FromDeciradiansPerSecond(radianpersecond.DeciradiansPerSecond).RadiansPerSecond, DeciradiansPerSecondTolerance);
111126
Assert.AreEqual(1, RotationalSpeed.FromDegreesPerSecond(radianpersecond.DegreesPerSecond).RadiansPerSecond, DegreesPerSecondTolerance);
127+
Assert.AreEqual(1, RotationalSpeed.FromMicrodegreesPerSecond(radianpersecond.MicrodegreesPerSecond).RadiansPerSecond, MicrodegreesPerSecondTolerance);
112128
Assert.AreEqual(1, RotationalSpeed.FromMicroradiansPerSecond(radianpersecond.MicroradiansPerSecond).RadiansPerSecond, MicroradiansPerSecondTolerance);
129+
Assert.AreEqual(1, RotationalSpeed.FromMillidegreesPerSecond(radianpersecond.MillidegreesPerSecond).RadiansPerSecond, MillidegreesPerSecondTolerance);
113130
Assert.AreEqual(1, RotationalSpeed.FromMilliradiansPerSecond(radianpersecond.MilliradiansPerSecond).RadiansPerSecond, MilliradiansPerSecondTolerance);
131+
Assert.AreEqual(1, RotationalSpeed.FromNanodegreesPerSecond(radianpersecond.NanodegreesPerSecond).RadiansPerSecond, NanodegreesPerSecondTolerance);
114132
Assert.AreEqual(1, RotationalSpeed.FromNanoradiansPerSecond(radianpersecond.NanoradiansPerSecond).RadiansPerSecond, NanoradiansPerSecondTolerance);
115133
Assert.AreEqual(1, RotationalSpeed.FromRadiansPerSecond(radianpersecond.RadiansPerSecond).RadiansPerSecond, RadiansPerSecondTolerance);
116134
Assert.AreEqual(1, RotationalSpeed.FromRevolutionsPerMinute(radianpersecond.RevolutionsPerMinute).RadiansPerSecond, RevolutionsPerMinuteTolerance);

UnitsNet/GeneratedCode/Enums/RotationalSpeedUnit.g.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@ public enum RotationalSpeedUnit
2828
CentiradianPerSecond,
2929
DeciradianPerSecond,
3030
DegreePerSecond,
31+
MicrodegreePerSecond,
3132
MicroradianPerSecond,
33+
MillidegreePerSecond,
3234
MilliradianPerSecond,
35+
NanodegreePerSecond,
3336
NanoradianPerSecond,
3437
RadianPerSecond,
3538
RevolutionPerMinute,

UnitsNet/GeneratedCode/UnitClasses/RotationalSpeed.g.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,14 @@ public double DegreesPerSecond
7878
get { return (180/Math.PI)*_radiansPerSecond; }
7979
}
8080

81+
/// <summary>
82+
/// Get RotationalSpeed in MicrodegreesPerSecond.
83+
/// </summary>
84+
public double MicrodegreesPerSecond
85+
{
86+
get { return ((180/Math.PI)*_radiansPerSecond) / 1e-6d; }
87+
}
88+
8189
/// <summary>
8290
/// Get RotationalSpeed in MicroradiansPerSecond.
8391
/// </summary>
@@ -86,6 +94,14 @@ public double MicroradiansPerSecond
8694
get { return (_radiansPerSecond) / 1e-6d; }
8795
}
8896

97+
/// <summary>
98+
/// Get RotationalSpeed in MillidegreesPerSecond.
99+
/// </summary>
100+
public double MillidegreesPerSecond
101+
{
102+
get { return ((180/Math.PI)*_radiansPerSecond) / 1e-3d; }
103+
}
104+
89105
/// <summary>
90106
/// Get RotationalSpeed in MilliradiansPerSecond.
91107
/// </summary>
@@ -94,6 +110,14 @@ public double MilliradiansPerSecond
94110
get { return (_radiansPerSecond) / 1e-3d; }
95111
}
96112

113+
/// <summary>
114+
/// Get RotationalSpeed in NanodegreesPerSecond.
115+
/// </summary>
116+
public double NanodegreesPerSecond
117+
{
118+
get { return ((180/Math.PI)*_radiansPerSecond) / 1e-9d; }
119+
}
120+
97121
/// <summary>
98122
/// Get RotationalSpeed in NanoradiansPerSecond.
99123
/// </summary>
@@ -159,6 +183,14 @@ public static RotationalSpeed FromDegreesPerSecond(double degreespersecond)
159183
return new RotationalSpeed((Math.PI/180)*degreespersecond);
160184
}
161185

186+
/// <summary>
187+
/// Get RotationalSpeed from MicrodegreesPerSecond.
188+
/// </summary>
189+
public static RotationalSpeed FromMicrodegreesPerSecond(double microdegreespersecond)
190+
{
191+
return new RotationalSpeed(((Math.PI/180)*microdegreespersecond) * 1e-6d);
192+
}
193+
162194
/// <summary>
163195
/// Get RotationalSpeed from MicroradiansPerSecond.
164196
/// </summary>
@@ -167,6 +199,14 @@ public static RotationalSpeed FromMicroradiansPerSecond(double microradiansperse
167199
return new RotationalSpeed((microradianspersecond) * 1e-6d);
168200
}
169201

202+
/// <summary>
203+
/// Get RotationalSpeed from MillidegreesPerSecond.
204+
/// </summary>
205+
public static RotationalSpeed FromMillidegreesPerSecond(double millidegreespersecond)
206+
{
207+
return new RotationalSpeed(((Math.PI/180)*millidegreespersecond) * 1e-3d);
208+
}
209+
170210
/// <summary>
171211
/// Get RotationalSpeed from MilliradiansPerSecond.
172212
/// </summary>
@@ -175,6 +215,14 @@ public static RotationalSpeed FromMilliradiansPerSecond(double milliradiansperse
175215
return new RotationalSpeed((milliradianspersecond) * 1e-3d);
176216
}
177217

218+
/// <summary>
219+
/// Get RotationalSpeed from NanodegreesPerSecond.
220+
/// </summary>
221+
public static RotationalSpeed FromNanodegreesPerSecond(double nanodegreespersecond)
222+
{
223+
return new RotationalSpeed(((Math.PI/180)*nanodegreespersecond) * 1e-9d);
224+
}
225+
178226
/// <summary>
179227
/// Get RotationalSpeed from NanoradiansPerSecond.
180228
/// </summary>
@@ -224,10 +272,16 @@ public static RotationalSpeed From(double value, RotationalSpeedUnit fromUnit)
224272
return FromDeciradiansPerSecond(value);
225273
case RotationalSpeedUnit.DegreePerSecond:
226274
return FromDegreesPerSecond(value);
275+
case RotationalSpeedUnit.MicrodegreePerSecond:
276+
return FromMicrodegreesPerSecond(value);
227277
case RotationalSpeedUnit.MicroradianPerSecond:
228278
return FromMicroradiansPerSecond(value);
279+
case RotationalSpeedUnit.MillidegreePerSecond:
280+
return FromMillidegreesPerSecond(value);
229281
case RotationalSpeedUnit.MilliradianPerSecond:
230282
return FromMilliradiansPerSecond(value);
283+
case RotationalSpeedUnit.NanodegreePerSecond:
284+
return FromNanodegreesPerSecond(value);
231285
case RotationalSpeedUnit.NanoradianPerSecond:
232286
return FromNanoradiansPerSecond(value);
233287
case RotationalSpeedUnit.RadianPerSecond:
@@ -375,10 +429,16 @@ public double As(RotationalSpeedUnit unit)
375429
return DeciradiansPerSecond;
376430
case RotationalSpeedUnit.DegreePerSecond:
377431
return DegreesPerSecond;
432+
case RotationalSpeedUnit.MicrodegreePerSecond:
433+
return MicrodegreesPerSecond;
378434
case RotationalSpeedUnit.MicroradianPerSecond:
379435
return MicroradiansPerSecond;
436+
case RotationalSpeedUnit.MillidegreePerSecond:
437+
return MillidegreesPerSecond;
380438
case RotationalSpeedUnit.MilliradianPerSecond:
381439
return MilliradiansPerSecond;
440+
case RotationalSpeedUnit.NanodegreePerSecond:
441+
return NanodegreesPerSecond;
382442
case RotationalSpeedUnit.NanoradianPerSecond:
383443
return NanoradiansPerSecond;
384444
case RotationalSpeedUnit.RadianPerSecond:

UnitsNet/GeneratedCode/UnitSystem.Default.g.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1484,18 +1484,36 @@ private static readonly ReadOnlyCollection<UnitLocalization> DefaultLocalization
14841484
new AbbreviationsForCulture("en-US", "r/s"),
14851485
new AbbreviationsForCulture("ru-RU", "°/с"),
14861486
}),
1487+
new CulturesForEnumValue((int) RotationalSpeedUnit.MicrodegreePerSecond,
1488+
new[]
1489+
{
1490+
new AbbreviationsForCulture("en-US", "μr/s"),
1491+
new AbbreviationsForCulture("ru-RU", "μ°/с"),
1492+
}),
14871493
new CulturesForEnumValue((int) RotationalSpeedUnit.MicroradianPerSecond,
14881494
new[]
14891495
{
14901496
new AbbreviationsForCulture("en-US", "μrad/s"),
14911497
new AbbreviationsForCulture("ru-RU", "μрад/с"),
14921498
}),
1499+
new CulturesForEnumValue((int) RotationalSpeedUnit.MillidegreePerSecond,
1500+
new[]
1501+
{
1502+
new AbbreviationsForCulture("en-US", "mr/s"),
1503+
new AbbreviationsForCulture("ru-RU", "m°/с"),
1504+
}),
14931505
new CulturesForEnumValue((int) RotationalSpeedUnit.MilliradianPerSecond,
14941506
new[]
14951507
{
14961508
new AbbreviationsForCulture("en-US", "mrad/s"),
14971509
new AbbreviationsForCulture("ru-RU", "mрад/с"),
14981510
}),
1511+
new CulturesForEnumValue((int) RotationalSpeedUnit.NanodegreePerSecond,
1512+
new[]
1513+
{
1514+
new AbbreviationsForCulture("en-US", "nr/s"),
1515+
new AbbreviationsForCulture("ru-RU", "n°/с"),
1516+
}),
14991517
new CulturesForEnumValue((int) RotationalSpeedUnit.NanoradianPerSecond,
15001518
new[]
15011519
{

UnitsNet/Scripts/UnitDefinitions/RotationalSpeed.json

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,23 @@
2020
}
2121
]
2222
},
23-
{
24-
"SingularName": "DegreePerSecond",
25-
"PluralName": "DegreesPerSecond",
26-
"FromUnitToBaseFunc": "(Math.PI/180)*x",
27-
"FromBaseToUnitFunc": "(180/Math.PI)*x",
28-
"Localization": [
29-
{
30-
"Culture": "en-US",
31-
"Abbreviations": [ "r/s" ]
32-
},
33-
{
34-
"Culture": "ru-RU",
35-
"Abbreviations": [ "°/с" ]
36-
}
37-
]
38-
},
23+
{
24+
"SingularName": "DegreePerSecond",
25+
"PluralName": "DegreesPerSecond",
26+
"FromUnitToBaseFunc": "(Math.PI/180)*x",
27+
"FromBaseToUnitFunc": "(180/Math.PI)*x",
28+
"Prefixes": [ "Nano", "Micro", "Milli" ],
29+
"Localization": [
30+
{
31+
"Culture": "en-US",
32+
"Abbreviations": [ "r/s" ]
33+
},
34+
{
35+
"Culture": "ru-RU",
36+
"Abbreviations": [ "°/с" ]
37+
}
38+
]
39+
},
3940
{
4041
"SingularName": "RevolutionPerSecond",
4142
"PluralName": "RevolutionsPerSecond",

0 commit comments

Comments
 (0)