Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
2 changes: 1 addition & 1 deletion Pipeline/Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ partial class Build : NukeBuild
/// <para />
/// Afterward, you can update the package reference in `Directory.Packages.props` and reset this flag.
/// </summary>
readonly BuildScope BuildScope = BuildScope.Default;
readonly BuildScope BuildScope = BuildScope.CoreOnly;

[Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")]
readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release;
Expand Down
5 changes: 5 additions & 0 deletions Source/Testably.Abstractions.Interface/ITimeSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,9 @@ public interface ITimeSystem
/// Abstractions for <see cref="System.Threading.Timer" />.
/// </summary>
ITimerFactory Timer { get; }

/// <summary>
/// Abstractions for <see cref="System.TimeZoneInfo" />.
/// </summary>
ITimeZoneInfo TimeZoneInfo { get; }
}
22 changes: 22 additions & 0 deletions Source/Testably.Abstractions.Interface/TimeSystem/ITimeZoneInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using System;
using System.Collections.ObjectModel;

namespace Testably.Abstractions.TimeSystem;

/// <summary>
/// Abstractions for <see cref="System.TimeZoneInfo" />.
/// </summary>
public interface ITimeZoneInfo : ITimeSystemEntity
{
/// <inheritdoc cref="TimeZoneInfo.Local" />
TimeZoneInfo Local { get; }

/// <inheritdoc cref="TimeZoneInfo.Utc" />
TimeZoneInfo Utc { get; }

/// <inheritdoc cref="TimeZoneInfo.FindSystemTimeZoneById(string)" />
TimeZoneInfo FindSystemTimeZoneById(string id);

/// <inheritdoc cref="TimeZoneInfo.GetSystemTimeZones()" />
ReadOnlyCollection<TimeZoneInfo> GetSystemTimeZones();
}
4 changes: 4 additions & 0 deletions Source/Testably.Abstractions/RealTimeSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public RealTimeSystem()
Task = new TaskWrapper(this);
Thread = new ThreadWrapper(this);
Timer = new TimerFactory(this);
TimeZoneInfo = new TimeZoneInfoWrapper(this);
}

#region ITimeSystem Members
Expand All @@ -47,5 +48,8 @@ public RealTimeSystem()
/// <inheritdoc cref="ITimeSystem.Timer" />
public ITimerFactory Timer { get; }

/// <inheritdoc cref="ITimeSystem.TimeZoneInfo" />
public ITimeZoneInfo TimeZoneInfo { get; }

#endregion
}
35 changes: 35 additions & 0 deletions Source/Testably.Abstractions/TimeSystem/TimeZoneInfoWrapper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System;
using System.Collections.ObjectModel;

namespace Testably.Abstractions.TimeSystem;

