Skip to content

Commit 99bf265

Browse files
ebfortinangularsenÉtienne Fortin
authored
Allow NaN, Infinity values for quantities (#1289)
Add possibility to have double.NaN, double.NegativeInifinity and double.PositiveInifnity special values. --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]> Co-authored-by: Étienne Fortin <[email protected]>
1 parent ed1b6d6 commit 99bf265

File tree

240 files changed

+2618
-1431
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

240 files changed

+2618
-1431
lines changed

CodeGen/Generators/UnitsNetGen/QuantityGenerator.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,7 @@ private void GenerateInstanceConstructors()
177177
/// <exception cref=""ArgumentException"">If value is NaN or Infinity.</exception>
178178
public {_quantity.Name}({_quantity.ValueType} value, {_unitEnumName} unit)
179179
{{");
180-
Writer.WL(_quantity.ValueType == "double"
181-
? @"
182-
_value = Guard.EnsureValidNumber(value, nameof(value));"
183-
: @"
180+
Writer.WL(@"
184181
_value = value;");
185182
Writer.WL($@"
186183
_unit = unit;
@@ -202,10 +199,7 @@ private void GenerateInstanceConstructors()
202199
var firstUnitInfo = unitInfos.FirstOrDefault();
203200
");
204201

205-
Writer.WL(_quantity.ValueType == "double"
206-
? @"
207-
_value = Guard.EnsureValidNumber(value, nameof(value));"
208-
: @"
202+
Writer.WL(@"
209203
_value = value;");
210204
Writer.WL($@"
211205
_unit = firstUnitInfo?.Value ?? throw new ArgumentException(""No units were found for the given UnitSystem."", nameof(unitSystem));

CodeGen/Generators/UnitsNetGen/UnitTestBaseClassGenerator.cs

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -171,16 +171,21 @@ public void DefaultCtor_ReturnsQuantityWithZeroValueAndBaseUnit()
171171
");
172172
if (_quantity.ValueType == "double") Writer.WL($@"
173173
[Fact]
174-
public void Ctor_WithInfinityValue_ThrowsArgumentException()
174+
public void Ctor_WithInfinityValue_DoNotThrowsArgumentException()
175175
{{
176-
Assert.Throws<ArgumentException>(() => new {_quantity.Name}(double.PositiveInfinity, {_baseUnitFullName}));
177-
Assert.Throws<ArgumentException>(() => new {_quantity.Name}(double.NegativeInfinity, {_baseUnitFullName}));
176+
var exception1 = Record.Exception(() => new {_quantity.Name}(double.PositiveInfinity, {_baseUnitFullName}));
177+
var exception2 = Record.Exception(() => new {_quantity.Name}(double.NegativeInfinity, {_baseUnitFullName}));
178+
179+
Assert.Null(exception1);
180+
Assert.Null(exception2);
178181
}}
179182
180183
[Fact]
181-
public void Ctor_WithNaNValue_ThrowsArgumentException()
184+
public void Ctor_WithNaNValue_DoNotThrowsArgumentException()
182185
{{
183-
Assert.Throws<ArgumentException>(() => new {_quantity.Name}(double.NaN, {_baseUnitFullName}));
186+
var exception = Record.Exception(() => new {_quantity.Name}(double.NaN, {_baseUnitFullName}));
187+
188+
Assert.Null(exception);
184189
}}
185190
"); Writer.WL($@"
186191
@@ -248,16 +253,21 @@ public void From_ValueAndUnit_ReturnsQuantityWithSameValueAndUnit()
248253
");
249254
if (_quantity.ValueType == "double") Writer.WL($@"
250255
[Fact]
251-
public void From{_baseUnit.PluralName}_WithInfinityValue_ThrowsArgumentException()
256+
public void From{_baseUnit.PluralName}_WithInfinityValue_DoNotThrowsArgumentException()
252257
{{
253-
Assert.Throws<ArgumentException>(() => {_quantity.Name}.From{_baseUnit.PluralName}(double.PositiveInfinity));
254-
Assert.Throws<ArgumentException>(() => {_quantity.Name}.From{_baseUnit.PluralName}(double.NegativeInfinity));
258+
var exception1 = Record.Exception(() => {_quantity.Name}.From{_baseUnit.PluralName}(double.PositiveInfinity));
259+
var exception2 = Record.Exception(() => {_quantity.Name}.From{_baseUnit.PluralName}(double.NegativeInfinity));
260+
261+
Assert.Null(exception1);
262+
Assert.Null(exception2);
255263
}}
256264
257265
[Fact]
258-
public void From{_baseUnit.PluralName}_WithNanValue_ThrowsArgumentException()
266+
public void From{_baseUnit.PluralName}_WithNanValue_DoNotThrowsArgumentException()
259267
{{
260-
Assert.Throws<ArgumentException>(() => {_quantity.Name}.From{_baseUnit.PluralName}(double.NaN));
268+
var exception = Record.Exception(() => {_quantity.Name}.From{_baseUnit.PluralName}(double.NaN));
269+
270+
Assert.Null(exception);
261271
}}
262272
"); Writer.WL($@"
263273

UnitsNet.Tests/GeneratedCode/TestsBase/AbsorbedDoseOfIonizingRadiationTestsBase.g.cs

Lines changed: 20 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AccelerationTestsBase.g.cs

Lines changed: 20 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AmountOfSubstanceTestsBase.g.cs

Lines changed: 20 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AmplitudeRatioTestsBase.g.cs

Lines changed: 20 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.Tests/GeneratedCode/TestsBase/AngleTestsBase.g.cs

Lines changed: 20 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)