Skip to content

Commit 4a9f7a5

Browse files
authored
Timestamps honor timezone Pt. 2 (#109)
* Tests * Fix
1 parent 9b9460f commit 4a9f7a5

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

source/trx2junit.Core/Extensions/TimeExtensions.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,13 @@ public static string ToTrxDateTime(this DateTimeOffset dt)
3333
value.Millisecond.TryFormat(buffer.Slice(20), out int written, "000");
3434
Debug.Assert(written == 3);
3535

36-
value.Offset.Hours.TryFormat(buffer.Slice(24), out written, "00");
36+
int offsetHours = value.Offset.Hours;
37+
if (offsetHours < 0)
38+
{
39+
buffer[23] = '-';
40+
offsetHours = -offsetHours;
41+
}
42+
offsetHours.TryFormat(buffer.Slice(24), out written, "00");
3743
Debug.Assert(written == 2);
3844
});
3945
}

tests/trx2junit.Core.Tests/Extensions/TimeExtensionsTests/ParseDateTime.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ public void Brute_force_validation()
5252
}
5353
//-------------------------------------------------------------------------
5454
[Test]
55-
public void Valid_TrxDateTime___OK()
55+
public void Valid_TrxDateTime___OK([Values(-1, 0, 1)] int offset)
5656
{
57-
DateTimeOffset now = new(2019, 11, 10, 15, 33, 27, 123, TimeSpan.FromHours(1d));
57+
DateTimeOffset now = new(2019, 11, 10, 15, 33, 27, 123, TimeSpan.FromHours(offset));
5858
string value = now.ToTrxDateTime();
5959

6060
DateTimeOffset? actual = value.ParseDateTime();

tests/trx2junit.Core.Tests/Extensions/TimeExtensionsTests/ToTrxDateTime.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ public string DateTime_given___correct_format(DateTimeOffset dateTime)
1717
//-------------------------------------------------------------------------
1818
private static IEnumerable<TestCaseData> DateTime_given___correct_format_TestCases()
1919
{
20-
yield return new TestCaseData(new DateTimeOffset(2019, 11, 10, 15, 33, 27, 446, TimeSpan.FromHours(0d))).Returns("2019-11-10T15:33:27.446+00:00");
21-
yield return new TestCaseData(new DateTimeOffset(2019, 11, 10, 15, 33, 27, 446, TimeSpan.FromHours(1d))).Returns("2019-11-10T15:33:27.446+01:00");
22-
yield return new TestCaseData(new DateTimeOffset(2019, 11, 10, 15, 33, 27, 446, TimeSpan.FromHours(2d))).Returns("2019-11-10T15:33:27.446+02:00");
20+
yield return new TestCaseData(new DateTimeOffset(2019, 11, 10, 15, 33, 27, 446, TimeSpan.FromHours(-2d))).Returns("2019-11-10T15:33:27.446-02:00");
21+
yield return new TestCaseData(new DateTimeOffset(2019, 11, 10, 15, 33, 27, 446, TimeSpan.FromHours(-1d))).Returns("2019-11-10T15:33:27.446-01:00");
22+
yield return new TestCaseData(new DateTimeOffset(2019, 11, 10, 15, 33, 27, 446, TimeSpan.FromHours( 0d))).Returns("2019-11-10T15:33:27.446+00:00");
23+
yield return new TestCaseData(new DateTimeOffset(2019, 11, 10, 15, 33, 27, 446, TimeSpan.FromHours( 1d))).Returns("2019-11-10T15:33:27.446+01:00");
24+
yield return new TestCaseData(new DateTimeOffset(2019, 11, 10, 15, 33, 27, 446, TimeSpan.FromHours( 2d))).Returns("2019-11-10T15:33:27.446+02:00");
2325
}
2426
}

0 commit comments

Comments
 (0)