diff --git a/Common/UnitDefinitions/FuelEfficiency.json b/Common/UnitDefinitions/FuelEfficiency.json
index aa9c693d14..d018d437ba 100644
--- a/Common/UnitDefinitions/FuelEfficiency.json
+++ b/Common/UnitDefinitions/FuelEfficiency.json
@@ -1,55 +1,67 @@
{
- "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
+ }
+ ]
+ }
+ ]
+}
\ 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 d4d29d5e42..de90703f76 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.
@@ -165,10 +165,10 @@ 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.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 +182,10 @@ 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.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.Tests/CustomCode/FuelEfficiencyTests.cs b/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs
index 31da379824..05100e7909 100644
--- a/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs
+++ b/UnitsNet.Tests/CustomCode/FuelEfficiencyTests.cs
@@ -17,8 +17,6 @@
// 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
@@ -26,16 +24,35 @@ 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 KilometersPerLiterInOneKilometerPerLiter => 1;
+ protected override double LitersPer100KilometersInOneKilometerPerLiter => 100;
+ protected override double MilesPerUkGallonInOneKilometerPerLiter => 2.824809363318222;
+ protected override double MilesPerUsGallonInOneKilometerPerLiter => 2.352145833333333;
+
+
+ [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_FromDefaultQuantity_ReturnsQuantityWithGivenUnit(unit);
+ base.ToUnit_UnitSystem_SI_ReturnsQuantityInSIUnits();
}
}
}
diff --git a/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs b/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs
index e9c06eaa14..f9baaa1571 100644
--- a/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs
+++ b/UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs
@@ -39,10 +39,10 @@ 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 MilesPerUkGallonInOneKilometerPerLiter { get; }
+ protected abstract double MilesPerUsGallonInOneKilometerPerLiter { get; }
// ReSharper disable VirtualMemberNeverOverriden.Global
protected virtual double KilometersPerLiterTolerance { get { return 1e-5; } }
@@ -55,10 +55,10 @@ 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.MilePerUkGallon => (MilesPerUkGallonInOneKilometerPerLiter, MilesPerUkGallonTolerance),
+ FuelEfficiencyUnit.MilePerUsGallon => (MilesPerUsGallonInOneKilometerPerLiter, MilesPerUsGallonTolerance),
_ => throw new NotSupportedException()
};
}
@@ -76,14 +76,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 +92,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 +133,13 @@ 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(MilesPerUkGallonInOneKilometerPerLiter, kilometerperliter.MilesPerUkGallon, MilesPerUkGallonTolerance);
+ AssertEx.EqualTolerance(MilesPerUsGallonInOneKilometerPerLiter, kilometerperliter.MilesPerUsGallon, MilesPerUsGallonTolerance);
}
[Fact]
@@ -143,19 +164,19 @@ public void From_ValueAndUnit_ReturnsQuantityWithSameValueAndUnit()
}
[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 +184,29 @@ 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(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 +218,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 +278,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()
{
@@ -461,71 +521,71 @@ public void ToUnit_FromIQuantity_ReturnsTheExpectedIQuantity(FuelEfficiencyUnit
[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.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);
@@ -565,32 +625,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]
@@ -635,20 +695,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]
@@ -656,7 +716,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);
@@ -669,161 +729,161 @@ 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 Convert_GetTypeCode_Returns_Object()
{
- var quantity = FuelEfficiency.FromLitersPer100Kilometers(1.0);
+ var quantity = FuelEfficiency.FromKilometersPerLiter(1.0);
Assert.Equal(TypeCode.Object, Convert.GetTypeCode(quantity));
}
[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());
}
@@ -832,8 +892,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..0532819357 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",
@@ -98,6 +98,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 +128,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 +138,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; }
@@ -194,17 +208,17 @@ 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.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.MilePerUkGallon, quantity => quantity.ToUnit(FuelEfficiencyUnit.MilePerUkGallon));
+ unitConverter.SetConversionFunction(FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MilePerUsGallon, quantity => quantity.ToUnit(FuelEfficiencyUnit.MilePerUsGallon));
}
///
@@ -462,7 +476,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 +744,14 @@ 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.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.MilePerUkGallon) => new FuelEfficiency(_value * 4.54609 / 1.609344, FuelEfficiencyUnit.MilePerUkGallon),
+ (FuelEfficiencyUnit.KilometerPerLiter, FuelEfficiencyUnit.MilePerUsGallon) => new FuelEfficiency(_value * 3.785411784 / 1.609344, FuelEfficiencyUnit.MilePerUsGallon),
_ => null
};