internal sealed class TimeZoneInfoWrapper : ITimeZoneInfo
{
internal TimeZoneInfoWrapper(RealTimeSystem timeSystem)
{
TimeSystem = timeSystem;
}

#region ITimeZoneInfo Members

/// <inheritdoc cref="ITimeZoneInfo.Local" />
public TimeZoneInfo Local
=> TimeZoneInfo.Local;

/// <inheritdoc cref="ITimeSystemEntity.TimeSystem" />
public ITimeSystem TimeSystem { get; }

/// <inheritdoc cref="ITimeZoneInfo.Utc" />
public TimeZoneInfo Utc
=> TimeZoneInfo.Utc;

/// <inheritdoc cref="ITimeZoneInfo.FindSystemTimeZoneById(string)" />
public TimeZoneInfo FindSystemTimeZoneById(string id)
=> TimeZoneInfo.FindSystemTimeZoneById(id);

/// <inheritdoc cref="ITimeZoneInfo.GetSystemTimeZones()" />
public ReadOnlyCollection<TimeZoneInfo> GetSystemTimeZones()
=> TimeZoneInfo.GetSystemTimeZones();

#endregion
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ namespace Testably.Abstractions
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
public Testably.Abstractions.TimeSystem.IThread Thread { get; }
public Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
public Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ namespace Testably.Abstractions
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
public Testably.Abstractions.TimeSystem.IThread Thread { get; }
public Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
public Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ namespace Testably.Abstractions
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
public Testably.Abstractions.TimeSystem.IThread Thread { get; }
public Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
public Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ namespace Testably.Abstractions
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
public Testably.Abstractions.TimeSystem.IThread Thread { get; }
public Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
public Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ namespace Testably.Abstractions
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
public Testably.Abstractions.TimeSystem.IThread Thread { get; }
public Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
public Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ namespace Testably.Abstractions
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
public Testably.Abstractions.TimeSystem.IThread Thread { get; }
public Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
public Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ namespace Testably.Abstractions
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
Testably.Abstractions.TimeSystem.IThread Thread { get; }
Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Expand Down Expand Up @@ -190,6 +191,13 @@ namespace Testably.Abstractions.TimeSystem
{
Testably.Abstractions.ITimeSystem TimeSystem { get; }
}
public interface ITimeZoneInfo : Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeZoneInfo Local { get; }
System.TimeZoneInfo Utc { get; }
System.TimeZoneInfo FindSystemTimeZoneById(string id);
System.Collections.ObjectModel.ReadOnlyCollection<System.TimeZoneInfo> GetSystemTimeZones();
}
public interface ITimer : System.IAsyncDisposable, System.IDisposable, Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
bool Change(System.TimeSpan dueTime, System.TimeSpan period);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ namespace Testably.Abstractions
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
Testably.Abstractions.TimeSystem.IThread Thread { get; }
Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Expand Down Expand Up @@ -141,6 +142,13 @@ namespace Testably.Abstractions.TimeSystem
{
Testably.Abstractions.ITimeSystem TimeSystem { get; }
}
public interface ITimeZoneInfo : Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeZoneInfo Local { get; }
System.TimeZoneInfo Utc { get; }
System.TimeZoneInfo FindSystemTimeZoneById(string id);
System.Collections.ObjectModel.ReadOnlyCollection<System.TimeZoneInfo> GetSystemTimeZones();
}
public interface ITimer : System.IAsyncDisposable, System.IDisposable, Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
bool Change(System.TimeSpan dueTime, System.TimeSpan period);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ namespace Testably.Abstractions
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
Testably.Abstractions.TimeSystem.IThread Thread { get; }
Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Expand Down Expand Up @@ -172,6 +173,13 @@ namespace Testably.Abstractions.TimeSystem
{
Testably.Abstractions.ITimeSystem TimeSystem { get; }
}
public interface ITimeZoneInfo : Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeZoneInfo Local { get; }
System.TimeZoneInfo Utc { get; }
System.TimeZoneInfo FindSystemTimeZoneById(string id);
System.Collections.ObjectModel.ReadOnlyCollection<System.TimeZoneInfo> GetSystemTimeZones();
}
public interface ITimer : System.IAsyncDisposable, System.IDisposable, Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
bool Change(System.TimeSpan dueTime, System.TimeSpan period);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ namespace Testably.Abstractions
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
Testably.Abstractions.TimeSystem.IThread Thread { get; }
Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Expand Down Expand Up @@ -176,6 +177,13 @@ namespace Testably.Abstractions.TimeSystem
{
Testably.Abstractions.ITimeSystem TimeSystem { get; }
}
public interface ITimeZoneInfo : Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeZoneInfo Local { get; }
System.TimeZoneInfo Utc { get; }
System.TimeZoneInfo FindSystemTimeZoneById(string id);
System.Collections.ObjectModel.ReadOnlyCollection<System.TimeZoneInfo> GetSystemTimeZones();
}
public interface ITimer : System.IAsyncDisposable, System.IDisposable, Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
bool Change(System.TimeSpan dueTime, System.TimeSpan period);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ namespace Testably.Abstractions
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
Testably.Abstractions.TimeSystem.IThread Thread { get; }
Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Expand Down Expand Up @@ -115,6 +116,13 @@ namespace Testably.Abstractions.TimeSystem
{
Testably.Abstractions.ITimeSystem TimeSystem { get; }
}
public interface ITimeZoneInfo : Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeZoneInfo Local { get; }
System.TimeZoneInfo Utc { get; }
System.TimeZoneInfo FindSystemTimeZoneById(string id);
System.Collections.ObjectModel.ReadOnlyCollection<System.TimeZoneInfo> GetSystemTimeZones();
}
public interface ITimer : System.IDisposable, Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
bool Change(System.TimeSpan dueTime, System.TimeSpan period);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ namespace Testably.Abstractions
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
Testably.Abstractions.TimeSystem.IThread Thread { get; }
Testably.Abstractions.TimeSystem.ITimeZoneInfo TimeZoneInfo { get; }
Testably.Abstractions.TimeSystem.ITimerFactory Timer { get; }
}
}
Expand Down Expand Up @@ -133,6 +134,13 @@ namespace Testably.Abstractions.TimeSystem
{
Testably.Abstractions.ITimeSystem TimeSystem { get; }
}
public interface ITimeZoneInfo : Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeZoneInfo Local { get; }
System.TimeZoneInfo Utc { get; }
System.TimeZoneInfo FindSystemTimeZoneById(string id);
System.Collections.ObjectModel.ReadOnlyCollection<System.TimeZoneInfo> GetSystemTimeZones();
}
public interface ITimer : System.IAsyncDisposable, System.IDisposable, Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
bool Change(System.TimeSpan dueTime, System.TimeSpan period);
Expand Down
10 changes: 10 additions & 0 deletions Tests/Testably.Abstractions.Parity.Tests/ParityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,16 @@ public async Task
await That(parityErrors).IsEmpty();
}

