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,