-
-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathTimeUnitTests.cs
60 lines (56 loc) · 2.26 KB
/
TimeUnitTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using System;
using System.Collections.Generic;
using Xunit;
namespace Exceptionless.DateTimeExtensions.Tests {
public class TimeUnitTests {
public static IEnumerable<object[]> TestData => new[] {
new object[] { "1000 nanos", new TimeSpan(10) },
new object[] { "1000nanos", new TimeSpan(10) },
new object[] { "1000 NANOS", new TimeSpan(10) },
new object[] { "1000NANOS", new TimeSpan(10) },
new object[] { "10micros", new TimeSpan(100) },
new object[] { "10ms", new TimeSpan(0, 0, 0, 0, 10) },
new object[] { "10s", new TimeSpan(0, 0, 10) },
new object[] { "-10s", new TimeSpan(0, 0, -10) },
new object[] { "10m", new TimeSpan(0, 10, 0) },
new object[] { "10h", new TimeSpan(10, 0, 0) },
new object[] { "10d", new TimeSpan(10, 0, 0, 0) },
};
[Theory]
[MemberData(nameof(TestData))]
public void CanParse(string value, TimeSpan expected) {
Assert.Equal(expected, TimeUnit.Parse(value));
}
[Theory]
[InlineData(null)]
[InlineData("1.234h")] // fractional time
[InlineData("1234")] // missing unit
[InlineData("12unknownunit")]
[InlineData("12h.")]
public void VerifyParseFailure(string value) {
Assert.ThrowsAny<Exception>(() => TimeUnit.Parse(value));
}
[Theory]
[InlineData("1000 nanos", true)]
[InlineData("1000nanos", true)]
[InlineData("1000 NANOS", true)]
[InlineData("1000NANOS", true)]
[InlineData("10micros", true)]
[InlineData("10ms", true)]
[InlineData("10s", true)]
[InlineData("-10s", true)]
[InlineData("10m", true)]
[InlineData("10h", true)]
[InlineData("10d", true)]
[InlineData(null, false)]
[InlineData("1.234h", false)] // fractional time
[InlineData("1234", false)] // missing unit
[InlineData("12unknownunit", false)]
[InlineData("12h.", false)]
[InlineData("Blah/Blahs", false)]
public void VerifyTryParse(string value, bool expected) {
bool success = TimeUnit.TryParse(value, out var result);
Assert.Equal(expected, success);
}
}
}