[Test]
public async Task ITimeZoneInfo_EnsureParityWith_TimeZoneInfo()
{
List<string> parityErrors = Parity.TimeZoneInfo
.GetErrorsToStaticType<ITimeZoneInfo>(
typeof(TimeZoneInfo));

await That(parityErrors).IsEmpty();
}

[Test]
public async Task IZipArchive_EnsureParityWith_ZipArchive()
{
Expand Down
16 changes: 16 additions & 0 deletions Tests/Testably.Abstractions.Parity.Tests/TestHelpers/Parity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Threading;

namespace Testably.Abstractions.Parity.Tests.TestHelpers;
Expand Down Expand Up @@ -105,6 +106,21 @@ public class Parity
]),
]);

public ParityCheck TimeZoneInfo { get; } = new(excludeMethods:
[
typeof(TimeZoneInfo).GetMethod(nameof(System.TimeZoneInfo.ClearCachedData)),
typeof(TimeZoneInfo).GetMethod(nameof(System.TimeZoneInfo.FromSerializedString)),
..typeof(TimeZoneInfo).GetMethods().Where(x => string.Equals(x.Name, nameof(System.TimeZoneInfo.ConvertTime), StringComparison.Ordinal)),
..typeof(TimeZoneInfo).GetMethods().Where(x => string.Equals(x.Name, nameof(System.TimeZoneInfo.ConvertTimeBySystemTimeZoneId), StringComparison.Ordinal)),
..typeof(TimeZoneInfo).GetMethods().Where(x => string.Equals(x.Name, nameof(System.TimeZoneInfo.ConvertTimeFromUtc), StringComparison.Ordinal)),
..typeof(TimeZoneInfo).GetMethods().Where(x => string.Equals(x.Name, nameof(System.TimeZoneInfo.ConvertTimeToUtc), StringComparison.Ordinal)),
..typeof(TimeZoneInfo).GetMethods().Where(x => string.Equals(x.Name, nameof(System.TimeZoneInfo.CreateCustomTimeZone), StringComparison.Ordinal)),
..typeof(TimeZoneInfo).GetMethods().Where(x => string.Equals(x.Name, "GetSystemTimeZones", StringComparison.Ordinal) && x.GetParameters().Length > 0),
..typeof(TimeZoneInfo).GetMethods().Where(x => string.Equals(x.Name, "TryConvertIanaIdToWindowsId", StringComparison.Ordinal)),
..typeof(TimeZoneInfo).GetMethods().Where(x => string.Equals(x.Name, "TryConvertWindowsIdToIanaId", StringComparison.Ordinal)),
..typeof(TimeZoneInfo).GetMethods().Where(x => string.Equals(x.Name, "TryFindSystemTimeZoneById", StringComparison.Ordinal)),
]);

public ParityCheck ZipArchive { get; } = new();

public ParityCheck ZipArchiveEntry { get; } = new(excludeMethods:
Expand Down
Loading