diff --git a/CodeGen/Generators/UnitsNetGen/UnitTestBaseClassGenerator.cs b/CodeGen/Generators/UnitsNetGen/UnitTestBaseClassGenerator.cs index b0c7b9a5d6..ea7dfc0f7a 100644 --- a/CodeGen/Generators/UnitsNetGen/UnitTestBaseClassGenerator.cs +++ b/CodeGen/Generators/UnitsNetGen/UnitTestBaseClassGenerator.cs @@ -545,6 +545,10 @@ public void ToString_NullProvider_EqualsCurrentUICulture() Assert.Equal(quantity.ToString(CultureInfo.CurrentUICulture, ""g""), quantity.ToString(null, ""g"")); }} +"); + if (!_quantity.Name.Equals("Scalar")) + { + Writer.WL($@" [Fact] public void Convert_ToBool_ThrowsInvalidCastException() @@ -552,6 +556,9 @@ public void Convert_ToBool_ThrowsInvalidCastException() var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0); Assert.Throws(() => Convert.ToBoolean(quantity)); }} +"); + } + Writer.WL($@" [Fact] public void Convert_ToByte_EqualsValueAsSameType() diff --git a/UnitsNet.Tests/CustomCode/ScalarTests.cs b/UnitsNet.Tests/CustomCode/ScalarTests.cs index 786b1d357d..26d4c53053 100644 --- a/UnitsNet.Tests/CustomCode/ScalarTests.cs +++ b/UnitsNet.Tests/CustomCode/ScalarTests.cs @@ -27,6 +27,18 @@ public class ScalarTests : ScalarTestsBase // Override properties in base class here protected override double AmountInOneAmount => 1; protected override bool SupportsSIUnitSystem => false; - + + [Theory] + [InlineData(0)] + [InlineData(1.0)] + [InlineData(-Math.PI)] + public void ImplicitCast_ToDouble_IsAmount(double amount) + { + var scalar = Scalar.FromAmount(amount); + double asDouble = scalar; + + Assert.Equal(asDouble, scalar.Amount); + } } + } diff --git a/UnitsNet.Tests/GeneratedCode/TestsBase/ScalarTestsBase.g.cs b/UnitsNet.Tests/GeneratedCode/TestsBase/ScalarTestsBase.g.cs index d01595760c..158cfae126 100644 --- a/UnitsNet.Tests/GeneratedCode/TestsBase/ScalarTestsBase.g.cs +++ b/UnitsNet.Tests/GeneratedCode/TestsBase/ScalarTestsBase.g.cs @@ -412,13 +412,6 @@ public void ToString_NullProvider_EqualsCurrentUICulture() } - [Fact] - public void Convert_ToBool_ThrowsInvalidCastException() - { - var quantity = Scalar.FromAmount(1.0); - Assert.Throws(() => Convert.ToBoolean(quantity)); - } - [Fact] public void Convert_ToByte_EqualsValueAsSameType() { diff --git a/UnitsNet/CustomCode/Quantities/Scalar.extra.cs b/UnitsNet/CustomCode/Quantities/Scalar.extra.cs new file mode 100644 index 0000000000..5832000401 --- /dev/null +++ b/UnitsNet/CustomCode/Quantities/Scalar.extra.cs @@ -0,0 +1,14 @@ +// Licensed under MIT No Attribution, see LICENSE file at the root. +// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet. + +namespace UnitsNet +{ + public partial struct Scalar + { + /// Defines an implicit conversion of a to a . + public static implicit operator double(Scalar scalar) + { + return scalar.Amount; + } + } +}