AssertExtensions.Throws<ArgumentException>(null, () => TimeSpan.FromSeconds(double.NaN)); // Value is NaN
}
- public static IEnumerable<object[]> FromMilliseconds_TestData()
+ public static IEnumerable<object[]> FromMilliseconds_TestData_NetCore()
{
- yield return new object[] { 1500.5, new TimeSpan(0, 0, 0, 1, 501) };
- yield return new object[] { 2.5, new TimeSpan(0, 0, 0, 0, 3) };
- yield return new object[] { 1.0, new TimeSpan(0, 0, 0, 0, 1) };
- yield return new object[] { 0.0, new TimeSpan(0, 0, 0, 0, 0) };
- yield return new object[] { -1.0, new TimeSpan(0, 0, 0, 0, -1) };
- yield return new object[] { -2.5, new TimeSpan(0, 0, 0, 0, -3) };
- yield return new object[] { -1500.5, new TimeSpan(0, 0, 0, -1, -501) };
+ yield return new object[] { 1500.5, new TimeSpan(15005000) };
+ yield return new object[] { 2.5, new TimeSpan(25000) };
+ yield return new object[] { 1.0, new TimeSpan(10000) };
+ yield return new object[] { 0.0, new TimeSpan(0) };
+ yield return new object[] { -1.0, new TimeSpan(-10000) };
+ yield return new object[] { -2.5, new TimeSpan(-25000) };
+ yield return new object[] { -1500.5, new TimeSpan(-15005000) };
+ }
+
+ [Theory]
+ [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+ [MemberData(nameof(FromMilliseconds_TestData_NetCore))]
+ public static void FromMilliseconds_Netcore(double value, TimeSpan expected)
+ {
+ Assert.Equal(expected, TimeSpan.FromMilliseconds(value));
+ }
+
+ public static IEnumerable<object[]> FromMilliseconds_TestData_Desktop()
+ {
+ yield return new object[] { 1500.5, new TimeSpan(15010000) };
+ yield return new object[] { 2.5, new TimeSpan(30000) };
+ yield return new object[] { 1.0, new TimeSpan(10000) };
+ yield return new object[] { 0.0, new TimeSpan(0) };
+ yield return new object[] { -1.0, new TimeSpan(-10000) };
+ yield return new object[] { -2.5, new TimeSpan(-30000) };
+ yield return new object[] { -1500.5, new TimeSpan(-15010000) };
}
[Theory]
- [MemberData(nameof(FromMilliseconds_TestData))]
- public static void FromMilliseconds(double value, TimeSpan expected)
+ [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+ [MemberData(nameof(FromMilliseconds_TestData_Desktop))]
+ public static void FromMilliseconds_Desktop(double value, TimeSpan expected)
{
Assert.Equal(expected, TimeSpan.FromMilliseconds(value));
}
[Fact]
public static void FromMilliseconds_Invalid()
{
- double maxMilliseconds = long.MaxValue / TimeSpan.TicksPerMillisecond;
+ double maxMilliseconds = (double)TimeSpan.MaxValue.Ticks / (double)TimeSpan.TicksPerMillisecond + 1;
Assert.Throws<OverflowException>(() => TimeSpan.FromMilliseconds(double.PositiveInfinity)); // Value is positive infinity
Assert.Throws<OverflowException>(() => TimeSpan.FromMilliseconds(double.NegativeInfinity)); // Value is positive infinity
yield return new object[] {new TimeSpan(14, 2, 30, 0), 192.0, TimeSpan.FromDays(2708)};
yield return new object[] {TimeSpan.FromDays(366), Math.PI, new TimeSpan(993446995288779)};
yield return new object[] {TimeSpan.FromDays(366), -Math.E, new TimeSpan(-859585952922633)};
- yield return new object[] {TimeSpan.FromDays(29.530587981), 13.0, TimeSpan.FromDays(383.897643819444)};
- yield return new object[] {TimeSpan.FromDays(-29.530587981), -12.0, TimeSpan.FromDays(354.367055833333)};
+ yield return new object[] {TimeSpan.FromDays(29.530587981), 13.0, TimeSpan.FromDays(29.530587981 * 13.0) };
+ yield return new object[] {TimeSpan.FromDays(-29.530587981), -12.0, TimeSpan.FromDays(-29.530587981 * -12.0) };
yield return new object[] {TimeSpan.FromDays(-29.530587981), 0.0, TimeSpan.Zero};
yield return new object[] {TimeSpan.MaxValue, 0.5, TimeSpan.FromTicks((long)(long.MaxValue * 0.5))};
}
char[] dst = new char[1];
Assert.Throws<FormatException>(() => new TimeSpan().TryFormat(dst.AsSpan(), out int charsWritten, invalidFormat, null));
}
+
+ [Fact]
+ public static void ConvertToTimeSpanPrecisionTest()
+ {
+ Assert.Equal(12345, TimeSpan.FromMilliseconds(1.23456).Ticks);
+ Assert.Equal(12345, TimeSpan.FromMilliseconds(1.234567).Ticks);
+
+ Assert.Equal(12345600, TimeSpan.FromSeconds(1.23456).Ticks);
+
+ Assert.Equal(1.23456 * 60 * 10_000_000, TimeSpan.FromMinutes(1.23456).Ticks);
+ }
}
}