Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@ public interface ITimeProvider
/// </summary>
DateTime MinValue { get; set; }

/// <summary>
/// The start time of the time provider.
/// </summary>
/// <remarks>
/// This is the time, the time provider was initialized at the beginning of the test.
Comment thread
vbreuss marked this conversation as resolved.
Outdated
/// </remarks>
DateTime StartTime { get; }
Comment thread
vbreuss marked this conversation as resolved.

/// <summary>
/// Gets or sets the <see cref="IDateTime.UnixEpoch" />
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public TimeProviderMock(DateTime now, string description)
_now = now.Kind == DateTimeKind.Unspecified
? DateTime.SpecifyKind(now, DateTimeKind.Utc)
: now;

StartTime = _now;
_description = description;
}

Expand All @@ -41,6 +41,9 @@ public TimeProviderMock(DateTime now, string description)
public DateTime UnixEpoch { get; set; } = DateTime.UnixEpoch;
#endif

/// <inheritdoc cref="ITimeProvider.StartTime" />
public DateTime StartTime { get; }

/// <inheritdoc cref="ITimeProvider.AdvanceBy(TimeSpan)" />
public void AdvanceBy(TimeSpan interval)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,7 @@ namespace Testably.Abstractions.Testing.TimeSystem
{
System.DateTime MaxValue { get; set; }
System.DateTime MinValue { get; set; }
System.DateTime StartTime { get; }
System.DateTime UnixEpoch { get; set; }
void AdvanceBy(System.TimeSpan interval);
System.DateTime Read();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,7 @@ namespace Testably.Abstractions.Testing.TimeSystem
{
System.DateTime MaxValue { get; set; }
System.DateTime MinValue { get; set; }
System.DateTime StartTime { get; }
System.DateTime UnixEpoch { get; set; }
void AdvanceBy(System.TimeSpan interval);
System.DateTime Read();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,7 @@ namespace Testably.Abstractions.Testing.TimeSystem
{
System.DateTime MaxValue { get; set; }
System.DateTime MinValue { get; set; }
System.DateTime StartTime { get; }
System.DateTime UnixEpoch { get; set; }
void AdvanceBy(System.TimeSpan interval);
System.DateTime Read();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,7 @@ namespace Testably.Abstractions.Testing.TimeSystem
{
System.DateTime MaxValue { get; set; }
System.DateTime MinValue { get; set; }
System.DateTime StartTime { get; }
System.DateTime UnixEpoch { get; set; }
void AdvanceBy(System.TimeSpan interval);
System.DateTime Read();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,7 @@ namespace Testably.Abstractions.Testing.TimeSystem
{
System.DateTime MaxValue { get; set; }
System.DateTime MinValue { get; set; }
System.DateTime StartTime { get; }
System.DateTime UnixEpoch { get; set; }
void AdvanceBy(System.TimeSpan interval);
System.DateTime Read();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,7 @@ namespace Testably.Abstractions.Testing.TimeSystem
{
System.DateTime MaxValue { get; set; }
System.DateTime MinValue { get; set; }
System.DateTime StartTime { get; }
System.DateTime UnixEpoch { get; set; }
void AdvanceBy(System.TimeSpan interval);
System.DateTime Read();
Expand Down
22 changes: 18 additions & 4 deletions Tests/Testably.Abstractions.Testing.Tests/MockTimeSystemTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ public async Task Delay_Infinite_ShouldNotThrowException()
MockTimeSystem timeSystem = new();
Exception? exception =
await Record.ExceptionAsync(()
=> timeSystem.Task.Delay(Timeout.Infinite, TestContext.Current!.Execution.CancellationToken));
=> timeSystem.Task.Delay(Timeout.Infinite,
TestContext.Current!.Execution.CancellationToken));

await That(exception).IsNull();
}
Expand Down Expand Up @@ -56,14 +57,16 @@ async Task Act()
[Arguments(DateTimeKind.Local)]
[Arguments(DateTimeKind.Unspecified)]
[Arguments(DateTimeKind.Utc)]
public async Task DifferenceBetweenDateTimeNowAndDateTimeUtcNow_ShouldBeLocalTimeZoneOffsetFromUtc(DateTimeKind dateTimeKind)
public async Task
DifferenceBetweenDateTimeNowAndDateTimeUtcNow_ShouldBeLocalTimeZoneOffsetFromUtc(
DateTimeKind dateTimeKind)
{
DateTime now = TimeTestHelper.GetRandomTime(DateTimeKind.Local);

var expectedDifference = TimeZoneInfo.Local.GetUtcOffset(now);
TimeSpan expectedDifference = TimeZoneInfo.Local.GetUtcOffset(now);

MockTimeSystem timeSystem = new(DateTime.SpecifyKind(now, dateTimeKind));
var actualDifference = timeSystem.DateTime.Now - timeSystem.DateTime.UtcNow;
TimeSpan actualDifference = timeSystem.DateTime.Now - timeSystem.DateTime.UtcNow;

await That(actualDifference).IsEqualTo(expectedDifference);
}
Expand Down Expand Up @@ -109,6 +112,17 @@ public async Task Sleep_LessThanInfiniteTimeSpan_ShouldThrowArgumentOutOfRangeEx
await That(exception).IsExactly<ArgumentOutOfRangeException>();
}

[Test]
public async Task TimeProvider_StartTime_ShouldBeSetToInitialTime()
{
DateTime now = TimeTestHelper.GetRandomTime(DateTimeKind.Utc);
MockTimeSystem timeSystem = new(TimeProvider.Use(now));

timeSystem.TimeProvider.AdvanceBy(TimeSpan.FromMinutes(42));

await That(timeSystem.TimeProvider.StartTime).IsEqualTo(now);
}

[Test]
public async Task ToString_WithFixedContainer_ShouldContainTimeProvider()
{
Expand Down
Loading