From 676a35932b33aea0cd9f9aa9729d72ba294cd33a Mon Sep 17 00:00:00 2001 From: lipchev Date: Fri, 3 Jan 2025 12:19:29 +0200 Subject: [PATCH 1/4] =?UTF-8?q?Changing=20the=20Dimensions=20and=20BaseUni?= =?UTF-8?q?t=20for=20the=20FuelEfficiency=20-=20BaseUnit=20changed=20from?= =?UTF-8?q?=20LiterPer100Kilometers=20(defaults=20to=20+Infinity)=20to=20K?= =?UTF-8?q?ilometersPerLiter=20(defaults=20to=200)=20-=20added=20the=20Met?= =?UTF-8?q?erPerCubicMeter=20(m/m=C2=B3)=20unit=20-=20updated=20the=20rele?= =?UTF-8?q?vant=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common/UnitDefinitions/FuelEfficiency.json | 105 ++++-- Common/UnitEnumValues.g.json | 3 +- .../Quantities/FuelEfficiency.g.cs | 32 +- .../Units/FuelEfficiencyUnit.g.cs | 1 + .../NumberToFuelEfficiencyExtensionsTest.g.cs | 4 + .../NumberToFuelEfficiencyExtensions.g.cs | 8 + .../CustomCode/FuelEfficiencyTests.cs | 21 +- .../TestsBase/FuelEfficiencyTestsBase.g.cs | 356 +++++++++++------- .../Quantities/FuelEfficiency.g.cs | 70 +++- .../Resources/FuelEfficiency.restext | 1 + .../Units/FuelEfficiencyUnit.g.cs | 1 + 11 files changed, 391 insertions(+), 211 deletions(-) diff --git a/Common/UnitDefinitions/FuelEfficiency.json b/Common/UnitDefinitions/FuelEfficiency.json index aa9c693d14..a212f973b1 100644 --- a/Common/UnitDefinitions/FuelEfficiency.json +++ b/Common/UnitDefinitions/FuelEfficiency.json @@ -1,55 +1,84 @@ { - "Name": "FuelEfficiency", - "BaseUnit": "LiterPer100Kilometers", - "XmlDocSummary": "Fuel efficiency is a form of thermal efficiency, meaning the ratio from effort to result of a process that converts chemical potential energy contained in a carrier (fuel) into kinetic energy or work. Fuel economy is stated as \"fuel consumption\" in liters per 100 kilometers (L/100 km). In countries using non-metric system, fuel economy is expressed in miles per gallon (mpg) (imperial galon or US galon).", - "XmlDocRemarks": "https://en.wikipedia.org/wiki/Fuel_efficiency", - "Units": [{ - "SingularName": "LiterPer100Kilometers", - "PluralName": "LitersPer100Kilometers", - "FromUnitToBaseFunc": "{x}", - "FromBaseToUnitFunc": "{x}", - "Localization": [{ + "Name": "FuelEfficiency", + "BaseUnit": "KilometerPerLiter", + "XmlDocSummary": "In the context of transport, fuel economy is the energy efficiency of a particular vehicle, given as a ratio of distance traveled per unit of fuel consumed. In most countries, using the metric system, fuel economy is stated as \"fuel consumption\" in liters per 100 kilometers (L/100 km) or kilometers per liter (km/L or kmpl). In countries using non-metric system, fuel economy is expressed in miles per gallon (mpg) (imperial galon or US galon).", + "XmlDocRemarks": "https://en.wikipedia.org/wiki/Fuel_efficiency", + "BaseDimensions": { + "L": -2 + }, + "Units": [ + { + "SingularName": "LiterPer100Kilometers", + "PluralName": "LitersPer100Kilometers", + "FromUnitToBaseFunc": "100 / {x}", + "FromBaseToUnitFunc": "100 / {x}", + "Localization": [ + { "Culture": "en-US", "Abbreviations": [ "l/100km" ] - }] - }, - { - "SingularName": "MilePerUsGallon", - "PluralName": "MilesPerUsGallon", - "FromUnitToBaseFunc": "(100 * 3.785411784) / (1.609344 * {x})", - "FromBaseToUnitFunc": "(100 * 3.785411784) / (1.609344 * {x})", - "Localization": [{ + } + ] + }, + { + "SingularName": "MilePerUsGallon", + "PluralName": "MilesPerUsGallon", + "FromUnitToBaseFunc": "{x} * 1.609344 / 3.785411784", + "FromBaseToUnitFunc": "{x} * 3.785411784 / 1.609344", + "Localization": [ + { "Culture": "en-US", "Abbreviations": [ "mpg (U.S.)" ] - }] - }, - { - "SingularName": "MilePerUkGallon", - "PluralName": "MilesPerUkGallon", - "FromUnitToBaseFunc": "(100 * 4.54609188) / (1.609344 * {x})", - "FromBaseToUnitFunc": "(100 * 4.54609188) / (1.609344 * {x})", - "Localization": [{ + } + ] + }, + { + "SingularName": "MilePerUkGallon", + "PluralName": "MilesPerUkGallon", + "FromUnitToBaseFunc": "{x} * 1.609344 / 4.54609", + "FromBaseToUnitFunc": "{x} * 4.54609 / 1.609344", + "Localization": [ + { "Culture": "en-US", "Abbreviations": [ "mpg (imp.)" ] - }] - }, - { - "SingularName": "KilometerPerLiter", - "PluralName": "KilometersPerLiter", - "FromUnitToBaseFunc": "100 / {x}", - "FromBaseToUnitFunc": "100 / {x}", - "Localization": [{ + } + ] + }, + { + "SingularName": "KilometerPerLiter", + "PluralName": "KilometersPerLiter", + "FromUnitToBaseFunc": "{x}", + "FromBaseToUnitFunc": "{x}", + "Localization": [ + { "Culture": "en-US", "Abbreviations": [ "km/l" ] - }] - } - ] - } \ No newline at end of file + } + ] + }, + { + "SingularName": "MeterPerCubicMeter", + "PluralName": "MetersPerCubicMeter", + "BaseUnits": { + "L": "Meter" + }, + "FromUnitToBaseFunc": "{x} / 1e6", + "FromBaseToUnitFunc": "{x} * 1e6", + "Localization": [ + { + "Culture": "en-US", + "Abbreviations": [ + "m/m³" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Common/UnitEnumValues.g.json b/Common/UnitEnumValues.g.json index aa5b0b6558..877e0b94fe 100644 --- a/Common/UnitEnumValues.g.json +++ b/Common/UnitEnumValues.g.json @@ -533,7 +533,8 @@ "KilometerPerLiter": 1, "LiterPer100Kilometers": 2, "MilePerUkGallon": 3, - "MilePerUsGallon": 4 + "MilePerUsGallon": 4, + "MeterPerCubicMeter": 7 }, "HeatFlux": { "BtuPerHourSquareFoot": 1, diff --git a/UnitsNet.NanoFramework/GeneratedCode/Quantities/FuelEfficiency.g.cs b/UnitsNet.NanoFramework/GeneratedCode/Quantities/FuelEfficiency.g.cs index d4d29d5e42..22d87bd693 100644 --- a/UnitsNet.NanoFramework/GeneratedCode/Quantities/FuelEfficiency.g.cs +++ b/UnitsNet.NanoFramework/GeneratedCode/Quantities/FuelEfficiency.g.cs @@ -24,7 +24,7 @@ namespace UnitsNet { /// /// - /// Fuel efficiency is a form of thermal efficiency, meaning the ratio from effort to result of a process that converts chemical potential energy contained in a carrier (fuel) into kinetic energy or work. Fuel economy is stated as "fuel consumption" in liters per 100 kilometers (L/100 km). In countries using non-metric system, fuel economy is expressed in miles per gallon (mpg) (imperial galon or US galon). + /// In the context of transport, fuel economy is the energy efficiency of a particular vehicle, given as a ratio of distance traveled per unit of fuel consumed. In most countries, using the metric system, fuel economy is stated as "fuel consumption" in liters per 100 kilometers (L/100 km) or kilometers per liter (km/L or kmpl). In countries using non-metric system, fuel economy is expressed in miles per gallon (mpg) (imperial galon or US galon). /// /// /// https://en.wikipedia.org/wiki/Fuel_efficiency @@ -63,7 +63,7 @@ public FuelEfficiency(double value, FuelEfficiencyUnit unit) /// /// The base unit of FuelEfficiency, which is Second. All conversions go via this value. /// - public static FuelEfficiencyUnit BaseUnit { get; } = FuelEfficiencyUnit.LiterPer100Kilometers; + public static FuelEfficiencyUnit BaseUnit { get; } = FuelEfficiencyUnit.KilometerPerLiter; /// /// Represents the largest possible value of FuelEfficiency. @@ -91,6 +91,11 @@ public FuelEfficiency(double value, FuelEfficiencyUnit unit) /// public double LitersPer100Kilometers => As(FuelEfficiencyUnit.LiterPer100Kilometers); + /// + /// Gets a value of this quantity converted into + /// + public double MetersPerCubicMeter => As(FuelEfficiencyUnit.MeterPerCubicMeter); + /// /// Gets a value of this quantity converted into /// @@ -115,6 +120,11 @@ public FuelEfficiency(double value, FuelEfficiencyUnit unit) /// public static FuelEfficiency FromLitersPer100Kilometers(double litersper100kilometers) => new FuelEfficiency(litersper100kilometers, FuelEfficiencyUnit.LiterPer100Kilometers); + /// + /// Creates a from . + /// + public static FuelEfficiency FromMetersPerCubicMeter(double meterspercubicmeter) => new FuelEfficiency(meterspercubicmeter, FuelEfficiencyUnit.MeterPerCubicMeter); + /// /// Creates a from . /// @@ -165,10 +175,11 @@ private double GetValueInBaseUnit() { return Unit switch { - FuelEfficiencyUnit.KilometerPerLiter => 100 / _value, - FuelEfficiencyUnit.LiterPer100Kilometers => _value, - FuelEfficiencyUnit.MilePerUkGallon => (100 * 4.54609188) / (1.609344 * _value), - FuelEfficiencyUnit.MilePerUsGallon => (100 * 3.785411784) / (1.609344 * _value), + FuelEfficiencyUnit.KilometerPerLiter => _value, + FuelEfficiencyUnit.LiterPer100Kilometers => 100 / _value, + FuelEfficiencyUnit.MeterPerCubicMeter => _value / 1e6, + FuelEfficiencyUnit.MilePerUkGallon => _value * 1.609344 / 4.54609, + FuelEfficiencyUnit.MilePerUsGallon => _value * 1.609344 / 3.785411784, _ => throw new NotImplementedException($"Can not convert {Unit} to base units.") }; } @@ -182,10 +193,11 @@ private double GetValueAs(FuelEfficiencyUnit unit) return unit switch { - FuelEfficiencyUnit.KilometerPerLiter => 100 / baseUnitValue, - FuelEfficiencyUnit.LiterPer100Kilometers => baseUnitValue, - FuelEfficiencyUnit.MilePerUkGallon => (100 * 4.54609188) / (1.609344 * baseUnitValue), - FuelEfficiencyUnit.MilePerUsGallon => (100 * 3.785411784) / (1.609344 * baseUnitValue), + FuelEfficiencyUnit.KilometerPerLiter => baseUnitValue, + FuelEfficiencyUnit.LiterPer100Kilometers => 100 / baseUnitValue, + FuelEfficiencyUnit.MeterPerCubicMeter => baseUnitValue * 1e6, + FuelEfficiencyUnit.MilePerUkGallon => baseUnitValue * 4.54609 / 1.609344, + FuelEfficiencyUnit.MilePerUsGallon => baseUnitValue * 3.785411784 / 1.609344, _ => throw new NotImplementedException($"Can not convert {Unit} to {unit}.") }; } diff --git a/UnitsNet.NanoFramework/GeneratedCode/Units/FuelEfficiencyUnit.g.cs b/UnitsNet.NanoFramework/GeneratedCode/Units/FuelEfficiencyUnit.g.cs index 24491dee95..872f1e2807 100644 --- a/UnitsNet.NanoFramework/GeneratedCode/Units/FuelEfficiencyUnit.g.cs +++ b/UnitsNet.NanoFramework/GeneratedCode/Units/FuelEfficiencyUnit.g.cs @@ -27,6 +27,7 @@ public enum FuelEfficiencyUnit { KilometerPerLiter = 1, LiterPer100Kilometers = 2, + MeterPerCubicMeter = 7, MilePerUkGallon = 3, MilePerUsGallon = 4, } diff --git a/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToFuelEfficiencyExtensionsTest.g.cs b/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToFuelEfficiencyExtensionsTest.g.cs index c721dbcb09..bc4ade9b6d 100644 --- a/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToFuelEfficiencyExtensionsTest.g.cs +++ b/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToFuelEfficiencyExtensionsTest.g.cs @@ -32,6 +32,10 @@ public void NumberToKilometersPerLiterTest() => public void NumberToLitersPer100KilometersTest() => Assert.Equal(FuelEfficiency.FromLitersPer100Kilometers(2), 2.LitersPer100Kilometers()); + [Fact] + public void NumberToMetersPerCubicMeterTest() => + Assert.Equal(FuelEfficiency.FromMetersPerCubicMeter(2), 2.MetersPerCubicMeter()); + [Fact] public void NumberToMilesPerUkGallonTest() => Assert.Equal(FuelEfficiency.FromMilesPerUkGallon(2), 2.MilesPerUkGallon()); diff --git a/UnitsNet.NumberExtensions/GeneratedCode/NumberToFuelEfficiencyExtensions.g.cs b/UnitsNet.NumberExtensions/GeneratedCode/NumberToFuelEfficiencyExtensions.g.cs index c2db1d3139..237fc6245f 100644 --- a/UnitsNet.NumberExtensions/GeneratedCode/NumberToFuelEfficiencyExtensions.g.cs +++ b/UnitsNet.NumberExtensions/GeneratedCode/NumberToFuelEfficiencyExtensions.g.cs @@ -48,6 +48,14 @@ public static FuelEfficiency LitersPer100Kilometers(this T value) #endif => FuelEfficiency.FromLitersPer100Kilometers(Convert.ToDouble(value)); + /// + public static FuelEfficiency MetersPerCubicMeter(this T value) + where T : notnull +#if NET7_0_OR_GREATER + , INumber +#endif + => FuelEfficiency.FromMetersPerCubicMeter(Convert.ToDouble(value)); + /// public static FuelEfficiency MilesPerUkGallon(this T value) where T : notnull diff --git a/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs b/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs index 31da379824..a66f9d6e11 100644 --- a/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs +++ b/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs @@ -17,25 +17,22 @@ // 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. -using System; -using UnitsNet.Units; using Xunit; namespace UnitsNet.Tests.CustomCode { public class FuelEfficiencyTests : FuelEfficiencyTestsBase { - protected override bool SupportsSIUnitSystem => false; - protected override double KilometersPerLiterInOneLiterPer100Kilometers => 100; - protected override double LitersPer100KilometersInOneLiterPer100Kilometers => 1; - protected override double MilesPerUkGallonInOneLiterPer100Kilometers => 282.4809363; - protected override double MilesPerUsGallonInOneLiterPer100Kilometers => 235.2145833; - - [Theory(Skip = "Conversion from 0 km/L results in infinity")] - [MemberData(nameof(UnitTypes))] - public override void ToUnit_FromDefaultQuantity_ReturnsQuantityWithGivenUnit(FuelEfficiencyUnit unit) + protected override double MetersPerCubicMeterInOneKilometerPerLiter => 1e6; + protected override double KilometersPerLiterInOneKilometerPerLiter => 1; + protected override double LitersPer100KilometersInOneKilometerPerLiter => 100; + protected override double MilesPerUkGallonInOneKilometerPerLiter => 2.824809363318222; + protected override double MilesPerUsGallonInOneKilometerPerLiter => 2.352145833333333; + + [Fact(Skip = "See about changing this to MetersPerCubicMeter")] + public override void BaseUnit_HasSIBase() { - base.ToUnit_FromDefaultQuantity_ReturnsQuantityWithGivenUnit(unit); + base.BaseUnit_HasSIBase(); } } } diff --git a/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs b/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs index 57340bb920..1a03f8dffd 100644 --- a/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs +++ b/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs @@ -39,14 +39,16 @@ namespace UnitsNet.Tests // ReSharper disable once PartialTypeWithSinglePart public abstract partial class FuelEfficiencyTestsBase : QuantityTestsBase { - protected abstract double KilometersPerLiterInOneLiterPer100Kilometers { get; } - protected abstract double LitersPer100KilometersInOneLiterPer100Kilometers { get; } - protected abstract double MilesPerUkGallonInOneLiterPer100Kilometers { get; } - protected abstract double MilesPerUsGallonInOneLiterPer100Kilometers { get; } + protected abstract double KilometersPerLiterInOneKilometerPerLiter { get; } + protected abstract double LitersPer100KilometersInOneKilometerPerLiter { get; } + protected abstract double MetersPerCubicMeterInOneKilometerPerLiter { get; } + protected abstract double MilesPerUkGallonInOneKilometerPerLiter { get; } + protected abstract double MilesPerUsGallonInOneKilometerPerLiter { get; } // ReSharper disable VirtualMemberNeverOverriden.Global protected virtual double KilometersPerLiterTolerance { get { return 1e-5; } } protected virtual double LitersPer100KilometersTolerance { get { return 1e-5; } } + protected virtual double MetersPerCubicMeterTolerance { get { return 1e-5; } } protected virtual double MilesPerUkGallonTolerance { get { return 1e-5; } } protected virtual double MilesPerUsGallonTolerance { get { return 1e-5; } } // ReSharper restore VirtualMemberNeverOverriden.Global @@ -55,10 +57,11 @@ public abstract partial class FuelEfficiencyTestsBase : QuantityTestsBase { return unit switch { - FuelEfficiencyUnit.KilometerPerLiter => (KilometersPerLiterInOneLiterPer100Kilometers, KilometersPerLiterTolerance), - FuelEfficiencyUnit.LiterPer100Kilometers => (LitersPer100KilometersInOneLiterPer100Kilometers, LitersPer100KilometersTolerance), - FuelEfficiencyUnit.MilePerUkGallon => (MilesPerUkGallonInOneLiterPer100Kilometers, MilesPerUkGallonTolerance), - FuelEfficiencyUnit.MilePerUsGallon => (MilesPerUsGallonInOneLiterPer100Kilometers, MilesPerUsGallonTolerance), + FuelEfficiencyUnit.KilometerPerLiter => (KilometersPerLiterInOneKilometerPerLiter, KilometersPerLiterTolerance), + FuelEfficiencyUnit.LiterPer100Kilometers => (LitersPer100KilometersInOneKilometerPerLiter, LitersPer100KilometersTolerance), + FuelEfficiencyUnit.MeterPerCubicMeter => (MetersPerCubicMeterInOneKilometerPerLiter, MetersPerCubicMeterTolerance), + FuelEfficiencyUnit.MilePerUkGallon => (MilesPerUkGallonInOneKilometerPerLiter, MilesPerUkGallonTolerance), + FuelEfficiencyUnit.MilePerUsGallon => (MilesPerUsGallonInOneKilometerPerLiter, MilesPerUsGallonTolerance), _ => throw new NotSupportedException() }; } @@ -67,6 +70,7 @@ public abstract partial class FuelEfficiencyTestsBase : QuantityTestsBase { new object[] { FuelEfficiencyUnit.KilometerPerLiter }, new object[] { FuelEfficiencyUnit.LiterPer100Kilometers }, + new object[] { FuelEfficiencyUnit.MeterPerCubicMeter }, new object[] { FuelEfficiencyUnit.MilePerUkGallon }, new object[] { FuelEfficiencyUnit.MilePerUsGallon }, }; @@ -76,14 +80,14 @@ public void DefaultCtor_ReturnsQuantityWithZeroValueAndBaseUnit() { var quantity = new FuelEfficiency(); Assert.Equal(0, quantity.Value); - Assert.Equal(FuelEfficiencyUnit.LiterPer100Kilometers, quantity.Unit); + Assert.Equal(FuelEfficiencyUnit.KilometerPerLiter, quantity.Unit); } [Fact] public void Ctor_WithInfinityValue_DoNotThrowsArgumentException() { - var exception1 = Record.Exception(() => new FuelEfficiency(double.PositiveInfinity, FuelEfficiencyUnit.LiterPer100Kilometers)); - var exception2 = Record.Exception(() => new FuelEfficiency(double.NegativeInfinity, FuelEfficiencyUnit.LiterPer100Kilometers)); + var exception1 = Record.Exception(() => new FuelEfficiency(double.PositiveInfinity, FuelEfficiencyUnit.KilometerPerLiter)); + var exception2 = Record.Exception(() => new FuelEfficiency(double.NegativeInfinity, FuelEfficiencyUnit.KilometerPerLiter)); Assert.Null(exception1); Assert.Null(exception2); @@ -92,15 +96,36 @@ public void Ctor_WithInfinityValue_DoNotThrowsArgumentException() [Fact] public void Ctor_WithNaNValue_DoNotThrowsArgumentException() { - var exception = Record.Exception(() => new FuelEfficiency(double.NaN, FuelEfficiencyUnit.LiterPer100Kilometers)); + var exception = Record.Exception(() => new FuelEfficiency(double.NaN, FuelEfficiencyUnit.KilometerPerLiter)); Assert.Null(exception); } + [Fact] + public void Ctor_NullAsUnitSystem_ThrowsArgumentNullException() + { + Assert.Throws(() => new FuelEfficiency(value: 1, unitSystem: null)); + } + + [Fact] + public virtual void Ctor_SIUnitSystem_ReturnsQuantityWithSIUnits() + { + var quantity = new FuelEfficiency(value: 1, unitSystem: UnitSystem.SI); + Assert.Equal(1, quantity.Value); + Assert.True(quantity.QuantityInfo.UnitInfos.First(x => x.Value == quantity.Unit).BaseUnits.IsSubsetOf(UnitSystem.SI.BaseUnits)); + } + + [Fact] + public void Ctor_UnitSystem_ThrowsArgumentExceptionIfNotSupported() + { + var unsupportedUnitSystem = new UnitSystem(UnsupportedBaseUnits); + Assert.Throws(() => new FuelEfficiency(value: 1, unitSystem: unsupportedUnitSystem)); + } + [Fact] public void FuelEfficiency_QuantityInfo_ReturnsQuantityInfoDescribingQuantity() { - var quantity = new FuelEfficiency(1, FuelEfficiencyUnit.LiterPer100Kilometers); + var quantity = new FuelEfficiency(1, FuelEfficiencyUnit.KilometerPerLiter); QuantityInfo quantityInfo = quantity.QuantityInfo; @@ -112,13 +137,14 @@ public void FuelEfficiency_QuantityInfo_ReturnsQuantityInfoDescribingQuantity() } [Fact] - public void LiterPer100KilometersToFuelEfficiencyUnits() + public void KilometerPerLiterToFuelEfficiencyUnits() { - FuelEfficiency literper100kilometers = FuelEfficiency.FromLitersPer100Kilometers(1); - AssertEx.EqualTolerance(KilometersPerLiterInOneLiterPer100Kilometers, literper100kilometers.KilometersPerLiter, KilometersPerLiterTolerance); - AssertEx.EqualTolerance(LitersPer100KilometersInOneLiterPer100Kilometers, literper100kilometers.LitersPer100Kilometers, LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(MilesPerUkGallonInOneLiterPer100Kilometers, literper100kilometers.MilesPerUkGallon, MilesPerUkGallonTolerance); - AssertEx.EqualTolerance(MilesPerUsGallonInOneLiterPer100Kilometers, literper100kilometers.MilesPerUsGallon, MilesPerUsGallonTolerance); + FuelEfficiency kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); + AssertEx.EqualTolerance(KilometersPerLiterInOneKilometerPerLiter, kilometerperliter.KilometersPerLiter, KilometersPerLiterTolerance); + AssertEx.EqualTolerance(LitersPer100KilometersInOneKilometerPerLiter, kilometerperliter.LitersPer100Kilometers, LitersPer100KilometersTolerance); + AssertEx.EqualTolerance(MetersPerCubicMeterInOneKilometerPerLiter, kilometerperliter.MetersPerCubicMeter, MetersPerCubicMeterTolerance); + AssertEx.EqualTolerance(MilesPerUkGallonInOneKilometerPerLiter, kilometerperliter.MilesPerUkGallon, MilesPerUkGallonTolerance); + AssertEx.EqualTolerance(MilesPerUsGallonInOneKilometerPerLiter, kilometerperliter.MilesPerUsGallon, MilesPerUsGallonTolerance); } [Fact] @@ -132,30 +158,34 @@ public void From_ValueAndUnit_ReturnsQuantityWithSameValueAndUnit() AssertEx.EqualTolerance(1, quantity01.LitersPer100Kilometers, LitersPer100KilometersTolerance); Assert.Equal(FuelEfficiencyUnit.LiterPer100Kilometers, quantity01.Unit); - var quantity02 = FuelEfficiency.From(1, FuelEfficiencyUnit.MilePerUkGallon); - AssertEx.EqualTolerance(1, quantity02.MilesPerUkGallon, MilesPerUkGallonTolerance); - Assert.Equal(FuelEfficiencyUnit.MilePerUkGallon, quantity02.Unit); + var quantity02 = FuelEfficiency.From(1, FuelEfficiencyUnit.MeterPerCubicMeter); + AssertEx.EqualTolerance(1, quantity02.MetersPerCubicMeter, MetersPerCubicMeterTolerance); + Assert.Equal(FuelEfficiencyUnit.MeterPerCubicMeter, quantity02.Unit); - var quantity03 = FuelEfficiency.From(1, FuelEfficiencyUnit.MilePerUsGallon); - AssertEx.EqualTolerance(1, quantity03.MilesPerUsGallon, MilesPerUsGallonTolerance); - Assert.Equal(FuelEfficiencyUnit.MilePerUsGallon, quantity03.Unit); + var quantity03 = FuelEfficiency.From(1, FuelEfficiencyUnit.MilePerUkGallon); + AssertEx.EqualTolerance(1, quantity03.MilesPerUkGallon, MilesPerUkGallonTolerance); + Assert.Equal(FuelEfficiencyUnit.MilePerUkGallon, quantity03.Unit); + + var quantity04 = FuelEfficiency.From(1, FuelEfficiencyUnit.MilePerUsGallon); + AssertEx.EqualTolerance(1, quantity04.MilesPerUsGallon, MilesPerUsGallonTolerance); + Assert.Equal(FuelEfficiencyUnit.MilePerUsGallon, quantity04.Unit); } [Fact] - public void FromLitersPer100Kilometers_WithInfinityValue_DoNotThrowsArgumentException() + public void FromKilometersPerLiter_WithInfinityValue_DoNotThrowsArgumentException() { - var exception1 = Record.Exception(() => FuelEfficiency.FromLitersPer100Kilometers(double.PositiveInfinity)); - var exception2 = Record.Exception(() => FuelEfficiency.FromLitersPer100Kilometers(double.NegativeInfinity)); + var exception1 = Record.Exception(() => FuelEfficiency.FromKilometersPerLiter(double.PositiveInfinity)); + var exception2 = Record.Exception(() => FuelEfficiency.FromKilometersPerLiter(double.NegativeInfinity)); Assert.Null(exception1); Assert.Null(exception2); } [Fact] - public void FromLitersPer100Kilometers_WithNanValue_DoNotThrowsArgumentException() + public void FromKilometersPerLiter_WithNanValue_DoNotThrowsArgumentException() { - var exception = Record.Exception(() => FuelEfficiency.FromLitersPer100Kilometers(double.NaN)); + var exception = Record.Exception(() => FuelEfficiency.FromKilometersPerLiter(double.NaN)); Assert.Null(exception); } @@ -163,21 +193,30 @@ public void FromLitersPer100Kilometers_WithNanValue_DoNotThrowsArgumentException [Fact] public void As() { - var literper100kilometers = FuelEfficiency.FromLitersPer100Kilometers(1); - AssertEx.EqualTolerance(KilometersPerLiterInOneLiterPer100Kilometers, literper100kilometers.As(FuelEfficiencyUnit.KilometerPerLiter), KilometersPerLiterTolerance); - AssertEx.EqualTolerance(LitersPer100KilometersInOneLiterPer100Kilometers, literper100kilometers.As(FuelEfficiencyUnit.LiterPer100Kilometers), LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(MilesPerUkGallonInOneLiterPer100Kilometers, literper100kilometers.As(FuelEfficiencyUnit.MilePerUkGallon), MilesPerUkGallonTolerance); - AssertEx.EqualTolerance(MilesPerUsGallonInOneLiterPer100Kilometers, literper100kilometers.As(FuelEfficiencyUnit.MilePerUsGallon), MilesPerUsGallonTolerance); + var kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); + AssertEx.EqualTolerance(KilometersPerLiterInOneKilometerPerLiter, kilometerperliter.As(FuelEfficiencyUnit.KilometerPerLiter), KilometersPerLiterTolerance); + AssertEx.EqualTolerance(LitersPer100KilometersInOneKilometerPerLiter, kilometerperliter.As(FuelEfficiencyUnit.LiterPer100Kilometers), LitersPer100KilometersTolerance); + AssertEx.EqualTolerance(MetersPerCubicMeterInOneKilometerPerLiter, kilometerperliter.As(FuelEfficiencyUnit.MeterPerCubicMeter), MetersPerCubicMeterTolerance); + AssertEx.EqualTolerance(MilesPerUkGallonInOneKilometerPerLiter, kilometerperliter.As(FuelEfficiencyUnit.MilePerUkGallon), MilesPerUkGallonTolerance); + AssertEx.EqualTolerance(MilesPerUsGallonInOneKilometerPerLiter, kilometerperliter.As(FuelEfficiencyUnit.MilePerUsGallon), MilesPerUsGallonTolerance); + } + + [Fact] + public virtual void BaseUnit_HasSIBase() + { + var baseUnitInfo = FuelEfficiency.Info.BaseUnitInfo; + Assert.True(baseUnitInfo.BaseUnits.IsSubsetOf(UnitSystem.SI.BaseUnits)); } [Fact] - public void As_UnitSystem_ReturnsValueInDimensionlessUnit() + public virtual void As_UnitSystem_SI_ReturnsQuantityInSIUnits() { - var quantity = new FuelEfficiency(value: 1, unit: FuelEfficiencyUnit.LiterPer100Kilometers); + var quantity = new FuelEfficiency(value: 1, unit: FuelEfficiency.BaseUnit); + var expectedValue = quantity.As(FuelEfficiency.Info.GetDefaultUnit(UnitSystem.SI)); var convertedValue = quantity.As(UnitSystem.SI); - - Assert.Equal(quantity.Value, convertedValue); + + Assert.Equal(expectedValue, convertedValue); } [Fact] @@ -189,32 +228,44 @@ public void As_UnitSystem_ThrowsArgumentNullExceptionIfNull() } [Fact] - public void ToUnitSystem_ReturnsValueInDimensionlessUnit() + public void As_UnitSystem_ThrowsArgumentExceptionIfNotSupported() + { + var quantity = new FuelEfficiency(value: 1, unit: FuelEfficiency.BaseUnit); + var unsupportedUnitSystem = new UnitSystem(UnsupportedBaseUnits); + Assert.Throws(() => quantity.As(unsupportedUnitSystem)); + } + + [Fact] + public virtual void ToUnit_UnitSystem_SI_ReturnsQuantityInSIUnits() { + var quantity = new FuelEfficiency(value: 1, unit: FuelEfficiency.BaseUnit); + var expectedUnit = FuelEfficiency.Info.GetDefaultUnit(UnitSystem.SI); + var expectedValue = quantity.As(expectedUnit); + Assert.Multiple(() => { - var quantity = new FuelEfficiency(value: 1, unit: FuelEfficiencyUnit.LiterPer100Kilometers); + FuelEfficiency quantityToConvert = quantity; - FuelEfficiency convertedQuantity = quantity.ToUnit(UnitSystem.SI); + FuelEfficiency convertedQuantity = quantityToConvert.ToUnit(UnitSystem.SI); - Assert.Equal(FuelEfficiencyUnit.LiterPer100Kilometers, convertedQuantity.Unit); - Assert.Equal(quantity.Value, convertedQuantity.Value); + Assert.Equal(expectedUnit, convertedQuantity.Unit); + Assert.Equal(expectedValue, convertedQuantity.Value); }, () => { - IQuantity quantity = new FuelEfficiency(value: 1, unit: FuelEfficiencyUnit.LiterPer100Kilometers); + IQuantity quantityToConvert = quantity; - IQuantity convertedQuantity = quantity.ToUnit(UnitSystem.SI); + IQuantity convertedQuantity = quantityToConvert.ToUnit(UnitSystem.SI); - Assert.Equal(FuelEfficiencyUnit.LiterPer100Kilometers, convertedQuantity.Unit); - Assert.Equal(quantity.Value, convertedQuantity.Value); + Assert.Equal(expectedUnit, convertedQuantity.Unit); + Assert.Equal(expectedValue, convertedQuantity.Value); }, () => { - IQuantity quantity = new FuelEfficiency(value: 1, unit: FuelEfficiencyUnit.LiterPer100Kilometers); + IQuantity quantityToConvert = quantity; - IQuantity convertedQuantity = quantity.ToUnit(UnitSystem.SI); + IQuantity convertedQuantity = quantityToConvert.ToUnit(UnitSystem.SI); - Assert.Equal(FuelEfficiencyUnit.LiterPer100Kilometers, convertedQuantity.Unit); - Assert.Equal(quantity.Value, convertedQuantity.Value); + Assert.Equal(expectedUnit, convertedQuantity.Unit); + Assert.Equal(expectedValue, convertedQuantity.Value); }); } @@ -237,6 +288,25 @@ public void ToUnit_UnitSystem_ThrowsArgumentNullExceptionIfNull() }); } + [Fact] + public void ToUnit_UnitSystem_ThrowsArgumentExceptionIfNotSupported() + { + var unsupportedUnitSystem = new UnitSystem(UnsupportedBaseUnits); + Assert.Multiple(() => + { + var quantity = new FuelEfficiency(value: 1, unit: FuelEfficiency.BaseUnit); + Assert.Throws(() => quantity.ToUnit(unsupportedUnitSystem)); + }, () => + { + IQuantity quantity = new FuelEfficiency(value: 1, unit: FuelEfficiency.BaseUnit); + Assert.Throws(() => quantity.ToUnit(unsupportedUnitSystem)); + }, () => + { + IQuantity quantity = new FuelEfficiency(value: 1, unit: FuelEfficiency.BaseUnit); + Assert.Throws(() => quantity.ToUnit(unsupportedUnitSystem)); + }); + } + [Fact] public void Parse() { @@ -254,6 +324,13 @@ public void Parse() Assert.Equal(FuelEfficiencyUnit.LiterPer100Kilometers, parsed.Unit); } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } + try + { + var parsed = FuelEfficiency.Parse("1 m/m³", CultureInfo.GetCultureInfo("en-US")); + AssertEx.EqualTolerance(1, parsed.MetersPerCubicMeter, MetersPerCubicMeterTolerance); + Assert.Equal(FuelEfficiencyUnit.MeterPerCubicMeter, parsed.Unit); + } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } + try { var parsed = FuelEfficiency.Parse("1 mpg (imp.)", CultureInfo.GetCultureInfo("en-US")); @@ -285,6 +362,12 @@ public void TryParse() Assert.Equal(FuelEfficiencyUnit.LiterPer100Kilometers, parsed.Unit); } + { + Assert.True(FuelEfficiency.TryParse("1 m/m³", CultureInfo.GetCultureInfo("en-US"), out var parsed)); + AssertEx.EqualTolerance(1, parsed.MetersPerCubicMeter, MetersPerCubicMeterTolerance); + Assert.Equal(FuelEfficiencyUnit.MeterPerCubicMeter, parsed.Unit); + } + { Assert.True(FuelEfficiency.TryParse("1 mpg (imp.)", CultureInfo.GetCultureInfo("en-US"), out var parsed)); AssertEx.EqualTolerance(1, parsed.MilesPerUkGallon, MilesPerUkGallonTolerance); @@ -302,6 +385,7 @@ public void TryParse() [Theory] [InlineData("km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] + [InlineData("m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void ParseUnit_WithUsEnglishCurrentCulture(string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -315,6 +399,7 @@ public void ParseUnit_WithUsEnglishCurrentCulture(string abbreviation, FuelEffic [Theory] [InlineData("km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] + [InlineData("m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void ParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -328,6 +413,7 @@ public void ParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(string [Theory] [InlineData("en-US", "km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("en-US", "l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] + [InlineData("en-US", "m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("en-US", "mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("en-US", "mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void ParseUnit_WithCurrentCulture(string culture, string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -340,6 +426,7 @@ public void ParseUnit_WithCurrentCulture(string culture, string abbreviation, Fu [Theory] [InlineData("en-US", "km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("en-US", "l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] + [InlineData("en-US", "m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("en-US", "mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("en-US", "mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void ParseUnit_WithCulture(string culture, string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -351,6 +438,7 @@ public void ParseUnit_WithCulture(string culture, string abbreviation, FuelEffic [Theory] [InlineData("km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] + [InlineData("m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void TryParseUnit_WithUsEnglishCurrentCulture(string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -364,6 +452,7 @@ public void TryParseUnit_WithUsEnglishCurrentCulture(string abbreviation, FuelEf [Theory] [InlineData("km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] + [InlineData("m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void TryParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -377,6 +466,7 @@ public void TryParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(stri [Theory] [InlineData("en-US", "km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("en-US", "l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] + [InlineData("en-US", "m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("en-US", "mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("en-US", "mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void TryParseUnit_WithCurrentCulture(string culture, string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -389,6 +479,7 @@ public void TryParseUnit_WithCurrentCulture(string culture, string abbreviation, [Theory] [InlineData("en-US", "km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("en-US", "l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] + [InlineData("en-US", "m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("en-US", "mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("en-US", "mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void TryParseUnit_WithCulture(string culture, string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -442,71 +533,72 @@ public virtual void ToUnit_FromDefaultQuantity_ReturnsQuantityWithGivenUnit(Fuel [Fact] public void ConversionRoundTrip() { - FuelEfficiency literper100kilometers = FuelEfficiency.FromLitersPer100Kilometers(1); - AssertEx.EqualTolerance(1, FuelEfficiency.FromKilometersPerLiter(literper100kilometers.KilometersPerLiter).LitersPer100Kilometers, KilometersPerLiterTolerance); - AssertEx.EqualTolerance(1, FuelEfficiency.FromLitersPer100Kilometers(literper100kilometers.LitersPer100Kilometers).LitersPer100Kilometers, LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(1, FuelEfficiency.FromMilesPerUkGallon(literper100kilometers.MilesPerUkGallon).LitersPer100Kilometers, MilesPerUkGallonTolerance); - AssertEx.EqualTolerance(1, FuelEfficiency.FromMilesPerUsGallon(literper100kilometers.MilesPerUsGallon).LitersPer100Kilometers, MilesPerUsGallonTolerance); + FuelEfficiency kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); + AssertEx.EqualTolerance(1, FuelEfficiency.FromKilometersPerLiter(kilometerperliter.KilometersPerLiter).KilometersPerLiter, KilometersPerLiterTolerance); + AssertEx.EqualTolerance(1, FuelEfficiency.FromLitersPer100Kilometers(kilometerperliter.LitersPer100Kilometers).KilometersPerLiter, LitersPer100KilometersTolerance); + AssertEx.EqualTolerance(1, FuelEfficiency.FromMetersPerCubicMeter(kilometerperliter.MetersPerCubicMeter).KilometersPerLiter, MetersPerCubicMeterTolerance); + AssertEx.EqualTolerance(1, FuelEfficiency.FromMilesPerUkGallon(kilometerperliter.MilesPerUkGallon).KilometersPerLiter, MilesPerUkGallonTolerance); + AssertEx.EqualTolerance(1, FuelEfficiency.FromMilesPerUsGallon(kilometerperliter.MilesPerUsGallon).KilometersPerLiter, MilesPerUsGallonTolerance); } [Fact] public void ArithmeticOperators() { - FuelEfficiency v = FuelEfficiency.FromLitersPer100Kilometers(1); - AssertEx.EqualTolerance(-1, -v.LitersPer100Kilometers, LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(2, (FuelEfficiency.FromLitersPer100Kilometers(3)-v).LitersPer100Kilometers, LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(2, (v + v).LitersPer100Kilometers, LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(10, (v*10).LitersPer100Kilometers, LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(10, (10*v).LitersPer100Kilometers, LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(2, (FuelEfficiency.FromLitersPer100Kilometers(10)/5).LitersPer100Kilometers, LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(2, FuelEfficiency.FromLitersPer100Kilometers(10)/FuelEfficiency.FromLitersPer100Kilometers(5), LitersPer100KilometersTolerance); + FuelEfficiency v = FuelEfficiency.FromKilometersPerLiter(1); + AssertEx.EqualTolerance(-1, -v.KilometersPerLiter, KilometersPerLiterTolerance); + AssertEx.EqualTolerance(2, (FuelEfficiency.FromKilometersPerLiter(3)-v).KilometersPerLiter, KilometersPerLiterTolerance); + AssertEx.EqualTolerance(2, (v + v).KilometersPerLiter, KilometersPerLiterTolerance); + AssertEx.EqualTolerance(10, (v*10).KilometersPerLiter, KilometersPerLiterTolerance); + AssertEx.EqualTolerance(10, (10*v).KilometersPerLiter, KilometersPerLiterTolerance); + AssertEx.EqualTolerance(2, (FuelEfficiency.FromKilometersPerLiter(10)/5).KilometersPerLiter, KilometersPerLiterTolerance); + AssertEx.EqualTolerance(2, FuelEfficiency.FromKilometersPerLiter(10)/FuelEfficiency.FromKilometersPerLiter(5), KilometersPerLiterTolerance); } [Fact] public void ComparisonOperators() { - FuelEfficiency oneLiterPer100Kilometers = FuelEfficiency.FromLitersPer100Kilometers(1); - FuelEfficiency twoLitersPer100Kilometers = FuelEfficiency.FromLitersPer100Kilometers(2); + FuelEfficiency oneKilometerPerLiter = FuelEfficiency.FromKilometersPerLiter(1); + FuelEfficiency twoKilometersPerLiter = FuelEfficiency.FromKilometersPerLiter(2); - Assert.True(oneLiterPer100Kilometers < twoLitersPer100Kilometers); - Assert.True(oneLiterPer100Kilometers <= twoLitersPer100Kilometers); - Assert.True(twoLitersPer100Kilometers > oneLiterPer100Kilometers); - Assert.True(twoLitersPer100Kilometers >= oneLiterPer100Kilometers); + Assert.True(oneKilometerPerLiter < twoKilometersPerLiter); + Assert.True(oneKilometerPerLiter <= twoKilometersPerLiter); + Assert.True(twoKilometersPerLiter > oneKilometerPerLiter); + Assert.True(twoKilometersPerLiter >= oneKilometerPerLiter); - Assert.False(oneLiterPer100Kilometers > twoLitersPer100Kilometers); - Assert.False(oneLiterPer100Kilometers >= twoLitersPer100Kilometers); - Assert.False(twoLitersPer100Kilometers < oneLiterPer100Kilometers); - Assert.False(twoLitersPer100Kilometers <= oneLiterPer100Kilometers); + Assert.False(oneKilometerPerLiter > twoKilometersPerLiter); + Assert.False(oneKilometerPerLiter >= twoKilometersPerLiter); + Assert.False(twoKilometersPerLiter < oneKilometerPerLiter); + Assert.False(twoKilometersPerLiter <= oneKilometerPerLiter); } [Fact] public void CompareToIsImplemented() { - FuelEfficiency literper100kilometers = FuelEfficiency.FromLitersPer100Kilometers(1); - Assert.Equal(0, literper100kilometers.CompareTo(literper100kilometers)); - Assert.True(literper100kilometers.CompareTo(FuelEfficiency.Zero) > 0); - Assert.True(FuelEfficiency.Zero.CompareTo(literper100kilometers) < 0); + FuelEfficiency kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); + Assert.Equal(0, kilometerperliter.CompareTo(kilometerperliter)); + Assert.True(kilometerperliter.CompareTo(FuelEfficiency.Zero) > 0); + Assert.True(FuelEfficiency.Zero.CompareTo(kilometerperliter) < 0); } [Fact] public void CompareToThrowsOnTypeMismatch() { - FuelEfficiency literper100kilometers = FuelEfficiency.FromLitersPer100Kilometers(1); - Assert.Throws(() => literper100kilometers.CompareTo(new object())); + FuelEfficiency kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); + Assert.Throws(() => kilometerperliter.CompareTo(new object())); } [Fact] public void CompareToThrowsOnNull() { - FuelEfficiency literper100kilometers = FuelEfficiency.FromLitersPer100Kilometers(1); - Assert.Throws(() => literper100kilometers.CompareTo(null)); + FuelEfficiency kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); + Assert.Throws(() => kilometerperliter.CompareTo(null)); } [Theory] - [InlineData(1, FuelEfficiencyUnit.LiterPer100Kilometers, 1, FuelEfficiencyUnit.LiterPer100Kilometers, true)] // Same value and unit. - [InlineData(1, FuelEfficiencyUnit.LiterPer100Kilometers, 2, FuelEfficiencyUnit.LiterPer100Kilometers, false)] // Different value. - [InlineData(2, FuelEfficiencyUnit.LiterPer100Kilometers, 1, FuelEfficiencyUnit.KilometerPerLiter, false)] // Different value and unit. - [InlineData(1, FuelEfficiencyUnit.LiterPer100Kilometers, 1, FuelEfficiencyUnit.KilometerPerLiter, false)] // Different unit. + [InlineData(1, FuelEfficiencyUnit.KilometerPerLiter, 1, FuelEfficiencyUnit.KilometerPerLiter, true)] // Same value and unit. + [InlineData(1, FuelEfficiencyUnit.KilometerPerLiter, 2, FuelEfficiencyUnit.KilometerPerLiter, false)] // Different value. + [InlineData(2, FuelEfficiencyUnit.KilometerPerLiter, 1, FuelEfficiencyUnit.LiterPer100Kilometers, false)] // Different value and unit. + [InlineData(1, FuelEfficiencyUnit.KilometerPerLiter, 1, FuelEfficiencyUnit.LiterPer100Kilometers, false)] // Different unit. public void Equals_ReturnsTrue_IfValueAndUnitAreEqual(double valueA, FuelEfficiencyUnit unitA, double valueB, FuelEfficiencyUnit unitB, bool expectEqual) { var a = new FuelEfficiency(valueA, unitA); @@ -546,32 +638,32 @@ public void Equals_Null_ReturnsFalse() [Fact] public void Equals_RelativeTolerance_IsImplemented() { - var v = FuelEfficiency.FromLitersPer100Kilometers(1); - Assert.True(v.Equals(FuelEfficiency.FromLitersPer100Kilometers(1), LitersPer100KilometersTolerance, ComparisonType.Relative)); - Assert.False(v.Equals(FuelEfficiency.Zero, LitersPer100KilometersTolerance, ComparisonType.Relative)); - Assert.True(FuelEfficiency.FromLitersPer100Kilometers(100).Equals(FuelEfficiency.FromLitersPer100Kilometers(120), 0.3, ComparisonType.Relative)); - Assert.False(FuelEfficiency.FromLitersPer100Kilometers(100).Equals(FuelEfficiency.FromLitersPer100Kilometers(120), 0.1, ComparisonType.Relative)); + var v = FuelEfficiency.FromKilometersPerLiter(1); + Assert.True(v.Equals(FuelEfficiency.FromKilometersPerLiter(1), KilometersPerLiterTolerance, ComparisonType.Relative)); + Assert.False(v.Equals(FuelEfficiency.Zero, KilometersPerLiterTolerance, ComparisonType.Relative)); + Assert.True(FuelEfficiency.FromKilometersPerLiter(100).Equals(FuelEfficiency.FromKilometersPerLiter(120), 0.3, ComparisonType.Relative)); + Assert.False(FuelEfficiency.FromKilometersPerLiter(100).Equals(FuelEfficiency.FromKilometersPerLiter(120), 0.1, ComparisonType.Relative)); } [Fact] public void Equals_NegativeRelativeTolerance_ThrowsArgumentOutOfRangeException() { - var v = FuelEfficiency.FromLitersPer100Kilometers(1); - Assert.Throws(() => v.Equals(FuelEfficiency.FromLitersPer100Kilometers(1), -1, ComparisonType.Relative)); + var v = FuelEfficiency.FromKilometersPerLiter(1); + Assert.Throws(() => v.Equals(FuelEfficiency.FromKilometersPerLiter(1), -1, ComparisonType.Relative)); } [Fact] public void EqualsReturnsFalseOnTypeMismatch() { - FuelEfficiency literper100kilometers = FuelEfficiency.FromLitersPer100Kilometers(1); - Assert.False(literper100kilometers.Equals(new object())); + FuelEfficiency kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); + Assert.False(kilometerperliter.Equals(new object())); } [Fact] public void EqualsReturnsFalseOnNull() { - FuelEfficiency literper100kilometers = FuelEfficiency.FromLitersPer100Kilometers(1); - Assert.False(literper100kilometers.Equals(null)); + FuelEfficiency kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); + Assert.False(kilometerperliter.Equals(null)); } [Fact] @@ -596,6 +688,7 @@ public void ToString_ReturnsValueAndUnitAbbreviationInCurrentCulture() using var _ = new CultureScope("en-US"); Assert.Equal("1 km/l", new FuelEfficiency(1, FuelEfficiencyUnit.KilometerPerLiter).ToString()); Assert.Equal("1 l/100km", new FuelEfficiency(1, FuelEfficiencyUnit.LiterPer100Kilometers).ToString()); + Assert.Equal("1 m/m³", new FuelEfficiency(1, FuelEfficiencyUnit.MeterPerCubicMeter).ToString()); Assert.Equal("1 mpg (imp.)", new FuelEfficiency(1, FuelEfficiencyUnit.MilePerUkGallon).ToString()); Assert.Equal("1 mpg (U.S.)", new FuelEfficiency(1, FuelEfficiencyUnit.MilePerUsGallon).ToString()); } @@ -608,6 +701,7 @@ public void ToString_WithSwedishCulture_ReturnsUnitAbbreviationForEnglishCulture Assert.Equal("1 km/l", new FuelEfficiency(1, FuelEfficiencyUnit.KilometerPerLiter).ToString(swedishCulture)); Assert.Equal("1 l/100km", new FuelEfficiency(1, FuelEfficiencyUnit.LiterPer100Kilometers).ToString(swedishCulture)); + Assert.Equal("1 m/m³", new FuelEfficiency(1, FuelEfficiencyUnit.MeterPerCubicMeter).ToString(swedishCulture)); Assert.Equal("1 mpg (imp.)", new FuelEfficiency(1, FuelEfficiencyUnit.MilePerUkGallon).ToString(swedishCulture)); Assert.Equal("1 mpg (U.S.)", new FuelEfficiency(1, FuelEfficiencyUnit.MilePerUsGallon).ToString(swedishCulture)); } @@ -616,20 +710,20 @@ public void ToString_WithSwedishCulture_ReturnsUnitAbbreviationForEnglishCulture public void ToString_SFormat_FormatsNumberWithGivenDigitsAfterRadixForCurrentCulture() { var _ = new CultureScope(CultureInfo.InvariantCulture); - Assert.Equal("0.1 l/100km", new FuelEfficiency(0.123456, FuelEfficiencyUnit.LiterPer100Kilometers).ToString("s1")); - Assert.Equal("0.12 l/100km", new FuelEfficiency(0.123456, FuelEfficiencyUnit.LiterPer100Kilometers).ToString("s2")); - Assert.Equal("0.123 l/100km", new FuelEfficiency(0.123456, FuelEfficiencyUnit.LiterPer100Kilometers).ToString("s3")); - Assert.Equal("0.1235 l/100km", new FuelEfficiency(0.123456, FuelEfficiencyUnit.LiterPer100Kilometers).ToString("s4")); + Assert.Equal("0.1 km/l", new FuelEfficiency(0.123456, FuelEfficiencyUnit.KilometerPerLiter).ToString("s1")); + Assert.Equal("0.12 km/l", new FuelEfficiency(0.123456, FuelEfficiencyUnit.KilometerPerLiter).ToString("s2")); + Assert.Equal("0.123 km/l", new FuelEfficiency(0.123456, FuelEfficiencyUnit.KilometerPerLiter).ToString("s3")); + Assert.Equal("0.1235 km/l", new FuelEfficiency(0.123456, FuelEfficiencyUnit.KilometerPerLiter).ToString("s4")); } [Fact] public void ToString_SFormatAndCulture_FormatsNumberWithGivenDigitsAfterRadixForGivenCulture() { var culture = CultureInfo.InvariantCulture; - Assert.Equal("0.1 l/100km", new FuelEfficiency(0.123456, FuelEfficiencyUnit.LiterPer100Kilometers).ToString("s1", culture)); - Assert.Equal("0.12 l/100km", new FuelEfficiency(0.123456, FuelEfficiencyUnit.LiterPer100Kilometers).ToString("s2", culture)); - Assert.Equal("0.123 l/100km", new FuelEfficiency(0.123456, FuelEfficiencyUnit.LiterPer100Kilometers).ToString("s3", culture)); - Assert.Equal("0.1235 l/100km", new FuelEfficiency(0.123456, FuelEfficiencyUnit.LiterPer100Kilometers).ToString("s4", culture)); + Assert.Equal("0.1 km/l", new FuelEfficiency(0.123456, FuelEfficiencyUnit.KilometerPerLiter).ToString("s1", culture)); + Assert.Equal("0.12 km/l", new FuelEfficiency(0.123456, FuelEfficiencyUnit.KilometerPerLiter).ToString("s2", culture)); + Assert.Equal("0.123 km/l", new FuelEfficiency(0.123456, FuelEfficiencyUnit.KilometerPerLiter).ToString("s3", culture)); + Assert.Equal("0.1235 km/l", new FuelEfficiency(0.123456, FuelEfficiencyUnit.KilometerPerLiter).ToString("s4", culture)); } [Theory] @@ -637,7 +731,7 @@ public void ToString_SFormatAndCulture_FormatsNumberWithGivenDigitsAfterRadixFor [InlineData("en-US")] public void ToString_NullFormat_DefaultsToGeneralFormat(string cultureName) { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); CultureInfo formatProvider = cultureName == null ? null : CultureInfo.GetCultureInfo(cultureName); @@ -650,154 +744,154 @@ public void ToString_NullFormat_DefaultsToGeneralFormat(string cultureName) [InlineData("g")] public void ToString_NullProvider_EqualsCurrentCulture(string format) { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal(quantity.ToString(format, CultureInfo.CurrentCulture), quantity.ToString(format, null)); } [Fact] public void Convert_ToBool_ThrowsInvalidCastException() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Throws(() => Convert.ToBoolean(quantity)); } [Fact] public void Convert_ToByte_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((byte)quantity.Value, Convert.ToByte(quantity)); } [Fact] public void Convert_ToChar_ThrowsInvalidCastException() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Throws(() => Convert.ToChar(quantity)); } [Fact] public void Convert_ToDateTime_ThrowsInvalidCastException() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Throws(() => Convert.ToDateTime(quantity)); } [Fact] public void Convert_ToDecimal_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((decimal)quantity.Value, Convert.ToDecimal(quantity)); } [Fact] public void Convert_ToDouble_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((double)quantity.Value, Convert.ToDouble(quantity)); } [Fact] public void Convert_ToInt16_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((short)quantity.Value, Convert.ToInt16(quantity)); } [Fact] public void Convert_ToInt32_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((int)quantity.Value, Convert.ToInt32(quantity)); } [Fact] public void Convert_ToInt64_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((long)quantity.Value, Convert.ToInt64(quantity)); } [Fact] public void Convert_ToSByte_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((sbyte)quantity.Value, Convert.ToSByte(quantity)); } [Fact] public void Convert_ToSingle_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((float)quantity.Value, Convert.ToSingle(quantity)); } [Fact] public void Convert_ToString_EqualsToString() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal(quantity.ToString(), Convert.ToString(quantity)); } [Fact] public void Convert_ToUInt16_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((ushort)quantity.Value, Convert.ToUInt16(quantity)); } [Fact] public void Convert_ToUInt32_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((uint)quantity.Value, Convert.ToUInt32(quantity)); } [Fact] public void Convert_ToUInt64_EqualsValueAsSameType() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal((ulong)quantity.Value, Convert.ToUInt64(quantity)); } [Fact] public void Convert_ChangeType_SelfType_EqualsSelf() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal(quantity, Convert.ChangeType(quantity, typeof(FuelEfficiency))); } [Fact] public void Convert_ChangeType_UnitType_EqualsUnit() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal(quantity.Unit, Convert.ChangeType(quantity, typeof(FuelEfficiencyUnit))); } [Fact] public void Convert_ChangeType_QuantityInfo_EqualsQuantityInfo() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal(FuelEfficiency.Info, Convert.ChangeType(quantity, typeof(QuantityInfo))); } [Fact] public void Convert_ChangeType_BaseDimensions_EqualsBaseDimensions() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal(FuelEfficiency.BaseDimensions, Convert.ChangeType(quantity, typeof(BaseDimensions))); } [Fact] public void Convert_ChangeType_InvalidType_ThrowsInvalidCastException() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Throws(() => Convert.ChangeType(quantity, typeof(QuantityFormatter))); } [Fact] public void GetHashCode_Equals() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal(new {FuelEfficiency.Info.Name, quantity.Value, quantity.Unit}.GetHashCode(), quantity.GetHashCode()); } @@ -806,8 +900,8 @@ public void GetHashCode_Equals() [InlineData(-1.0)] public void NegationOperator_ReturnsQuantity_WithNegatedValue(double value) { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(value); - Assert.Equal(FuelEfficiency.FromLitersPer100Kilometers(-value), -quantity); + var quantity = FuelEfficiency.FromKilometersPerLiter(value); + Assert.Equal(FuelEfficiency.FromKilometersPerLiter(-value), -quantity); } } } diff --git a/UnitsNet/GeneratedCode/Quantities/FuelEfficiency.g.cs b/UnitsNet/GeneratedCode/Quantities/FuelEfficiency.g.cs index ac329b68d0..2b2d000482 100644 --- a/UnitsNet/GeneratedCode/Quantities/FuelEfficiency.g.cs +++ b/UnitsNet/GeneratedCode/Quantities/FuelEfficiency.g.cs @@ -36,7 +36,7 @@ namespace UnitsNet { /// /// - /// Fuel efficiency is a form of thermal efficiency, meaning the ratio from effort to result of a process that converts chemical potential energy contained in a carrier (fuel) into kinetic energy or work. Fuel economy is stated as "fuel consumption" in liters per 100 kilometers (L/100 km). In countries using non-metric system, fuel economy is expressed in miles per gallon (mpg) (imperial galon or US galon). + /// In the context of transport, fuel economy is the energy efficiency of a particular vehicle, given as a ratio of distance traveled per unit of fuel consumed. In most countries, using the metric system, fuel economy is stated as "fuel consumption" in liters per 100 kilometers (L/100 km) or kilometers per liter (km/L or kmpl). In countries using non-metric system, fuel economy is expressed in miles per gallon (mpg) (imperial galon or US galon). /// /// /// https://en.wikipedia.org/wiki/Fuel_efficiency @@ -69,8 +69,8 @@ namespace UnitsNet static FuelEfficiency() { - BaseDimensions = BaseDimensions.Dimensionless; - BaseUnit = FuelEfficiencyUnit.LiterPer100Kilometers; + BaseDimensions = new BaseDimensions(-2, 0, 0, 0, 0, 0, 0); + BaseUnit = FuelEfficiencyUnit.KilometerPerLiter; Units = Enum.GetValues(typeof(FuelEfficiencyUnit)).Cast().ToArray(); Zero = new FuelEfficiency(0, BaseUnit); Info = new QuantityInfo("FuelEfficiency", @@ -78,6 +78,7 @@ static FuelEfficiency() { new UnitInfo(FuelEfficiencyUnit.KilometerPerLiter, "KilometersPerLiter", BaseUnits.Undefined, "FuelEfficiency"), new UnitInfo(FuelEfficiencyUnit.LiterPer100Kilometers, "LitersPer100Kilometers", BaseUnits.Undefined, "FuelEfficiency"), + new UnitInfo(FuelEfficiencyUnit.MeterPerCubicMeter, "MetersPerCubicMeter", new BaseUnits(length: LengthUnit.Meter), "FuelEfficiency"), new UnitInfo(FuelEfficiencyUnit.MilePerUkGallon, "MilesPerUkGallon", BaseUnits.Undefined, "FuelEfficiency"), new UnitInfo(FuelEfficiencyUnit.MilePerUsGallon, "MilesPerUsGallon", BaseUnits.Undefined, "FuelEfficiency"), }, @@ -98,6 +99,20 @@ public FuelEfficiency(double value, FuelEfficiencyUnit unit) _unit = unit; } + /// + /// Creates an instance of the quantity with the given numeric value in units compatible with the given . + /// If multiple compatible units were found, the first match is used. + /// + /// The numeric value to construct this quantity with. + /// The unit system to create the quantity with. + /// The given is null. + /// No unit was found for the given . + public FuelEfficiency(double value, UnitSystem unitSystem) + { + _value = value; + _unit = Info.GetDefaultUnit(unitSystem); + } + #region Static Properties /// @@ -114,7 +129,7 @@ public FuelEfficiency(double value, FuelEfficiencyUnit unit) public static BaseDimensions BaseDimensions { get; } /// - /// The base unit of FuelEfficiency, which is LiterPer100Kilometers. All conversions go via this value. + /// The base unit of FuelEfficiency, which is KilometerPerLiter. All conversions go via this value. /// public static FuelEfficiencyUnit BaseUnit { get; } @@ -124,7 +139,7 @@ public FuelEfficiency(double value, FuelEfficiencyUnit unit) public static FuelEfficiencyUnit[] Units { get; } /// - /// Gets an instance of this quantity with a value of 0 in the base unit LiterPer100Kilometers. + /// Gets an instance of this quantity with a value of 0 in the base unit KilometerPerLiter. /// public static FuelEfficiency Zero { get; } @@ -173,6 +188,11 @@ public FuelEfficiency(double value, FuelEfficiencyUnit unit) /// public double LitersPer100Kilometers => As(FuelEfficiencyUnit.LiterPer100Kilometers); + /// + /// Gets a value of this quantity converted into + /// + public double MetersPerCubicMeter => As(FuelEfficiencyUnit.MeterPerCubicMeter); + /// /// Gets a value of this quantity converted into /// @@ -194,17 +214,19 @@ public FuelEfficiency(double value, FuelEfficiencyUnit unit) internal static void RegisterDefaultConversions(UnitConverter unitConverter) { // Register in unit converter: FuelEfficiencyUnit -> BaseUnit - unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.LiterPer100Kilometers, quantity => quantity.ToUnit(FuelEfficiencyUnit.LiterPer100Kilometers)); - unitConverter.SetConversionFunction(FuelEfficiencyUnit.MilePerUkGallon, FuelEfficiencyUnit.LiterPer100Kilometers, quantity => quantity.ToUnit(FuelEfficiencyUnit.LiterPer100Kilometers)); - unitConverter.SetConversionFunction(FuelEfficiencyUnit.MilePerUsGallon, FuelEfficiencyUnit.LiterPer100Kilometers, quantity => quantity.ToUnit(FuelEfficiencyUnit.LiterPer100Kilometers)); + unitConverter.SetConversionFunction(FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.KilometerPerLiter, quantity => quantity.ToUnit(FuelEfficiencyUnit.KilometerPerLiter)); + unitConverter.SetConversionFunction(FuelEfficiencyUnit.MeterPerCubicMeter, FuelEfficiencyUnit.KilometerPerLiter, quantity => quantity.ToUnit(FuelEfficiencyUnit.KilometerPerLiter)); + unitConverter.SetConversionFunction(FuelEfficiencyUnit.MilePerUkGallon, FuelEfficiencyUnit.KilometerPerLiter, quantity => quantity.ToUnit(FuelEfficiencyUnit.KilometerPerLiter)); + unitConverter.SetConversionFunction(FuelEfficiencyUnit.MilePerUsGallon, FuelEfficiencyUnit.KilometerPerLiter, quantity => quantity.ToUnit(FuelEfficiencyUnit.KilometerPerLiter)); // Register in unit converter: BaseUnit <-> BaseUnit - unitConverter.SetConversionFunction(FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.LiterPer100Kilometers, quantity => quantity); + unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.KilometerPerLiter, quantity => quantity); // Register in unit converter: BaseUnit -> FuelEfficiencyUnit - unitConverter.SetConversionFunction(FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.KilometerPerLiter, quantity => quantity.ToUnit(FuelEfficiencyUnit.KilometerPerLiter)); - unitConverter.SetConversionFunction(FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.MilePerUkGallon, quantity => quantity.ToUnit(FuelEfficiencyUnit.MilePerUkGallon)); - unitConverter.SetConversionFunction(FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.MilePerUsGallon, quantity => quantity.ToUnit(FuelEfficiencyUnit.MilePerUsGallon)); + unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.LiterPer100Kilometers, quantity => quantity.ToUnit(FuelEfficiencyUnit.LiterPer100Kilometers)); + unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MeterPerCubicMeter, quantity => quantity.ToUnit(FuelEfficiencyUnit.MeterPerCubicMeter)); + unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MilePerUkGallon, quantity => quantity.ToUnit(FuelEfficiencyUnit.MilePerUkGallon)); + unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MilePerUsGallon, quantity => quantity.ToUnit(FuelEfficiencyUnit.MilePerUsGallon)); } /// @@ -248,6 +270,14 @@ public static FuelEfficiency FromLitersPer100Kilometers(double value) return new FuelEfficiency(value, FuelEfficiencyUnit.LiterPer100Kilometers); } + /// + /// Creates a from . + /// + public static FuelEfficiency FromMetersPerCubicMeter(double value) + { + return new FuelEfficiency(value, FuelEfficiencyUnit.MeterPerCubicMeter); + } + /// /// Creates a from . /// @@ -462,7 +492,7 @@ public static bool TryParseUnit([NotNullWhen(true)]string? str, IFormatProvider? /// Get ratio value from dividing by . public static double operator /(FuelEfficiency left, FuelEfficiency right) { - return left.LitersPer100Kilometers / right.LitersPer100Kilometers; + return left.KilometersPerLiter / right.KilometersPerLiter; } #endregion @@ -730,14 +760,16 @@ private bool TryToUnit(FuelEfficiencyUnit unit, [NotNullWhen(true)] out FuelEffi FuelEfficiency? convertedOrNull = (Unit, unit) switch { // FuelEfficiencyUnit -> BaseUnit - (FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.LiterPer100Kilometers) => new FuelEfficiency(100 / _value, FuelEfficiencyUnit.LiterPer100Kilometers), - (FuelEfficiencyUnit.MilePerUkGallon, FuelEfficiencyUnit.LiterPer100Kilometers) => new FuelEfficiency((100 * 4.54609188) / (1.609344 * _value), FuelEfficiencyUnit.LiterPer100Kilometers), - (FuelEfficiencyUnit.MilePerUsGallon, FuelEfficiencyUnit.LiterPer100Kilometers) => new FuelEfficiency((100 * 3.785411784) / (1.609344 * _value), FuelEfficiencyUnit.LiterPer100Kilometers), + (FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.KilometerPerLiter) => new FuelEfficiency(100 / _value, FuelEfficiencyUnit.KilometerPerLiter), + (FuelEfficiencyUnit.MeterPerCubicMeter, FuelEfficiencyUnit.KilometerPerLiter) => new FuelEfficiency(_value / 1e6, FuelEfficiencyUnit.KilometerPerLiter), + (FuelEfficiencyUnit.MilePerUkGallon, FuelEfficiencyUnit.KilometerPerLiter) => new FuelEfficiency(_value * 1.609344 / 4.54609, FuelEfficiencyUnit.KilometerPerLiter), + (FuelEfficiencyUnit.MilePerUsGallon, FuelEfficiencyUnit.KilometerPerLiter) => new FuelEfficiency(_value * 1.609344 / 3.785411784, FuelEfficiencyUnit.KilometerPerLiter), // BaseUnit -> FuelEfficiencyUnit - (FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.KilometerPerLiter) => new FuelEfficiency(100 / _value, FuelEfficiencyUnit.KilometerPerLiter), - (FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.MilePerUkGallon) => new FuelEfficiency((100 * 4.54609188) / (1.609344 * _value), FuelEfficiencyUnit.MilePerUkGallon), - (FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.MilePerUsGallon) => new FuelEfficiency((100 * 3.785411784) / (1.609344 * _value), FuelEfficiencyUnit.MilePerUsGallon), + (FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.LiterPer100Kilometers) => new FuelEfficiency(100 / _value, FuelEfficiencyUnit.LiterPer100Kilometers), + (FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MeterPerCubicMeter) => new FuelEfficiency(_value * 1e6, FuelEfficiencyUnit.MeterPerCubicMeter), + (FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MilePerUkGallon) => new FuelEfficiency(_value * 4.54609 / 1.609344, FuelEfficiencyUnit.MilePerUkGallon), + (FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MilePerUsGallon) => new FuelEfficiency(_value * 3.785411784 / 1.609344, FuelEfficiencyUnit.MilePerUsGallon), _ => null }; diff --git a/UnitsNet/GeneratedCode/Resources/FuelEfficiency.restext b/UnitsNet/GeneratedCode/Resources/FuelEfficiency.restext index af9fb4fe9d..04c6c740d3 100644 --- a/UnitsNet/GeneratedCode/Resources/FuelEfficiency.restext +++ b/UnitsNet/GeneratedCode/Resources/FuelEfficiency.restext @@ -1,4 +1,5 @@ KilometersPerLiter=km/l LitersPer100Kilometers=l/100km +MetersPerCubicMeter=m/m³ MilesPerUkGallon=mpg (imp.) MilesPerUsGallon=mpg (U.S.) diff --git a/UnitsNet/GeneratedCode/Units/FuelEfficiencyUnit.g.cs b/UnitsNet/GeneratedCode/Units/FuelEfficiencyUnit.g.cs index 24491dee95..872f1e2807 100644 --- a/UnitsNet/GeneratedCode/Units/FuelEfficiencyUnit.g.cs +++ b/UnitsNet/GeneratedCode/Units/FuelEfficiencyUnit.g.cs @@ -27,6 +27,7 @@ public enum FuelEfficiencyUnit { KilometerPerLiter = 1, LiterPer100Kilometers = 2, + MeterPerCubicMeter = 7, MilePerUkGallon = 3, MilePerUsGallon = 4, } From cd05244f14ea2952a21486f27a551597cfb605d8 Mon Sep 17 00:00:00 2001 From: lipchev Date: Tue, 7 Jan 2025 23:19:52 +0200 Subject: [PATCH 2/4] re-generating the tests (fix the Convert_GetTypeCode_Returns_Object using the old spelling) --- .../GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs b/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs index f989ccbcdb..acbd570dd7 100644 --- a/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs +++ b/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs @@ -910,7 +910,7 @@ public void Convert_ChangeType_InvalidType_ThrowsInvalidCastException() [Fact] public void Convert_GetTypeCode_Returns_Object() { - var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0); + var quantity = FuelEfficiency.FromKilometersPerLiter(1.0); Assert.Equal(TypeCode.Object, Convert.GetTypeCode(quantity)); } From d7169c17ec184b7a73d0817c106dd55f94b43ba7 Mon Sep 17 00:00:00 2001 From: lipchev Date: Sun, 19 Jan 2025 14:37:04 +0200 Subject: [PATCH 3/4] removed the MeterPerCubicMeter unit and skipped the SI tests --- Common/UnitDefinitions/FuelEfficiency.json | 17 ------- .../Quantities/FuelEfficiency.g.cs | 12 ----- .../Units/FuelEfficiencyUnit.g.cs | 1 - .../NumberToFuelEfficiencyExtensionsTest.g.cs | 4 -- .../NumberToFuelEfficiencyExtensions.g.cs | 8 ---- .../CustomCode/FuelEfficiencyTests.cs | 24 +++++++++- .../TestsBase/FuelEfficiencyTestsBase.g.cs | 46 +++---------------- .../Quantities/FuelEfficiency.g.cs | 18 -------- .../Resources/FuelEfficiency.restext | 1 - .../Units/FuelEfficiencyUnit.g.cs | 1 - 10 files changed, 28 insertions(+), 104 deletions(-) diff --git a/Common/UnitDefinitions/FuelEfficiency.json b/Common/UnitDefinitions/FuelEfficiency.json index a212f973b1..d018d437ba 100644 --- a/Common/UnitDefinitions/FuelEfficiency.json +++ b/Common/UnitDefinitions/FuelEfficiency.json @@ -62,23 +62,6 @@ ] } ] - }, - { - "SingularName": "MeterPerCubicMeter", - "PluralName": "MetersPerCubicMeter", - "BaseUnits": { - "L": "Meter" - }, - "FromUnitToBaseFunc": "{x} / 1e6", - "FromBaseToUnitFunc": "{x} * 1e6", - "Localization": [ - { - "Culture": "en-US", - "Abbreviations": [ - "m/m³" - ] - } - ] } ] } \ No newline at end of file diff --git a/UnitsNet.NanoFramework/GeneratedCode/Quantities/FuelEfficiency.g.cs b/UnitsNet.NanoFramework/GeneratedCode/Quantities/FuelEfficiency.g.cs index 22d87bd693..de90703f76 100644 --- a/UnitsNet.NanoFramework/GeneratedCode/Quantities/FuelEfficiency.g.cs +++ b/UnitsNet.NanoFramework/GeneratedCode/Quantities/FuelEfficiency.g.cs @@ -91,11 +91,6 @@ public FuelEfficiency(double value, FuelEfficiencyUnit unit) /// public double LitersPer100Kilometers => As(FuelEfficiencyUnit.LiterPer100Kilometers); - /// - /// Gets a value of this quantity converted into - /// - public double MetersPerCubicMeter => As(FuelEfficiencyUnit.MeterPerCubicMeter); - /// /// Gets a value of this quantity converted into /// @@ -120,11 +115,6 @@ public FuelEfficiency(double value, FuelEfficiencyUnit unit) /// public static FuelEfficiency FromLitersPer100Kilometers(double litersper100kilometers) => new FuelEfficiency(litersper100kilometers, FuelEfficiencyUnit.LiterPer100Kilometers); - /// - /// Creates a from . - /// - public static FuelEfficiency FromMetersPerCubicMeter(double meterspercubicmeter) => new FuelEfficiency(meterspercubicmeter, FuelEfficiencyUnit.MeterPerCubicMeter); - /// /// Creates a from . /// @@ -177,7 +167,6 @@ private double GetValueInBaseUnit() { FuelEfficiencyUnit.KilometerPerLiter => _value, FuelEfficiencyUnit.LiterPer100Kilometers => 100 / _value, - FuelEfficiencyUnit.MeterPerCubicMeter => _value / 1e6, FuelEfficiencyUnit.MilePerUkGallon => _value * 1.609344 / 4.54609, FuelEfficiencyUnit.MilePerUsGallon => _value * 1.609344 / 3.785411784, _ => throw new NotImplementedException($"Can not convert {Unit} to base units.") @@ -195,7 +184,6 @@ private double GetValueAs(FuelEfficiencyUnit unit) { FuelEfficiencyUnit.KilometerPerLiter => baseUnitValue, FuelEfficiencyUnit.LiterPer100Kilometers => 100 / baseUnitValue, - FuelEfficiencyUnit.MeterPerCubicMeter => baseUnitValue * 1e6, FuelEfficiencyUnit.MilePerUkGallon => baseUnitValue * 4.54609 / 1.609344, FuelEfficiencyUnit.MilePerUsGallon => baseUnitValue * 3.785411784 / 1.609344, _ => throw new NotImplementedException($"Can not convert {Unit} to {unit}.") diff --git a/UnitsNet.NanoFramework/GeneratedCode/Units/FuelEfficiencyUnit.g.cs b/UnitsNet.NanoFramework/GeneratedCode/Units/FuelEfficiencyUnit.g.cs index 872f1e2807..24491dee95 100644 --- a/UnitsNet.NanoFramework/GeneratedCode/Units/FuelEfficiencyUnit.g.cs +++ b/UnitsNet.NanoFramework/GeneratedCode/Units/FuelEfficiencyUnit.g.cs @@ -27,7 +27,6 @@ public enum FuelEfficiencyUnit { KilometerPerLiter = 1, LiterPer100Kilometers = 2, - MeterPerCubicMeter = 7, MilePerUkGallon = 3, MilePerUsGallon = 4, } diff --git a/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToFuelEfficiencyExtensionsTest.g.cs b/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToFuelEfficiencyExtensionsTest.g.cs index bc4ade9b6d..c721dbcb09 100644 --- a/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToFuelEfficiencyExtensionsTest.g.cs +++ b/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToFuelEfficiencyExtensionsTest.g.cs @@ -32,10 +32,6 @@ public void NumberToKilometersPerLiterTest() => public void NumberToLitersPer100KilometersTest() => Assert.Equal(FuelEfficiency.FromLitersPer100Kilometers(2), 2.LitersPer100Kilometers()); - [Fact] - public void NumberToMetersPerCubicMeterTest() => - Assert.Equal(FuelEfficiency.FromMetersPerCubicMeter(2), 2.MetersPerCubicMeter()); - [Fact] public void NumberToMilesPerUkGallonTest() => Assert.Equal(FuelEfficiency.FromMilesPerUkGallon(2), 2.MilesPerUkGallon()); diff --git a/UnitsNet.NumberExtensions/GeneratedCode/NumberToFuelEfficiencyExtensions.g.cs b/UnitsNet.NumberExtensions/GeneratedCode/NumberToFuelEfficiencyExtensions.g.cs index 237fc6245f..c2db1d3139 100644 --- a/UnitsNet.NumberExtensions/GeneratedCode/NumberToFuelEfficiencyExtensions.g.cs +++ b/UnitsNet.NumberExtensions/GeneratedCode/NumberToFuelEfficiencyExtensions.g.cs @@ -48,14 +48,6 @@ public static FuelEfficiency LitersPer100Kilometers(this T value) #endif => FuelEfficiency.FromLitersPer100Kilometers(Convert.ToDouble(value)); - /// - public static FuelEfficiency MetersPerCubicMeter(this T value) - where T : notnull -#if NET7_0_OR_GREATER - , INumber -#endif - => FuelEfficiency.FromMetersPerCubicMeter(Convert.ToDouble(value)); - /// public static FuelEfficiency MilesPerUkGallon(this T value) where T : notnull diff --git a/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs b/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs index a66f9d6e11..05100e7909 100644 --- a/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs +++ b/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs @@ -23,16 +23,36 @@ namespace UnitsNet.Tests.CustomCode { public class FuelEfficiencyTests : FuelEfficiencyTestsBase { - protected override double MetersPerCubicMeterInOneKilometerPerLiter => 1e6; + protected override bool SupportsSIUnitSystem => false; + protected override double KilometersPerLiterInOneKilometerPerLiter => 1; protected override double LitersPer100KilometersInOneKilometerPerLiter => 100; protected override double MilesPerUkGallonInOneKilometerPerLiter => 2.824809363318222; protected override double MilesPerUsGallonInOneKilometerPerLiter => 2.352145833333333; + - [Fact(Skip = "See about changing this to MetersPerCubicMeter")] + [Fact(Skip = "The SI unit would have to be MeterPerCubicMeter")] public override void BaseUnit_HasSIBase() { base.BaseUnit_HasSIBase(); } + + [Fact(Skip = "NoThe SI unit would have to be MeterPerCubicMeter")] + public override void Ctor_SIUnitSystem_ReturnsQuantityWithSIUnits() + { + base.Ctor_SIUnitSystem_ReturnsQuantityWithSIUnits(); + } + + [Fact(Skip = "NoThe SI unit would have to be MeterPerCubicMeter")] + public override void As_UnitSystem_SI_ReturnsQuantityInSIUnits() + { + base.As_UnitSystem_SI_ReturnsQuantityInSIUnits(); + } + + [Fact(Skip = "NoThe SI unit would have to be MeterPerCubicMeter")] + public override void ToUnit_UnitSystem_SI_ReturnsQuantityInSIUnits() + { + base.ToUnit_UnitSystem_SI_ReturnsQuantityInSIUnits(); + } } } diff --git a/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs b/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs index acbd570dd7..f9baaa1571 100644 --- a/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs +++ b/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs @@ -41,14 +41,12 @@ public abstract partial class FuelEfficiencyTestsBase : QuantityTestsBase { protected abstract double KilometersPerLiterInOneKilometerPerLiter { get; } protected abstract double LitersPer100KilometersInOneKilometerPerLiter { get; } - protected abstract double MetersPerCubicMeterInOneKilometerPerLiter { get; } protected abstract double MilesPerUkGallonInOneKilometerPerLiter { get; } protected abstract double MilesPerUsGallonInOneKilometerPerLiter { get; } // ReSharper disable VirtualMemberNeverOverriden.Global protected virtual double KilometersPerLiterTolerance { get { return 1e-5; } } protected virtual double LitersPer100KilometersTolerance { get { return 1e-5; } } - protected virtual double MetersPerCubicMeterTolerance { get { return 1e-5; } } protected virtual double MilesPerUkGallonTolerance { get { return 1e-5; } } protected virtual double MilesPerUsGallonTolerance { get { return 1e-5; } } // ReSharper restore VirtualMemberNeverOverriden.Global @@ -59,7 +57,6 @@ public abstract partial class FuelEfficiencyTestsBase : QuantityTestsBase { FuelEfficiencyUnit.KilometerPerLiter => (KilometersPerLiterInOneKilometerPerLiter, KilometersPerLiterTolerance), FuelEfficiencyUnit.LiterPer100Kilometers => (LitersPer100KilometersInOneKilometerPerLiter, LitersPer100KilometersTolerance), - FuelEfficiencyUnit.MeterPerCubicMeter => (MetersPerCubicMeterInOneKilometerPerLiter, MetersPerCubicMeterTolerance), FuelEfficiencyUnit.MilePerUkGallon => (MilesPerUkGallonInOneKilometerPerLiter, MilesPerUkGallonTolerance), FuelEfficiencyUnit.MilePerUsGallon => (MilesPerUsGallonInOneKilometerPerLiter, MilesPerUsGallonTolerance), _ => throw new NotSupportedException() @@ -70,7 +67,6 @@ public abstract partial class FuelEfficiencyTestsBase : QuantityTestsBase { new object[] { FuelEfficiencyUnit.KilometerPerLiter }, new object[] { FuelEfficiencyUnit.LiterPer100Kilometers }, - new object[] { FuelEfficiencyUnit.MeterPerCubicMeter }, new object[] { FuelEfficiencyUnit.MilePerUkGallon }, new object[] { FuelEfficiencyUnit.MilePerUsGallon }, }; @@ -142,7 +138,6 @@ public void KilometerPerLiterToFuelEfficiencyUnits() FuelEfficiency kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); AssertEx.EqualTolerance(KilometersPerLiterInOneKilometerPerLiter, kilometerperliter.KilometersPerLiter, KilometersPerLiterTolerance); AssertEx.EqualTolerance(LitersPer100KilometersInOneKilometerPerLiter, kilometerperliter.LitersPer100Kilometers, LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(MetersPerCubicMeterInOneKilometerPerLiter, kilometerperliter.MetersPerCubicMeter, MetersPerCubicMeterTolerance); AssertEx.EqualTolerance(MilesPerUkGallonInOneKilometerPerLiter, kilometerperliter.MilesPerUkGallon, MilesPerUkGallonTolerance); AssertEx.EqualTolerance(MilesPerUsGallonInOneKilometerPerLiter, kilometerperliter.MilesPerUsGallon, MilesPerUsGallonTolerance); } @@ -158,17 +153,13 @@ public void From_ValueAndUnit_ReturnsQuantityWithSameValueAndUnit() AssertEx.EqualTolerance(1, quantity01.LitersPer100Kilometers, LitersPer100KilometersTolerance); Assert.Equal(FuelEfficiencyUnit.LiterPer100Kilometers, quantity01.Unit); - var quantity02 = FuelEfficiency.From(1, FuelEfficiencyUnit.MeterPerCubicMeter); - AssertEx.EqualTolerance(1, quantity02.MetersPerCubicMeter, MetersPerCubicMeterTolerance); - Assert.Equal(FuelEfficiencyUnit.MeterPerCubicMeter, quantity02.Unit); + var quantity02 = FuelEfficiency.From(1, FuelEfficiencyUnit.MilePerUkGallon); + AssertEx.EqualTolerance(1, quantity02.MilesPerUkGallon, MilesPerUkGallonTolerance); + Assert.Equal(FuelEfficiencyUnit.MilePerUkGallon, quantity02.Unit); - var quantity03 = FuelEfficiency.From(1, FuelEfficiencyUnit.MilePerUkGallon); - AssertEx.EqualTolerance(1, quantity03.MilesPerUkGallon, MilesPerUkGallonTolerance); - Assert.Equal(FuelEfficiencyUnit.MilePerUkGallon, quantity03.Unit); - - var quantity04 = FuelEfficiency.From(1, FuelEfficiencyUnit.MilePerUsGallon); - AssertEx.EqualTolerance(1, quantity04.MilesPerUsGallon, MilesPerUsGallonTolerance); - Assert.Equal(FuelEfficiencyUnit.MilePerUsGallon, quantity04.Unit); + var quantity03 = FuelEfficiency.From(1, FuelEfficiencyUnit.MilePerUsGallon); + AssertEx.EqualTolerance(1, quantity03.MilesPerUsGallon, MilesPerUsGallonTolerance); + Assert.Equal(FuelEfficiencyUnit.MilePerUsGallon, quantity03.Unit); } @@ -196,7 +187,6 @@ public void As() var kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); AssertEx.EqualTolerance(KilometersPerLiterInOneKilometerPerLiter, kilometerperliter.As(FuelEfficiencyUnit.KilometerPerLiter), KilometersPerLiterTolerance); AssertEx.EqualTolerance(LitersPer100KilometersInOneKilometerPerLiter, kilometerperliter.As(FuelEfficiencyUnit.LiterPer100Kilometers), LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(MetersPerCubicMeterInOneKilometerPerLiter, kilometerperliter.As(FuelEfficiencyUnit.MeterPerCubicMeter), MetersPerCubicMeterTolerance); AssertEx.EqualTolerance(MilesPerUkGallonInOneKilometerPerLiter, kilometerperliter.As(FuelEfficiencyUnit.MilePerUkGallon), MilesPerUkGallonTolerance); AssertEx.EqualTolerance(MilesPerUsGallonInOneKilometerPerLiter, kilometerperliter.As(FuelEfficiencyUnit.MilePerUsGallon), MilesPerUsGallonTolerance); } @@ -324,13 +314,6 @@ public void Parse() Assert.Equal(FuelEfficiencyUnit.LiterPer100Kilometers, parsed.Unit); } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } - try - { - var parsed = FuelEfficiency.Parse("1 m/m³", CultureInfo.GetCultureInfo("en-US")); - AssertEx.EqualTolerance(1, parsed.MetersPerCubicMeter, MetersPerCubicMeterTolerance); - Assert.Equal(FuelEfficiencyUnit.MeterPerCubicMeter, parsed.Unit); - } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } - try { var parsed = FuelEfficiency.Parse("1 mpg (imp.)", CultureInfo.GetCultureInfo("en-US")); @@ -362,12 +345,6 @@ public void TryParse() Assert.Equal(FuelEfficiencyUnit.LiterPer100Kilometers, parsed.Unit); } - { - Assert.True(FuelEfficiency.TryParse("1 m/m³", CultureInfo.GetCultureInfo("en-US"), out var parsed)); - AssertEx.EqualTolerance(1, parsed.MetersPerCubicMeter, MetersPerCubicMeterTolerance); - Assert.Equal(FuelEfficiencyUnit.MeterPerCubicMeter, parsed.Unit); - } - { Assert.True(FuelEfficiency.TryParse("1 mpg (imp.)", CultureInfo.GetCultureInfo("en-US"), out var parsed)); AssertEx.EqualTolerance(1, parsed.MilesPerUkGallon, MilesPerUkGallonTolerance); @@ -385,7 +362,6 @@ public void TryParse() [Theory] [InlineData("km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] - [InlineData("m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void ParseUnit_WithUsEnglishCurrentCulture(string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -399,7 +375,6 @@ public void ParseUnit_WithUsEnglishCurrentCulture(string abbreviation, FuelEffic [Theory] [InlineData("km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] - [InlineData("m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void ParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -413,7 +388,6 @@ public void ParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(string [Theory] [InlineData("en-US", "km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("en-US", "l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] - [InlineData("en-US", "m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("en-US", "mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("en-US", "mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void ParseUnit_WithCurrentCulture(string culture, string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -426,7 +400,6 @@ public void ParseUnit_WithCurrentCulture(string culture, string abbreviation, Fu [Theory] [InlineData("en-US", "km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("en-US", "l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] - [InlineData("en-US", "m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("en-US", "mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("en-US", "mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void ParseUnit_WithCulture(string culture, string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -438,7 +411,6 @@ public void ParseUnit_WithCulture(string culture, string abbreviation, FuelEffic [Theory] [InlineData("km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] - [InlineData("m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void TryParseUnit_WithUsEnglishCurrentCulture(string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -452,7 +424,6 @@ public void TryParseUnit_WithUsEnglishCurrentCulture(string abbreviation, FuelEf [Theory] [InlineData("km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] - [InlineData("m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void TryParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -466,7 +437,6 @@ public void TryParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(stri [Theory] [InlineData("en-US", "km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("en-US", "l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] - [InlineData("en-US", "m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("en-US", "mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("en-US", "mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void TryParseUnit_WithCurrentCulture(string culture, string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -479,7 +449,6 @@ public void TryParseUnit_WithCurrentCulture(string culture, string abbreviation, [Theory] [InlineData("en-US", "km/l", FuelEfficiencyUnit.KilometerPerLiter)] [InlineData("en-US", "l/100km", FuelEfficiencyUnit.LiterPer100Kilometers)] - [InlineData("en-US", "m/m³", FuelEfficiencyUnit.MeterPerCubicMeter)] [InlineData("en-US", "mpg (imp.)", FuelEfficiencyUnit.MilePerUkGallon)] [InlineData("en-US", "mpg (U.S.)", FuelEfficiencyUnit.MilePerUsGallon)] public void TryParseUnit_WithCulture(string culture, string abbreviation, FuelEfficiencyUnit expectedUnit) @@ -555,7 +524,6 @@ public void ConversionRoundTrip() FuelEfficiency kilometerperliter = FuelEfficiency.FromKilometersPerLiter(1); AssertEx.EqualTolerance(1, FuelEfficiency.FromKilometersPerLiter(kilometerperliter.KilometersPerLiter).KilometersPerLiter, KilometersPerLiterTolerance); AssertEx.EqualTolerance(1, FuelEfficiency.FromLitersPer100Kilometers(kilometerperliter.LitersPer100Kilometers).KilometersPerLiter, LitersPer100KilometersTolerance); - AssertEx.EqualTolerance(1, FuelEfficiency.FromMetersPerCubicMeter(kilometerperliter.MetersPerCubicMeter).KilometersPerLiter, MetersPerCubicMeterTolerance); AssertEx.EqualTolerance(1, FuelEfficiency.FromMilesPerUkGallon(kilometerperliter.MilesPerUkGallon).KilometersPerLiter, MilesPerUkGallonTolerance); AssertEx.EqualTolerance(1, FuelEfficiency.FromMilesPerUsGallon(kilometerperliter.MilesPerUsGallon).KilometersPerLiter, MilesPerUsGallonTolerance); } @@ -707,7 +675,6 @@ public void ToString_ReturnsValueAndUnitAbbreviationInCurrentCulture() using var _ = new CultureScope("en-US"); Assert.Equal("1 km/l", new FuelEfficiency(1, FuelEfficiencyUnit.KilometerPerLiter).ToString()); Assert.Equal("1 l/100km", new FuelEfficiency(1, FuelEfficiencyUnit.LiterPer100Kilometers).ToString()); - Assert.Equal("1 m/m³", new FuelEfficiency(1, FuelEfficiencyUnit.MeterPerCubicMeter).ToString()); Assert.Equal("1 mpg (imp.)", new FuelEfficiency(1, FuelEfficiencyUnit.MilePerUkGallon).ToString()); Assert.Equal("1 mpg (U.S.)", new FuelEfficiency(1, FuelEfficiencyUnit.MilePerUsGallon).ToString()); } @@ -720,7 +687,6 @@ public void ToString_WithSwedishCulture_ReturnsUnitAbbreviationForEnglishCulture Assert.Equal("1 km/l", new FuelEfficiency(1, FuelEfficiencyUnit.KilometerPerLiter).ToString(swedishCulture)); Assert.Equal("1 l/100km", new FuelEfficiency(1, FuelEfficiencyUnit.LiterPer100Kilometers).ToString(swedishCulture)); - Assert.Equal("1 m/m³", new FuelEfficiency(1, FuelEfficiencyUnit.MeterPerCubicMeter).ToString(swedishCulture)); Assert.Equal("1 mpg (imp.)", new FuelEfficiency(1, FuelEfficiencyUnit.MilePerUkGallon).ToString(swedishCulture)); Assert.Equal("1 mpg (U.S.)", new FuelEfficiency(1, FuelEfficiencyUnit.MilePerUsGallon).ToString(swedishCulture)); } diff --git a/UnitsNet/GeneratedCode/Quantities/FuelEfficiency.g.cs b/UnitsNet/GeneratedCode/Quantities/FuelEfficiency.g.cs index 2b2d000482..0532819357 100644 --- a/UnitsNet/GeneratedCode/Quantities/FuelEfficiency.g.cs +++ b/UnitsNet/GeneratedCode/Quantities/FuelEfficiency.g.cs @@ -78,7 +78,6 @@ static FuelEfficiency() { new UnitInfo(FuelEfficiencyUnit.KilometerPerLiter, "KilometersPerLiter", BaseUnits.Undefined, "FuelEfficiency"), new UnitInfo(FuelEfficiencyUnit.LiterPer100Kilometers, "LitersPer100Kilometers", BaseUnits.Undefined, "FuelEfficiency"), - new UnitInfo(FuelEfficiencyUnit.MeterPerCubicMeter, "MetersPerCubicMeter", new BaseUnits(length: LengthUnit.Meter), "FuelEfficiency"), new UnitInfo(FuelEfficiencyUnit.MilePerUkGallon, "MilesPerUkGallon", BaseUnits.Undefined, "FuelEfficiency"), new UnitInfo(FuelEfficiencyUnit.MilePerUsGallon, "MilesPerUsGallon", BaseUnits.Undefined, "FuelEfficiency"), }, @@ -188,11 +187,6 @@ public FuelEfficiency(double value, UnitSystem unitSystem) /// public double LitersPer100Kilometers => As(FuelEfficiencyUnit.LiterPer100Kilometers); - /// - /// Gets a value of this quantity converted into - /// - public double MetersPerCubicMeter => As(FuelEfficiencyUnit.MeterPerCubicMeter); - /// /// Gets a value of this quantity converted into /// @@ -215,7 +209,6 @@ internal static void RegisterDefaultConversions(UnitConverter unitConverter) { // Register in unit converter: FuelEfficiencyUnit -> BaseUnit unitConverter.SetConversionFunction(FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.KilometerPerLiter, quantity => quantity.ToUnit(FuelEfficiencyUnit.KilometerPerLiter)); - unitConverter.SetConversionFunction(FuelEfficiencyUnit.MeterPerCubicMeter, FuelEfficiencyUnit.KilometerPerLiter, quantity => quantity.ToUnit(FuelEfficiencyUnit.KilometerPerLiter)); unitConverter.SetConversionFunction(FuelEfficiencyUnit.MilePerUkGallon, FuelEfficiencyUnit.KilometerPerLiter, quantity => quantity.ToUnit(FuelEfficiencyUnit.KilometerPerLiter)); unitConverter.SetConversionFunction(FuelEfficiencyUnit.MilePerUsGallon, FuelEfficiencyUnit.KilometerPerLiter, quantity => quantity.ToUnit(FuelEfficiencyUnit.KilometerPerLiter)); @@ -224,7 +217,6 @@ internal static void RegisterDefaultConversions(UnitConverter unitConverter) // Register in unit converter: BaseUnit -> FuelEfficiencyUnit unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.LiterPer100Kilometers, quantity => quantity.ToUnit(FuelEfficiencyUnit.LiterPer100Kilometers)); - unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MeterPerCubicMeter, quantity => quantity.ToUnit(FuelEfficiencyUnit.MeterPerCubicMeter)); unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MilePerUkGallon, quantity => quantity.ToUnit(FuelEfficiencyUnit.MilePerUkGallon)); unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MilePerUsGallon, quantity => quantity.ToUnit(FuelEfficiencyUnit.MilePerUsGallon)); } @@ -270,14 +262,6 @@ public static FuelEfficiency FromLitersPer100Kilometers(double value) return new FuelEfficiency(value, FuelEfficiencyUnit.LiterPer100Kilometers); } - /// - /// Creates a from . - /// - public static FuelEfficiency FromMetersPerCubicMeter(double value) - { - return new FuelEfficiency(value, FuelEfficiencyUnit.MeterPerCubicMeter); - } - /// /// Creates a from . /// @@ -761,13 +745,11 @@ private bool TryToUnit(FuelEfficiencyUnit unit, [NotNullWhen(true)] out FuelEffi { // FuelEfficiencyUnit -> BaseUnit (FuelEfficiencyUnit.LiterPer100Kilometers, FuelEfficiencyUnit.KilometerPerLiter) => new FuelEfficiency(100 / _value, FuelEfficiencyUnit.KilometerPerLiter), - (FuelEfficiencyUnit.MeterPerCubicMeter, FuelEfficiencyUnit.KilometerPerLiter) => new FuelEfficiency(_value / 1e6, FuelEfficiencyUnit.KilometerPerLiter), (FuelEfficiencyUnit.MilePerUkGallon, FuelEfficiencyUnit.KilometerPerLiter) => new FuelEfficiency(_value * 1.609344 / 4.54609, FuelEfficiencyUnit.KilometerPerLiter), (FuelEfficiencyUnit.MilePerUsGallon, FuelEfficiencyUnit.KilometerPerLiter) => new FuelEfficiency(_value * 1.609344 / 3.785411784, FuelEfficiencyUnit.KilometerPerLiter), // BaseUnit -> FuelEfficiencyUnit (FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.LiterPer100Kilometers) => new FuelEfficiency(100 / _value, FuelEfficiencyUnit.LiterPer100Kilometers), - (FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MeterPerCubicMeter) => new FuelEfficiency(_value * 1e6, FuelEfficiencyUnit.MeterPerCubicMeter), (FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MilePerUkGallon) => new FuelEfficiency(_value * 4.54609 / 1.609344, FuelEfficiencyUnit.MilePerUkGallon), (FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MilePerUsGallon) => new FuelEfficiency(_value * 3.785411784 / 1.609344, FuelEfficiencyUnit.MilePerUsGallon), diff --git a/UnitsNet/GeneratedCode/Resources/FuelEfficiency.restext b/UnitsNet/GeneratedCode/Resources/FuelEfficiency.restext index 04c6c740d3..af9fb4fe9d 100644 --- a/UnitsNet/GeneratedCode/Resources/FuelEfficiency.restext +++ b/UnitsNet/GeneratedCode/Resources/FuelEfficiency.restext @@ -1,5 +1,4 @@ KilometersPerLiter=km/l LitersPer100Kilometers=l/100km -MetersPerCubicMeter=m/m³ MilesPerUkGallon=mpg (imp.) MilesPerUsGallon=mpg (U.S.) diff --git a/UnitsNet/GeneratedCode/Units/FuelEfficiencyUnit.g.cs b/UnitsNet/GeneratedCode/Units/FuelEfficiencyUnit.g.cs index 872f1e2807..24491dee95 100644 --- a/UnitsNet/GeneratedCode/Units/FuelEfficiencyUnit.g.cs +++ b/UnitsNet/GeneratedCode/Units/FuelEfficiencyUnit.g.cs @@ -27,7 +27,6 @@ public enum FuelEfficiencyUnit { KilometerPerLiter = 1, LiterPer100Kilometers = 2, - MeterPerCubicMeter = 7, MilePerUkGallon = 3, MilePerUsGallon = 4, } From 1490f836b91cce060ac4f45d0e45d82713ee6b48 Mon Sep 17 00:00:00 2001 From: lipchev Date: Sun, 19 Jan 2025 15:00:11 +0200 Subject: [PATCH 4/4] remove the MeterPerCubicMeter from the UnitEnumValues.g.json --- Common/UnitEnumValues.g.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Common/UnitEnumValues.g.json b/Common/UnitEnumValues.g.json index b336c2f580..19ab8982d4 100644 --- a/Common/UnitEnumValues.g.json +++ b/Common/UnitEnumValues.g.json @@ -533,8 +533,7 @@ "KilometerPerLiter": 1, "LiterPer100Kilometers": 2, "MilePerUkGallon": 3, - "MilePerUsGallon": 4, - "MeterPerCubicMeter": 7 + "MilePerUsGallon": 4 }, "HeatFlux": { "BtuPerHourSquareFoot": 1,