diff --git a/Common/UnitDefinitions/Duration.json b/Common/UnitDefinitions/Duration.json index a435e0b3fe..6dbe1809fb 100644 --- a/Common/UnitDefinitions/Duration.json +++ b/Common/UnitDefinitions/Duration.json @@ -128,7 +128,7 @@ }, "FromUnitToBaseFunc": "{x}", "FromBaseToUnitFunc": "{x}", - "Prefixes": [ "Nano", "Micro", "Milli" ], + "Prefixes": [ "Pico", "Nano", "Micro", "Milli" ], "Localization": [ { "Culture": "en-US", diff --git a/Common/UnitEnumValues.g.json b/Common/UnitEnumValues.g.json index 8230deab39..ee31cc9f9a 100644 --- a/Common/UnitEnumValues.g.json +++ b/Common/UnitEnumValues.g.json @@ -232,7 +232,8 @@ "Second": 9, "Week": 10, "Year365": 11, - "Sol": 15 + "Sol": 15, + "Picosecond": 12 }, "DynamicViscosity": { "Centipoise": 1, diff --git a/UnitsNet.NanoFramework/GeneratedCode/Quantities/Duration.g.cs b/UnitsNet.NanoFramework/GeneratedCode/Quantities/Duration.g.cs index 97319ed612..ac88b28275 100644 --- a/UnitsNet.NanoFramework/GeneratedCode/Quantities/Duration.g.cs +++ b/UnitsNet.NanoFramework/GeneratedCode/Quantities/Duration.g.cs @@ -118,6 +118,11 @@ public Duration(double value, DurationUnit unit) /// public double Nanoseconds => As(DurationUnit.Nanosecond); + /// + /// Gets a value of this quantity converted into + /// + public double Picoseconds => As(DurationUnit.Picosecond); + /// /// Gets a value of this quantity converted into /// @@ -182,6 +187,11 @@ public Duration(double value, DurationUnit unit) /// public static Duration FromNanoseconds(double nanoseconds) => new Duration(nanoseconds, DurationUnit.Nanosecond); + /// + /// Creates a from . + /// + public static Duration FromPicoseconds(double picoseconds) => new Duration(picoseconds, DurationUnit.Picosecond); + /// /// Creates a from . /// @@ -250,6 +260,7 @@ private double GetValueInBaseUnit() DurationUnit.Minute => _value * 60, DurationUnit.Month30 => _value * 30 * 24 * 3600, DurationUnit.Nanosecond => (_value) * 1e-9d, + DurationUnit.Picosecond => (_value) * 1e-12d, DurationUnit.Second => _value, DurationUnit.Sol => _value * 88775.244, DurationUnit.Week => _value * 7 * 24 * 3600, @@ -275,6 +286,7 @@ private double GetValueAs(DurationUnit unit) DurationUnit.Minute => baseUnitValue / 60, DurationUnit.Month30 => baseUnitValue / (30 * 24 * 3600), DurationUnit.Nanosecond => (baseUnitValue) / 1e-9d, + DurationUnit.Picosecond => (baseUnitValue) / 1e-12d, DurationUnit.Second => baseUnitValue, DurationUnit.Sol => baseUnitValue / 88775.244, DurationUnit.Week => baseUnitValue / (7 * 24 * 3600), diff --git a/UnitsNet.NanoFramework/GeneratedCode/Units/DurationUnit.g.cs b/UnitsNet.NanoFramework/GeneratedCode/Units/DurationUnit.g.cs index 6b9d1d317a..7ae6fe672f 100644 --- a/UnitsNet.NanoFramework/GeneratedCode/Units/DurationUnit.g.cs +++ b/UnitsNet.NanoFramework/GeneratedCode/Units/DurationUnit.g.cs @@ -33,6 +33,7 @@ public enum DurationUnit Minute = 6, Month30 = 7, Nanosecond = 8, + Picosecond = 12, Second = 9, Sol = 15, Week = 10, diff --git a/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToDurationExtensionsTest.g.cs b/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToDurationExtensionsTest.g.cs index 5810630356..e69838bbb6 100644 --- a/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToDurationExtensionsTest.g.cs +++ b/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToDurationExtensionsTest.g.cs @@ -56,6 +56,10 @@ public void NumberToMonths30Test() => public void NumberToNanosecondsTest() => Assert.Equal(Duration.FromNanoseconds(2), 2.Nanoseconds()); + [Fact] + public void NumberToPicosecondsTest() => + Assert.Equal(Duration.FromPicoseconds(2), 2.Picoseconds()); + [Fact] public void NumberToSecondsTest() => Assert.Equal(Duration.FromSeconds(2), 2.Seconds()); diff --git a/UnitsNet.NumberExtensions/GeneratedCode/NumberToDurationExtensions.g.cs b/UnitsNet.NumberExtensions/GeneratedCode/NumberToDurationExtensions.g.cs index fade63eb31..55aa0a6a3a 100644 --- a/UnitsNet.NumberExtensions/GeneratedCode/NumberToDurationExtensions.g.cs +++ b/UnitsNet.NumberExtensions/GeneratedCode/NumberToDurationExtensions.g.cs @@ -120,6 +120,17 @@ public static Duration Nanoseconds(this T value) => Duration.FromNanoseconds(value.ToDouble(null)); #endif + /// + public static Duration Picoseconds(this T value) + where T : notnull +#if NET7_0_OR_GREATER + , INumber + => Duration.FromPicoseconds(double.CreateChecked(value)); +#else + , IConvertible + => Duration.FromPicoseconds(value.ToDouble(null)); +#endif + /// public static Duration Seconds(this T value) where T : notnull diff --git a/UnitsNet.Tests/CustomCode/DurationTests.cs b/UnitsNet.Tests/CustomCode/DurationTests.cs index 62599c24d7..9753a43986 100644 --- a/UnitsNet.Tests/CustomCode/DurationTests.cs +++ b/UnitsNet.Tests/CustomCode/DurationTests.cs @@ -32,11 +32,16 @@ public class DurationTests : DurationTestsBase protected override double JulianYearsInOneSecond => 3.16880878140289e-08; protected override double SolsInOneSecond => 1.126440159375963e-5; - + + protected override double PicosecondsInOneSecond => 1e+12; + [Fact] public void AllBaseQuantityUnitsAreBaseUnits() { - Assert.All(Duration.Info.UnitInfos, unitInfo => Assert.Equal(new BaseUnits(time: unitInfo.Value), unitInfo.BaseUnits)); + Assert.All( + Duration.Info.UnitInfos, + unitInfo => Assert.Equal(new BaseUnits(time: unitInfo.Value), unitInfo.BaseUnits) + ); } [Fact] @@ -73,7 +78,10 @@ public static void ToTimeSpanShouldNotThrowExceptionOnValuesSlightlySmallerThanT [InlineData(100, Units.DurationUnit.Nanosecond)] [InlineData(1, Units.DurationUnit.Microsecond)] [InlineData(1.234, Units.DurationUnit.Millisecond)] - public static void ToTimeSpanShouldNotRoundToMillisecond(double value, Units.DurationUnit unit) + public static void ToTimeSpanShouldNotRoundToMillisecond( + double value, + Units.DurationUnit unit + ) { Duration duration = Duration.From(value, unit); TimeSpan timeSpan = duration.ToTimeSpan(); @@ -196,11 +204,22 @@ public void DurationTimesVolumeFlowEqualsVolume() [InlineData("1 сек", 1, "ru-RU")] [InlineData("1000 мс", 1, "ru-RU")] [InlineData("1000 мсек", 1, "ru-RU")] - public void DurationFromStringUsingMultipleAbbreviationsParsedCorrectly(string textValue, double expectedSeconds, string? culture = null) - { - var cultureInfo = culture == null ? CultureInfo.InvariantCulture : CultureInfo.GetCultureInfo(culture); - - AssertEx.EqualTolerance(expectedSeconds, Duration.Parse(textValue, cultureInfo).Seconds, SecondsTolerance); + public void DurationFromStringUsingMultipleAbbreviationsParsedCorrectly( + string textValue, + double expectedSeconds, + string? culture = null + ) + { + var cultureInfo = + culture == null + ? CultureInfo.InvariantCulture + : CultureInfo.GetCultureInfo(culture); + + AssertEx.EqualTolerance( + expectedSeconds, + Duration.Parse(textValue, cultureInfo).Seconds, + SecondsTolerance + ); } [Fact] diff --git a/UnitsNet.Tests/GeneratedCode/TestsBase/DurationTestsBase.g.cs b/UnitsNet.Tests/GeneratedCode/TestsBase/DurationTestsBase.g.cs index 0d995447c0..4130410785 100644 --- a/UnitsNet.Tests/GeneratedCode/TestsBase/DurationTestsBase.g.cs +++ b/UnitsNet.Tests/GeneratedCode/TestsBase/DurationTestsBase.g.cs @@ -47,6 +47,7 @@ public abstract partial class DurationTestsBase : QuantityTestsBase protected abstract double MinutesInOneSecond { get; } protected abstract double Months30InOneSecond { get; } protected abstract double NanosecondsInOneSecond { get; } + protected abstract double PicosecondsInOneSecond { get; } protected abstract double SecondsInOneSecond { get; } protected abstract double SolsInOneSecond { get; } protected abstract double WeeksInOneSecond { get; } @@ -61,6 +62,7 @@ public abstract partial class DurationTestsBase : QuantityTestsBase protected virtual double MinutesTolerance { get { return 1e-5; } } protected virtual double Months30Tolerance { get { return 1e-5; } } protected virtual double NanosecondsTolerance { get { return 1e-5; } } + protected virtual double PicosecondsTolerance { get { return 1e-5; } } protected virtual double SecondsTolerance { get { return 1e-5; } } protected virtual double SolsTolerance { get { return 1e-5; } } protected virtual double WeeksTolerance { get { return 1e-5; } } @@ -79,6 +81,7 @@ public abstract partial class DurationTestsBase : QuantityTestsBase DurationUnit.Minute => (MinutesInOneSecond, MinutesTolerance), DurationUnit.Month30 => (Months30InOneSecond, Months30Tolerance), DurationUnit.Nanosecond => (NanosecondsInOneSecond, NanosecondsTolerance), + DurationUnit.Picosecond => (PicosecondsInOneSecond, PicosecondsTolerance), DurationUnit.Second => (SecondsInOneSecond, SecondsTolerance), DurationUnit.Sol => (SolsInOneSecond, SolsTolerance), DurationUnit.Week => (WeeksInOneSecond, WeeksTolerance), @@ -97,6 +100,7 @@ public abstract partial class DurationTestsBase : QuantityTestsBase new object[] { DurationUnit.Minute }, new object[] { DurationUnit.Month30 }, new object[] { DurationUnit.Nanosecond }, + new object[] { DurationUnit.Picosecond }, new object[] { DurationUnit.Second }, new object[] { DurationUnit.Sol }, new object[] { DurationUnit.Week }, @@ -176,6 +180,7 @@ public void SecondToDurationUnits() AssertEx.EqualTolerance(MinutesInOneSecond, second.Minutes, MinutesTolerance); AssertEx.EqualTolerance(Months30InOneSecond, second.Months30, Months30Tolerance); AssertEx.EqualTolerance(NanosecondsInOneSecond, second.Nanoseconds, NanosecondsTolerance); + AssertEx.EqualTolerance(PicosecondsInOneSecond, second.Picoseconds, PicosecondsTolerance); AssertEx.EqualTolerance(SecondsInOneSecond, second.Seconds, SecondsTolerance); AssertEx.EqualTolerance(SolsInOneSecond, second.Sols, SolsTolerance); AssertEx.EqualTolerance(WeeksInOneSecond, second.Weeks, WeeksTolerance); @@ -217,21 +222,25 @@ public void From_ValueAndUnit_ReturnsQuantityWithSameValueAndUnit() AssertEx.EqualTolerance(1, quantity07.Nanoseconds, NanosecondsTolerance); Assert.Equal(DurationUnit.Nanosecond, quantity07.Unit); - var quantity08 = Duration.From(1, DurationUnit.Second); - AssertEx.EqualTolerance(1, quantity08.Seconds, SecondsTolerance); - Assert.Equal(DurationUnit.Second, quantity08.Unit); + var quantity08 = Duration.From(1, DurationUnit.Picosecond); + AssertEx.EqualTolerance(1, quantity08.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, quantity08.Unit); - var quantity09 = Duration.From(1, DurationUnit.Sol); - AssertEx.EqualTolerance(1, quantity09.Sols, SolsTolerance); - Assert.Equal(DurationUnit.Sol, quantity09.Unit); + var quantity09 = Duration.From(1, DurationUnit.Second); + AssertEx.EqualTolerance(1, quantity09.Seconds, SecondsTolerance); + Assert.Equal(DurationUnit.Second, quantity09.Unit); - var quantity10 = Duration.From(1, DurationUnit.Week); - AssertEx.EqualTolerance(1, quantity10.Weeks, WeeksTolerance); - Assert.Equal(DurationUnit.Week, quantity10.Unit); + var quantity10 = Duration.From(1, DurationUnit.Sol); + AssertEx.EqualTolerance(1, quantity10.Sols, SolsTolerance); + Assert.Equal(DurationUnit.Sol, quantity10.Unit); - var quantity11 = Duration.From(1, DurationUnit.Year365); - AssertEx.EqualTolerance(1, quantity11.Years365, Years365Tolerance); - Assert.Equal(DurationUnit.Year365, quantity11.Unit); + var quantity11 = Duration.From(1, DurationUnit.Week); + AssertEx.EqualTolerance(1, quantity11.Weeks, WeeksTolerance); + Assert.Equal(DurationUnit.Week, quantity11.Unit); + + var quantity12 = Duration.From(1, DurationUnit.Year365); + AssertEx.EqualTolerance(1, quantity12.Years365, Years365Tolerance); + Assert.Equal(DurationUnit.Year365, quantity12.Unit); } @@ -265,6 +274,7 @@ public void As() AssertEx.EqualTolerance(MinutesInOneSecond, second.As(DurationUnit.Minute), MinutesTolerance); AssertEx.EqualTolerance(Months30InOneSecond, second.As(DurationUnit.Month30), Months30Tolerance); AssertEx.EqualTolerance(NanosecondsInOneSecond, second.As(DurationUnit.Nanosecond), NanosecondsTolerance); + AssertEx.EqualTolerance(PicosecondsInOneSecond, second.As(DurationUnit.Picosecond), PicosecondsTolerance); AssertEx.EqualTolerance(SecondsInOneSecond, second.As(DurationUnit.Second), SecondsTolerance); AssertEx.EqualTolerance(SolsInOneSecond, second.As(DurationUnit.Sol), SolsTolerance); AssertEx.EqualTolerance(WeeksInOneSecond, second.As(DurationUnit.Week), WeeksTolerance); @@ -695,6 +705,55 @@ public void Parse() Assert.Equal(DurationUnit.Nanosecond, parsed.Unit); } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } + try + { + var parsed = Duration.Parse("1 ps", CultureInfo.GetCultureInfo("en-US")); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } + + try + { + var parsed = Duration.Parse("1 psec", CultureInfo.GetCultureInfo("en-US")); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } + + try + { + var parsed = Duration.Parse("1 psecs", CultureInfo.GetCultureInfo("en-US")); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } + + try + { + var parsed = Duration.Parse("1 psecond", CultureInfo.GetCultureInfo("en-US")); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } + + try + { + var parsed = Duration.Parse("1 pseconds", CultureInfo.GetCultureInfo("en-US")); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } + + try + { + var parsed = Duration.Parse("1 псек", CultureInfo.GetCultureInfo("ru-RU")); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } + + try + { + var parsed = Duration.Parse("1 пс", CultureInfo.GetCultureInfo("ru-RU")); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } catch (AmbiguousUnitParseException) { /* Some units have the same abbreviations */ } + try { var parsed = Duration.Parse("1 s", CultureInfo.GetCultureInfo("en-US")); @@ -1082,6 +1141,48 @@ public void TryParse() Assert.Equal(DurationUnit.Nanosecond, parsed.Unit); } + { + Assert.True(Duration.TryParse("1 ps", CultureInfo.GetCultureInfo("en-US"), out var parsed)); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } + + { + Assert.True(Duration.TryParse("1 psec", CultureInfo.GetCultureInfo("en-US"), out var parsed)); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } + + { + Assert.True(Duration.TryParse("1 psecs", CultureInfo.GetCultureInfo("en-US"), out var parsed)); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } + + { + Assert.True(Duration.TryParse("1 psecond", CultureInfo.GetCultureInfo("en-US"), out var parsed)); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } + + { + Assert.True(Duration.TryParse("1 pseconds", CultureInfo.GetCultureInfo("en-US"), out var parsed)); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } + + { + Assert.True(Duration.TryParse("1 псек", CultureInfo.GetCultureInfo("ru-RU"), out var parsed)); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } + + { + Assert.True(Duration.TryParse("1 пс", CultureInfo.GetCultureInfo("ru-RU"), out var parsed)); + AssertEx.EqualTolerance(1, parsed.Picoseconds, PicosecondsTolerance); + Assert.Equal(DurationUnit.Picosecond, parsed.Unit); + } + { Assert.True(Duration.TryParse("1 s", CultureInfo.GetCultureInfo("en-US"), out var parsed)); AssertEx.EqualTolerance(1, parsed.Seconds, SecondsTolerance); @@ -1214,6 +1315,11 @@ public void TryParse() [InlineData("nsecs", DurationUnit.Nanosecond)] [InlineData("nsecond", DurationUnit.Nanosecond)] [InlineData("nseconds", DurationUnit.Nanosecond)] + [InlineData("ps", DurationUnit.Picosecond)] + [InlineData("psec", DurationUnit.Picosecond)] + [InlineData("psecs", DurationUnit.Picosecond)] + [InlineData("psecond", DurationUnit.Picosecond)] + [InlineData("pseconds", DurationUnit.Picosecond)] [InlineData("s", DurationUnit.Second)] [InlineData("sec", DurationUnit.Second)] [InlineData("secs", DurationUnit.Second)] @@ -1268,6 +1374,11 @@ public void ParseUnit_WithUsEnglishCurrentCulture(string abbreviation, DurationU [InlineData("nsecs", DurationUnit.Nanosecond)] [InlineData("nsecond", DurationUnit.Nanosecond)] [InlineData("nseconds", DurationUnit.Nanosecond)] + [InlineData("ps", DurationUnit.Picosecond)] + [InlineData("psec", DurationUnit.Picosecond)] + [InlineData("psecs", DurationUnit.Picosecond)] + [InlineData("psecond", DurationUnit.Picosecond)] + [InlineData("pseconds", DurationUnit.Picosecond)] [InlineData("s", DurationUnit.Second)] [InlineData("sec", DurationUnit.Second)] [InlineData("secs", DurationUnit.Second)] @@ -1322,6 +1433,11 @@ public void ParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(string [InlineData("en-US", "nsecs", DurationUnit.Nanosecond)] [InlineData("en-US", "nsecond", DurationUnit.Nanosecond)] [InlineData("en-US", "nseconds", DurationUnit.Nanosecond)] + [InlineData("en-US", "ps", DurationUnit.Picosecond)] + [InlineData("en-US", "psec", DurationUnit.Picosecond)] + [InlineData("en-US", "psecs", DurationUnit.Picosecond)] + [InlineData("en-US", "psecond", DurationUnit.Picosecond)] + [InlineData("en-US", "pseconds", DurationUnit.Picosecond)] [InlineData("en-US", "s", DurationUnit.Second)] [InlineData("en-US", "sec", DurationUnit.Second)] [InlineData("en-US", "secs", DurationUnit.Second)] @@ -1346,6 +1462,8 @@ public void ParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(string [InlineData("ru-RU", "месяц", DurationUnit.Month30)] [InlineData("ru-RU", "нсек", DurationUnit.Nanosecond)] [InlineData("ru-RU", "нс", DurationUnit.Nanosecond)] + [InlineData("ru-RU", "псек", DurationUnit.Picosecond)] + [InlineData("ru-RU", "пс", DurationUnit.Picosecond)] [InlineData("ru-RU", "сек", DurationUnit.Second)] [InlineData("ru-RU", "с", DurationUnit.Second)] [InlineData("ru-RU", "нед", DurationUnit.Week)] @@ -1391,6 +1509,11 @@ public void ParseUnit_WithCurrentCulture(string culture, string abbreviation, Du [InlineData("en-US", "nsecs", DurationUnit.Nanosecond)] [InlineData("en-US", "nsecond", DurationUnit.Nanosecond)] [InlineData("en-US", "nseconds", DurationUnit.Nanosecond)] + [InlineData("en-US", "ps", DurationUnit.Picosecond)] + [InlineData("en-US", "psec", DurationUnit.Picosecond)] + [InlineData("en-US", "psecs", DurationUnit.Picosecond)] + [InlineData("en-US", "psecond", DurationUnit.Picosecond)] + [InlineData("en-US", "pseconds", DurationUnit.Picosecond)] [InlineData("en-US", "s", DurationUnit.Second)] [InlineData("en-US", "sec", DurationUnit.Second)] [InlineData("en-US", "secs", DurationUnit.Second)] @@ -1415,6 +1538,8 @@ public void ParseUnit_WithCurrentCulture(string culture, string abbreviation, Du [InlineData("ru-RU", "месяц", DurationUnit.Month30)] [InlineData("ru-RU", "нсек", DurationUnit.Nanosecond)] [InlineData("ru-RU", "нс", DurationUnit.Nanosecond)] + [InlineData("ru-RU", "псек", DurationUnit.Picosecond)] + [InlineData("ru-RU", "пс", DurationUnit.Picosecond)] [InlineData("ru-RU", "сек", DurationUnit.Second)] [InlineData("ru-RU", "с", DurationUnit.Second)] [InlineData("ru-RU", "нед", DurationUnit.Week)] @@ -1459,6 +1584,11 @@ public void ParseUnit_WithCulture(string culture, string abbreviation, DurationU [InlineData("nsecs", DurationUnit.Nanosecond)] [InlineData("nsecond", DurationUnit.Nanosecond)] [InlineData("nseconds", DurationUnit.Nanosecond)] + [InlineData("ps", DurationUnit.Picosecond)] + [InlineData("psec", DurationUnit.Picosecond)] + [InlineData("psecs", DurationUnit.Picosecond)] + [InlineData("psecond", DurationUnit.Picosecond)] + [InlineData("pseconds", DurationUnit.Picosecond)] [InlineData("s", DurationUnit.Second)] [InlineData("sec", DurationUnit.Second)] [InlineData("secs", DurationUnit.Second)] @@ -1513,6 +1643,11 @@ public void TryParseUnit_WithUsEnglishCurrentCulture(string abbreviation, Durati [InlineData("nsecs", DurationUnit.Nanosecond)] [InlineData("nsecond", DurationUnit.Nanosecond)] [InlineData("nseconds", DurationUnit.Nanosecond)] + [InlineData("ps", DurationUnit.Picosecond)] + [InlineData("psec", DurationUnit.Picosecond)] + [InlineData("psecs", DurationUnit.Picosecond)] + [InlineData("psecond", DurationUnit.Picosecond)] + [InlineData("pseconds", DurationUnit.Picosecond)] [InlineData("s", DurationUnit.Second)] [InlineData("sec", DurationUnit.Second)] [InlineData("secs", DurationUnit.Second)] @@ -1567,6 +1702,11 @@ public void TryParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(stri [InlineData("en-US", "nsecs", DurationUnit.Nanosecond)] [InlineData("en-US", "nsecond", DurationUnit.Nanosecond)] [InlineData("en-US", "nseconds", DurationUnit.Nanosecond)] + [InlineData("en-US", "ps", DurationUnit.Picosecond)] + [InlineData("en-US", "psec", DurationUnit.Picosecond)] + [InlineData("en-US", "psecs", DurationUnit.Picosecond)] + [InlineData("en-US", "psecond", DurationUnit.Picosecond)] + [InlineData("en-US", "pseconds", DurationUnit.Picosecond)] [InlineData("en-US", "s", DurationUnit.Second)] [InlineData("en-US", "sec", DurationUnit.Second)] [InlineData("en-US", "secs", DurationUnit.Second)] @@ -1591,6 +1731,8 @@ public void TryParseUnit_WithUnsupportedCurrentCulture_FallsBackToUsEnglish(stri [InlineData("ru-RU", "месяц", DurationUnit.Month30)] [InlineData("ru-RU", "нсек", DurationUnit.Nanosecond)] [InlineData("ru-RU", "нс", DurationUnit.Nanosecond)] + [InlineData("ru-RU", "псек", DurationUnit.Picosecond)] + [InlineData("ru-RU", "пс", DurationUnit.Picosecond)] [InlineData("ru-RU", "сек", DurationUnit.Second)] [InlineData("ru-RU", "с", DurationUnit.Second)] [InlineData("ru-RU", "нед", DurationUnit.Week)] @@ -1636,6 +1778,11 @@ public void TryParseUnit_WithCurrentCulture(string culture, string abbreviation, [InlineData("en-US", "nsecs", DurationUnit.Nanosecond)] [InlineData("en-US", "nsecond", DurationUnit.Nanosecond)] [InlineData("en-US", "nseconds", DurationUnit.Nanosecond)] + [InlineData("en-US", "ps", DurationUnit.Picosecond)] + [InlineData("en-US", "psec", DurationUnit.Picosecond)] + [InlineData("en-US", "psecs", DurationUnit.Picosecond)] + [InlineData("en-US", "psecond", DurationUnit.Picosecond)] + [InlineData("en-US", "pseconds", DurationUnit.Picosecond)] [InlineData("en-US", "s", DurationUnit.Second)] [InlineData("en-US", "sec", DurationUnit.Second)] [InlineData("en-US", "secs", DurationUnit.Second)] @@ -1660,6 +1807,8 @@ public void TryParseUnit_WithCurrentCulture(string culture, string abbreviation, [InlineData("ru-RU", "месяц", DurationUnit.Month30)] [InlineData("ru-RU", "нсек", DurationUnit.Nanosecond)] [InlineData("ru-RU", "нс", DurationUnit.Nanosecond)] + [InlineData("ru-RU", "псек", DurationUnit.Picosecond)] + [InlineData("ru-RU", "пс", DurationUnit.Picosecond)] [InlineData("ru-RU", "сек", DurationUnit.Second)] [InlineData("ru-RU", "с", DurationUnit.Second)] [InlineData("ru-RU", "нед", DurationUnit.Week)] @@ -1743,6 +1892,7 @@ public void ConversionRoundTrip() AssertEx.EqualTolerance(1, Duration.FromMinutes(second.Minutes).Seconds, MinutesTolerance); AssertEx.EqualTolerance(1, Duration.FromMonths30(second.Months30).Seconds, Months30Tolerance); AssertEx.EqualTolerance(1, Duration.FromNanoseconds(second.Nanoseconds).Seconds, NanosecondsTolerance); + AssertEx.EqualTolerance(1, Duration.FromPicoseconds(second.Picoseconds).Seconds, PicosecondsTolerance); AssertEx.EqualTolerance(1, Duration.FromSeconds(second.Seconds).Seconds, SecondsTolerance); AssertEx.EqualTolerance(1, Duration.FromSols(second.Sols).Seconds, SolsTolerance); AssertEx.EqualTolerance(1, Duration.FromWeeks(second.Weeks).Seconds, WeeksTolerance); @@ -1902,6 +2052,7 @@ public void ToString_ReturnsValueAndUnitAbbreviationInCurrentCulture() Assert.Equal("1 m", new Duration(1, DurationUnit.Minute).ToString()); Assert.Equal("1 mo", new Duration(1, DurationUnit.Month30).ToString()); Assert.Equal("1 ns", new Duration(1, DurationUnit.Nanosecond).ToString()); + Assert.Equal("1 ps", new Duration(1, DurationUnit.Picosecond).ToString()); Assert.Equal("1 s", new Duration(1, DurationUnit.Second).ToString()); Assert.Equal("1 sol", new Duration(1, DurationUnit.Sol).ToString()); Assert.Equal("1 wk", new Duration(1, DurationUnit.Week).ToString()); @@ -1922,6 +2073,7 @@ public void ToString_WithSwedishCulture_ReturnsUnitAbbreviationForEnglishCulture Assert.Equal("1 m", new Duration(1, DurationUnit.Minute).ToString(swedishCulture)); Assert.Equal("1 mo", new Duration(1, DurationUnit.Month30).ToString(swedishCulture)); Assert.Equal("1 ns", new Duration(1, DurationUnit.Nanosecond).ToString(swedishCulture)); + Assert.Equal("1 ps", new Duration(1, DurationUnit.Picosecond).ToString(swedishCulture)); Assert.Equal("1 s", new Duration(1, DurationUnit.Second).ToString(swedishCulture)); Assert.Equal("1 sol", new Duration(1, DurationUnit.Sol).ToString(swedishCulture)); Assert.Equal("1 wk", new Duration(1, DurationUnit.Week).ToString(swedishCulture)); diff --git a/UnitsNet/GeneratedCode/Quantities/BitRate.g.cs b/UnitsNet/GeneratedCode/Quantities/BitRate.g.cs index 62ce547c49..17f3122c88 100644 --- a/UnitsNet/GeneratedCode/Quantities/BitRate.g.cs +++ b/UnitsNet/GeneratedCode/Quantities/BitRate.g.cs @@ -111,7 +111,7 @@ static BitRate() new UnitInfo(BitRateUnit.TebibitPerSecond, "TebibitsPerSecond", BaseUnits.Undefined, "BitRate"), new UnitInfo(BitRateUnit.TebibytePerSecond, "TebibytesPerSecond", BaseUnits.Undefined, "BitRate"), new UnitInfo(BitRateUnit.TebioctetPerSecond, "TebioctetsPerSecond", BaseUnits.Undefined, "BitRate"), - new UnitInfo(BitRateUnit.TerabitPerSecond, "TerabitsPerSecond", BaseUnits.Undefined, "BitRate"), + new UnitInfo(BitRateUnit.TerabitPerSecond, "TerabitsPerSecond", new BaseUnits(time: DurationUnit.Picosecond), "BitRate"), new UnitInfo(BitRateUnit.TerabytePerSecond, "TerabytesPerSecond", BaseUnits.Undefined, "BitRate"), new UnitInfo(BitRateUnit.TeraoctetPerSecond, "TeraoctetsPerSecond", BaseUnits.Undefined, "BitRate"), }, diff --git a/UnitsNet/GeneratedCode/Quantities/Duration.g.cs b/UnitsNet/GeneratedCode/Quantities/Duration.g.cs index 29a6b52b27..c93b5f7fd7 100644 --- a/UnitsNet/GeneratedCode/Quantities/Duration.g.cs +++ b/UnitsNet/GeneratedCode/Quantities/Duration.g.cs @@ -97,6 +97,7 @@ static Duration() new UnitInfo(DurationUnit.Minute, "Minutes", new BaseUnits(time: DurationUnit.Minute), "Duration"), new UnitInfo(DurationUnit.Month30, "Months30", new BaseUnits(time: DurationUnit.Month30), "Duration"), new UnitInfo(DurationUnit.Nanosecond, "Nanoseconds", new BaseUnits(time: DurationUnit.Nanosecond), "Duration"), + new UnitInfo(DurationUnit.Picosecond, "Picoseconds", new BaseUnits(time: DurationUnit.Picosecond), "Duration"), new UnitInfo(DurationUnit.Second, "Seconds", new BaseUnits(time: DurationUnit.Second), "Duration"), new UnitInfo(DurationUnit.Sol, "Sols", new BaseUnits(time: DurationUnit.Sol), "Duration"), new UnitInfo(DurationUnit.Week, "Weeks", new BaseUnits(time: DurationUnit.Week), "Duration"), @@ -243,6 +244,11 @@ public Duration(double value, UnitSystem unitSystem) /// public double Nanoseconds => As(DurationUnit.Nanosecond); + /// + /// Gets a value of this quantity converted into + /// + public double Picoseconds => As(DurationUnit.Picosecond); + /// /// Gets a value of this quantity converted into /// @@ -282,6 +288,7 @@ internal static void RegisterDefaultConversions(UnitConverter unitConverter) unitConverter.SetConversionFunction(DurationUnit.Minute, DurationUnit.Second, quantity => quantity.ToUnit(DurationUnit.Second)); unitConverter.SetConversionFunction(DurationUnit.Month30, DurationUnit.Second, quantity => quantity.ToUnit(DurationUnit.Second)); unitConverter.SetConversionFunction(DurationUnit.Nanosecond, DurationUnit.Second, quantity => quantity.ToUnit(DurationUnit.Second)); + unitConverter.SetConversionFunction(DurationUnit.Picosecond, DurationUnit.Second, quantity => quantity.ToUnit(DurationUnit.Second)); unitConverter.SetConversionFunction(DurationUnit.Sol, DurationUnit.Second, quantity => quantity.ToUnit(DurationUnit.Second)); unitConverter.SetConversionFunction(DurationUnit.Week, DurationUnit.Second, quantity => quantity.ToUnit(DurationUnit.Second)); unitConverter.SetConversionFunction(DurationUnit.Year365, DurationUnit.Second, quantity => quantity.ToUnit(DurationUnit.Second)); @@ -298,6 +305,7 @@ internal static void RegisterDefaultConversions(UnitConverter unitConverter) unitConverter.SetConversionFunction(DurationUnit.Second, DurationUnit.Minute, quantity => quantity.ToUnit(DurationUnit.Minute)); unitConverter.SetConversionFunction(DurationUnit.Second, DurationUnit.Month30, quantity => quantity.ToUnit(DurationUnit.Month30)); unitConverter.SetConversionFunction(DurationUnit.Second, DurationUnit.Nanosecond, quantity => quantity.ToUnit(DurationUnit.Nanosecond)); + unitConverter.SetConversionFunction(DurationUnit.Second, DurationUnit.Picosecond, quantity => quantity.ToUnit(DurationUnit.Picosecond)); unitConverter.SetConversionFunction(DurationUnit.Second, DurationUnit.Sol, quantity => quantity.ToUnit(DurationUnit.Sol)); unitConverter.SetConversionFunction(DurationUnit.Second, DurationUnit.Week, quantity => quantity.ToUnit(DurationUnit.Week)); unitConverter.SetConversionFunction(DurationUnit.Second, DurationUnit.Year365, quantity => quantity.ToUnit(DurationUnit.Year365)); @@ -392,6 +400,14 @@ public static Duration FromNanoseconds(double value) return new Duration(value, DurationUnit.Nanosecond); } + /// + /// Creates a from . + /// + public static Duration FromPicoseconds(double value) + { + return new Duration(value, DurationUnit.Picosecond); + } + /// /// Creates a from . /// @@ -992,6 +1008,7 @@ private bool TryToUnit(DurationUnit unit, [NotNullWhen(true)] out Duration? conv (DurationUnit.Minute, DurationUnit.Second) => new Duration(_value * 60, DurationUnit.Second), (DurationUnit.Month30, DurationUnit.Second) => new Duration(_value * 30 * 24 * 3600, DurationUnit.Second), (DurationUnit.Nanosecond, DurationUnit.Second) => new Duration((_value) * 1e-9d, DurationUnit.Second), + (DurationUnit.Picosecond, DurationUnit.Second) => new Duration((_value) * 1e-12d, DurationUnit.Second), (DurationUnit.Sol, DurationUnit.Second) => new Duration(_value * 88775.244, DurationUnit.Second), (DurationUnit.Week, DurationUnit.Second) => new Duration(_value * 7 * 24 * 3600, DurationUnit.Second), (DurationUnit.Year365, DurationUnit.Second) => new Duration(_value * 365 * 24 * 3600, DurationUnit.Second), @@ -1005,6 +1022,7 @@ private bool TryToUnit(DurationUnit unit, [NotNullWhen(true)] out Duration? conv (DurationUnit.Second, DurationUnit.Minute) => new Duration(_value / 60, DurationUnit.Minute), (DurationUnit.Second, DurationUnit.Month30) => new Duration(_value / (30 * 24 * 3600), DurationUnit.Month30), (DurationUnit.Second, DurationUnit.Nanosecond) => new Duration((_value) / 1e-9d, DurationUnit.Nanosecond), + (DurationUnit.Second, DurationUnit.Picosecond) => new Duration((_value) / 1e-12d, DurationUnit.Picosecond), (DurationUnit.Second, DurationUnit.Sol) => new Duration(_value / 88775.244, DurationUnit.Sol), (DurationUnit.Second, DurationUnit.Week) => new Duration(_value / (7 * 24 * 3600), DurationUnit.Week), (DurationUnit.Second, DurationUnit.Year365) => new Duration(_value / (365 * 24 * 3600), DurationUnit.Year365), diff --git a/UnitsNet/GeneratedCode/Quantities/Frequency.g.cs b/UnitsNet/GeneratedCode/Quantities/Frequency.g.cs index 34e9ca573d..b5a1dce3a0 100644 --- a/UnitsNet/GeneratedCode/Quantities/Frequency.g.cs +++ b/UnitsNet/GeneratedCode/Quantities/Frequency.g.cs @@ -86,7 +86,7 @@ static Frequency() new UnitInfo(FrequencyUnit.Millihertz, "Millihertz", BaseUnits.Undefined, "Frequency"), new UnitInfo(FrequencyUnit.PerSecond, "PerSecond", new BaseUnits(time: DurationUnit.Second), "Frequency"), new UnitInfo(FrequencyUnit.RadianPerSecond, "RadiansPerSecond", BaseUnits.Undefined, "Frequency"), - new UnitInfo(FrequencyUnit.Terahertz, "Terahertz", BaseUnits.Undefined, "Frequency"), + new UnitInfo(FrequencyUnit.Terahertz, "Terahertz", new BaseUnits(time: DurationUnit.Picosecond), "Frequency"), }, BaseUnit, Zero, BaseDimensions); diff --git a/UnitsNet/GeneratedCode/Quantities/Length.g.cs b/UnitsNet/GeneratedCode/Quantities/Length.g.cs index c60350df15..059814fa3e 100644 --- a/UnitsNet/GeneratedCode/Quantities/Length.g.cs +++ b/UnitsNet/GeneratedCode/Quantities/Length.g.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by \generate-code.bat. // diff --git a/UnitsNet/GeneratedCode/Quantities/Radioactivity.g.cs b/UnitsNet/GeneratedCode/Quantities/Radioactivity.g.cs index 14f51a39b3..64c834881c 100644 --- a/UnitsNet/GeneratedCode/Quantities/Radioactivity.g.cs +++ b/UnitsNet/GeneratedCode/Quantities/Radioactivity.g.cs @@ -98,9 +98,9 @@ static Radioactivity() new UnitInfo(RadioactivityUnit.Picocurie, "Picocuries", BaseUnits.Undefined, "Radioactivity"), new UnitInfo(RadioactivityUnit.Picorutherford, "Picorutherfords", BaseUnits.Undefined, "Radioactivity"), new UnitInfo(RadioactivityUnit.Rutherford, "Rutherfords", new BaseUnits(time: DurationUnit.Second), "Radioactivity"), - new UnitInfo(RadioactivityUnit.Terabecquerel, "Terabecquerels", BaseUnits.Undefined, "Radioactivity"), - new UnitInfo(RadioactivityUnit.Teracurie, "Teracuries", BaseUnits.Undefined, "Radioactivity"), - new UnitInfo(RadioactivityUnit.Terarutherford, "Terarutherfords", BaseUnits.Undefined, "Radioactivity"), + new UnitInfo(RadioactivityUnit.Terabecquerel, "Terabecquerels", new BaseUnits(time: DurationUnit.Picosecond), "Radioactivity"), + new UnitInfo(RadioactivityUnit.Teracurie, "Teracuries", new BaseUnits(time: DurationUnit.Picosecond), "Radioactivity"), + new UnitInfo(RadioactivityUnit.Terarutherford, "Terarutherfords", new BaseUnits(time: DurationUnit.Picosecond), "Radioactivity"), }, BaseUnit, Zero, BaseDimensions); diff --git a/UnitsNet/GeneratedCode/Resources/Duration.restext b/UnitsNet/GeneratedCode/Resources/Duration.restext index ed0324654e..24e9e8ef9d 100644 --- a/UnitsNet/GeneratedCode/Resources/Duration.restext +++ b/UnitsNet/GeneratedCode/Resources/Duration.restext @@ -6,6 +6,7 @@ Milliseconds=ms,msec,msecs,msecond,mseconds Minutes=m,min,minute,minutes Months30=mo,month,months Nanoseconds=ns,nsec,nsecs,nsecond,nseconds +Picoseconds=ps,psec,psecs,psecond,pseconds Seconds=s,sec,secs,second,seconds Sols=sol Weeks=wk,week,weeks diff --git a/UnitsNet/GeneratedCode/Resources/Duration.ru-RU.restext b/UnitsNet/GeneratedCode/Resources/Duration.ru-RU.restext index ed11b09eba..cfc3524d56 100644 --- a/UnitsNet/GeneratedCode/Resources/Duration.ru-RU.restext +++ b/UnitsNet/GeneratedCode/Resources/Duration.ru-RU.restext @@ -5,6 +5,7 @@ Milliseconds=мсек,мс Minutes=мин Months30=месяц Nanoseconds=нсек,нс +Picoseconds=псек,пс Seconds=сек,с Weeks=нед Years365=год diff --git a/UnitsNet/GeneratedCode/Units/DurationUnit.g.cs b/UnitsNet/GeneratedCode/Units/DurationUnit.g.cs index 6b9d1d317a..7ae6fe672f 100644 --- a/UnitsNet/GeneratedCode/Units/DurationUnit.g.cs +++ b/UnitsNet/GeneratedCode/Units/DurationUnit.g.cs @@ -33,6 +33,7 @@ public enum DurationUnit Minute = 6, Month30 = 7, Nanosecond = 8, + Picosecond = 12, Second = 9, Sol = 15, Week = 10,