diff --git a/Source/Testably.Abstractions.Interface/ITimeSystem.cs b/Source/Testably.Abstractions.Interface/ITimeSystem.cs
index cb959c5a3..b61f5e610 100644
--- a/Source/Testably.Abstractions.Interface/ITimeSystem.cs
+++ b/Source/Testably.Abstractions.Interface/ITimeSystem.cs
@@ -12,6 +12,11 @@ public interface ITimeSystem
///
IDateTime DateTime { get; }
+ ///
+ /// Abstractions for .
+ ///
+ IDateTimeOffset DateTimeOffset { get; }
+
#if FEATURE_PERIODIC_TIMER
///
/// Abstractions for .
diff --git a/Source/Testably.Abstractions.Interface/TimeSystem/IDateTimeOffset.cs b/Source/Testably.Abstractions.Interface/TimeSystem/IDateTimeOffset.cs
new file mode 100644
index 000000000..13ef7832b
--- /dev/null
+++ b/Source/Testably.Abstractions.Interface/TimeSystem/IDateTimeOffset.cs
@@ -0,0 +1,34 @@
+using System;
+
+namespace Testably.Abstractions.TimeSystem;
+
+///
+/// Abstractions for .
+///
+public interface IDateTimeOffset : ITimeSystemEntity
+{
+ ///
+ DateTimeOffset MaxValue { get; }
+
+ ///
+ DateTimeOffset MinValue { get; }
+
+ #pragma warning disable MA0202 // Branches differ only in XML doc comments
+#if NETSTANDARD2_0
+ ///
+ /// The value of this constant is equivalent to 00:00:00.0000000 UTC, January 1, 1970, in the Gregorian calendar.
+ /// defines the point in time when Unix time is equal to 0.
+ ///
+ DateTimeOffset UnixEpoch { get; }
+#else
+ ///
+ DateTimeOffset UnixEpoch { get; }
+#endif
+ #pragma warning restore MA0202
+
+ ///
+ DateTimeOffset Now { get; }
+
+ ///
+ DateTimeOffset UtcNow { get; }
+}
diff --git a/Source/Testably.Abstractions/RealTimeSystem.cs b/Source/Testably.Abstractions/RealTimeSystem.cs
index 3fbd3a179..269897ca5 100644
--- a/Source/Testably.Abstractions/RealTimeSystem.cs
+++ b/Source/Testably.Abstractions/RealTimeSystem.cs
@@ -16,6 +16,7 @@ public sealed class RealTimeSystem : ITimeSystem
public RealTimeSystem()
{
DateTime = new DateTimeWrapper(this);
+ DateTimeOffset = new DateTimeOffsetWrapper(this);
#if FEATURE_PERIODIC_TIMER
PeriodicTimer = new PeriodicTimerFactory(this);
#endif
@@ -31,6 +32,9 @@ public RealTimeSystem()
///
public IDateTime DateTime { get; }
+ ///
+ public IDateTimeOffset DateTimeOffset { get; }
+
#if FEATURE_PERIODIC_TIMER
///
public IPeriodicTimerFactory PeriodicTimer { get; }
diff --git a/Source/Testably.Abstractions/TimeSystem/DateTimeOffsetWrapper.cs b/Source/Testably.Abstractions/TimeSystem/DateTimeOffsetWrapper.cs
new file mode 100644
index 000000000..32d5957a1
--- /dev/null
+++ b/Source/Testably.Abstractions/TimeSystem/DateTimeOffsetWrapper.cs
@@ -0,0 +1,44 @@
+using System;
+
+namespace Testably.Abstractions.TimeSystem;
+
+internal sealed class DateTimeOffsetWrapper : IDateTimeOffset
+{
+ internal DateTimeOffsetWrapper(RealTimeSystem timeSystem)
+ {
+ TimeSystem = timeSystem;
+ }
+
+ #region IDateTimeOffset Members
+
+ ///
+ public DateTimeOffset MaxValue
+ => DateTimeOffset.MaxValue;
+
+ ///
+ public DateTimeOffset MinValue
+ => DateTimeOffset.MinValue;
+
+#if NETSTANDARD2_0
+ ///
+ public DateTimeOffset UnixEpoch
+ => new(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
+#else
+ ///
+ public DateTimeOffset UnixEpoch
+ => DateTimeOffset.UnixEpoch;
+#endif
+
+ ///
+ public DateTimeOffset Now
+ => DateTimeOffset.Now;
+
+ ///
+ public DateTimeOffset UtcNow
+ => DateTimeOffset.UtcNow;
+
+ ///
+ public ITimeSystem TimeSystem { get; }
+
+ #endregion
+}
diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net10.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net10.0.txt
index da5ef1df4..e6f139530 100644
--- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net10.0.txt
+++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net10.0.txt
@@ -27,6 +27,7 @@ namespace Testably.Abstractions
{
public RealTimeSystem() { }
public Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ public Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
public Testably.Abstractions.TimeSystem.IPeriodicTimerFactory PeriodicTimer { get; }
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net6.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net6.0.txt
index ffd57a9cd..3c4ec8518 100644
--- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net6.0.txt
+++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net6.0.txt
@@ -27,6 +27,7 @@ namespace Testably.Abstractions
{
public RealTimeSystem() { }
public Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ public Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
public Testably.Abstractions.TimeSystem.IThread Thread { get; }
diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net8.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net8.0.txt
index 87768f232..02023951d 100644
--- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net8.0.txt
+++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net8.0.txt
@@ -27,6 +27,7 @@ namespace Testably.Abstractions
{
public RealTimeSystem() { }
public Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ public Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
public Testably.Abstractions.TimeSystem.IPeriodicTimerFactory PeriodicTimer { get; }
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net9.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net9.0.txt
index 4ed96274c..a78be5033 100644
--- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net9.0.txt
+++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_net9.0.txt
@@ -27,6 +27,7 @@ namespace Testably.Abstractions
{
public RealTimeSystem() { }
public Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ public Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
public Testably.Abstractions.TimeSystem.IPeriodicTimerFactory PeriodicTimer { get; }
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_netstandard2.0.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_netstandard2.0.txt
index dbcc82f77..5f0b5abad 100644
--- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_netstandard2.0.txt
+++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_netstandard2.0.txt
@@ -27,6 +27,7 @@ namespace Testably.Abstractions
{
public RealTimeSystem() { }
public Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ public Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
public Testably.Abstractions.TimeSystem.IThread Thread { get; }
diff --git a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_netstandard2.1.txt b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_netstandard2.1.txt
index 2b0baa8b3..6f12a09d1 100644
--- a/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_netstandard2.1.txt
+++ b/Tests/Api/Testably.Abstractions.Api.Tests/Expected/Testably.Abstractions_netstandard2.1.txt
@@ -27,6 +27,7 @@ namespace Testably.Abstractions
{
public RealTimeSystem() { }
public Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ public Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
public Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
public Testably.Abstractions.TimeSystem.ITask Task { get; }
public Testably.Abstractions.TimeSystem.IThread Thread { get; }
diff --git a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net10.0.txt b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net10.0.txt
index 472f042f3..341ecc0cd 100644
--- a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net10.0.txt
+++ b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net10.0.txt
@@ -67,6 +67,7 @@ namespace Testably.Abstractions
public interface ITimeSystem
{
Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
Testably.Abstractions.TimeSystem.IPeriodicTimerFactory PeriodicTimer { get; }
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
@@ -143,6 +144,14 @@ namespace Testably.Abstractions.TimeSystem
System.DateTime UnixEpoch { get; }
System.DateTime UtcNow { get; }
}
+ public interface IDateTimeOffset : Testably.Abstractions.TimeSystem.ITimeSystemEntity
+ {
+ System.DateTimeOffset MaxValue { get; }
+ System.DateTimeOffset MinValue { get; }
+ System.DateTimeOffset Now { get; }
+ System.DateTimeOffset UnixEpoch { get; }
+ System.DateTimeOffset UtcNow { get; }
+ }
public interface IPeriodicTimer : System.IDisposable, Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeSpan Period { get; set; }
diff --git a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net6.0.txt b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net6.0.txt
index 6e7297252..f07e8f7dd 100644
--- a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net6.0.txt
+++ b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net6.0.txt
@@ -49,6 +49,7 @@ namespace Testably.Abstractions
public interface ITimeSystem
{
Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
Testably.Abstractions.TimeSystem.IThread Thread { get; }
@@ -106,6 +107,14 @@ namespace Testably.Abstractions.TimeSystem
System.DateTime UnixEpoch { get; }
System.DateTime UtcNow { get; }
}
+ public interface IDateTimeOffset : Testably.Abstractions.TimeSystem.ITimeSystemEntity
+ {
+ System.DateTimeOffset MaxValue { get; }
+ System.DateTimeOffset MinValue { get; }
+ System.DateTimeOffset Now { get; }
+ System.DateTimeOffset UnixEpoch { get; }
+ System.DateTimeOffset UtcNow { get; }
+ }
public interface IStopwatch : Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeSpan Elapsed { get; }
diff --git a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net8.0.txt b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net8.0.txt
index 10f488927..3cbec46c6 100644
--- a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net8.0.txt
+++ b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net8.0.txt
@@ -58,6 +58,7 @@ namespace Testably.Abstractions
public interface ITimeSystem
{
Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
Testably.Abstractions.TimeSystem.IPeriodicTimerFactory PeriodicTimer { get; }
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
@@ -125,6 +126,14 @@ namespace Testably.Abstractions.TimeSystem
System.DateTime UnixEpoch { get; }
System.DateTime UtcNow { get; }
}
+ public interface IDateTimeOffset : Testably.Abstractions.TimeSystem.ITimeSystemEntity
+ {
+ System.DateTimeOffset MaxValue { get; }
+ System.DateTimeOffset MinValue { get; }
+ System.DateTimeOffset Now { get; }
+ System.DateTimeOffset UnixEpoch { get; }
+ System.DateTimeOffset UtcNow { get; }
+ }
public interface IPeriodicTimer : System.IDisposable, Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeSpan Period { get; set; }
diff --git a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net9.0.txt b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net9.0.txt
index 016f7f9c0..5b7cb60eb 100644
--- a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net9.0.txt
+++ b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_net9.0.txt
@@ -60,6 +60,7 @@ namespace Testably.Abstractions
public interface ITimeSystem
{
Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
Testably.Abstractions.TimeSystem.IPeriodicTimerFactory PeriodicTimer { get; }
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
@@ -129,6 +130,14 @@ namespace Testably.Abstractions.TimeSystem
System.DateTime UnixEpoch { get; }
System.DateTime UtcNow { get; }
}
+ public interface IDateTimeOffset : Testably.Abstractions.TimeSystem.ITimeSystemEntity
+ {
+ System.DateTimeOffset MaxValue { get; }
+ System.DateTimeOffset MinValue { get; }
+ System.DateTimeOffset Now { get; }
+ System.DateTimeOffset UnixEpoch { get; }
+ System.DateTimeOffset UtcNow { get; }
+ }
public interface IPeriodicTimer : System.IDisposable, Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeSpan Period { get; set; }
diff --git a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.0.txt b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.0.txt
index 2c3d1ba70..e07740c28 100644
--- a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.0.txt
+++ b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.0.txt
@@ -36,6 +36,7 @@ namespace Testably.Abstractions
public interface ITimeSystem
{
Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
Testably.Abstractions.TimeSystem.IThread Thread { get; }
@@ -80,6 +81,14 @@ namespace Testably.Abstractions.TimeSystem
System.DateTime UnixEpoch { get; }
System.DateTime UtcNow { get; }
}
+ public interface IDateTimeOffset : Testably.Abstractions.TimeSystem.ITimeSystemEntity
+ {
+ System.DateTimeOffset MaxValue { get; }
+ System.DateTimeOffset MinValue { get; }
+ System.DateTimeOffset Now { get; }
+ System.DateTimeOffset UnixEpoch { get; }
+ System.DateTimeOffset UtcNow { get; }
+ }
public interface IStopwatch : Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeSpan Elapsed { get; }
diff --git a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.1.txt b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.1.txt
index 6d0f951fa..622c95aec 100644
--- a/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.1.txt
+++ b/Tests/Api/Testably.Abstractions.Core.Api.Tests/Expected/Testably.Abstractions.Interface_netstandard2.1.txt
@@ -45,6 +45,7 @@ namespace Testably.Abstractions
public interface ITimeSystem
{
Testably.Abstractions.TimeSystem.IDateTime DateTime { get; }
+ Testably.Abstractions.TimeSystem.IDateTimeOffset DateTimeOffset { get; }
Testably.Abstractions.TimeSystem.IStopwatchFactory Stopwatch { get; }
Testably.Abstractions.TimeSystem.ITask Task { get; }
Testably.Abstractions.TimeSystem.IThread Thread { get; }
@@ -98,6 +99,14 @@ namespace Testably.Abstractions.TimeSystem
System.DateTime UnixEpoch { get; }
System.DateTime UtcNow { get; }
}
+ public interface IDateTimeOffset : Testably.Abstractions.TimeSystem.ITimeSystemEntity
+ {
+ System.DateTimeOffset MaxValue { get; }
+ System.DateTimeOffset MinValue { get; }
+ System.DateTimeOffset Now { get; }
+ System.DateTimeOffset UnixEpoch { get; }
+ System.DateTimeOffset UtcNow { get; }
+ }
public interface IStopwatch : Testably.Abstractions.TimeSystem.ITimeSystemEntity
{
System.TimeSpan Elapsed { get; }
diff --git a/Tests/Testably.Abstractions.Parity.Tests/ParityTests.cs b/Tests/Testably.Abstractions.Parity.Tests/ParityTests.cs
index 8d919441f..c0b34871b 100644
--- a/Tests/Testably.Abstractions.Parity.Tests/ParityTests.cs
+++ b/Tests/Testably.Abstractions.Parity.Tests/ParityTests.cs
@@ -15,6 +15,26 @@ public abstract class ParityTests(
{
public TestHelpers.Parity Parity { get; } = parity;
+ [Test]
+ public async Task IDateTime_EnsureParityWith_DateTime()
+ {
+ List parityErrors = Parity.DateTime
+ .GetErrorsToStaticType(
+ typeof(DateTime));
+
+ await That(parityErrors).IsEmpty();
+ }
+
+ [Test]
+ public async Task IDateTimeOffset_EnsureParityWith_DateTimeOffset()
+ {
+ List parityErrors = Parity.DateTimeOffset
+ .GetErrorsToStaticType(
+ typeof(DateTimeOffset));
+
+ await That(parityErrors).IsEmpty();
+ }
+
[Test]
public async Task IDirectory_EnsureParityWith_Directory()
{
diff --git a/Tests/Testably.Abstractions.Parity.Tests/TestHelpers/Parity.cs b/Tests/Testably.Abstractions.Parity.Tests/TestHelpers/Parity.cs
index 373e885c0..fdcb2877b 100644
--- a/Tests/Testably.Abstractions.Parity.Tests/TestHelpers/Parity.cs
+++ b/Tests/Testably.Abstractions.Parity.Tests/TestHelpers/Parity.cs
@@ -4,6 +4,7 @@
using System.IO;
using System.IO.Compression;
using System.Linq;
+using System.Reflection;
using System.Threading;
namespace Testably.Abstractions.Parity.Tests.TestHelpers;
@@ -18,6 +19,36 @@ public class Parity
},
});
+ public ParityCheck DateTime { get; } = new(excludeMethods:
+ [
+ typeof(DateTime).GetMethod(nameof(System.DateTime.Compare)),
+ typeof(DateTime).GetMethod(nameof(System.DateTime.DaysInMonth)),
+ typeof(DateTime).GetMethod(nameof(System.DateTime.Equals), BindingFlags.Static | BindingFlags.Public),
+ typeof(DateTime).GetMethod(nameof(System.DateTime.FromBinary)),
+ typeof(DateTime).GetMethod(nameof(System.DateTime.FromFileTime)),
+ typeof(DateTime).GetMethod(nameof(System.DateTime.FromFileTimeUtc)),
+ typeof(DateTime).GetMethod(nameof(System.DateTime.FromOADate)),
+ typeof(DateTime).GetMethod(nameof(System.DateTime.IsLeapYear)),
+ typeof(DateTime).GetMethod(nameof(System.DateTime.SpecifyKind)),
+ ..typeof(DateTime).GetMethods().Where(x => string.Equals(x.Name, nameof(System.DateTime.Parse), StringComparison.Ordinal)),
+ ..typeof(DateTime).GetMethods().Where(x => string.Equals(x.Name, nameof(System.DateTime.ParseExact), StringComparison.Ordinal)),
+ ..typeof(DateTime).GetMethods().Where(x => string.Equals(x.Name, nameof(System.DateTime.TryParse), StringComparison.Ordinal)),
+ ..typeof(DateTime).GetMethods().Where(x => string.Equals(x.Name, nameof(System.DateTime.TryParseExact), StringComparison.Ordinal)),
+ ]);
+
+ public ParityCheck DateTimeOffset { get; } = new(excludeMethods:
+ [
+ typeof(DateTimeOffset).GetMethod(nameof(System.DateTimeOffset.Compare)),
+ typeof(DateTimeOffset).GetMethod(nameof(System.DateTimeOffset.Equals), BindingFlags.Static | BindingFlags.Public),
+ typeof(DateTimeOffset).GetMethod(nameof(System.DateTimeOffset.FromFileTime)),
+ typeof(DateTimeOffset).GetMethod(nameof(System.DateTimeOffset.FromUnixTimeMilliseconds)),
+ typeof(DateTimeOffset).GetMethod(nameof(System.DateTimeOffset.FromUnixTimeSeconds)),
+ ..typeof(DateTimeOffset).GetMethods().Where(x => string.Equals(x.Name, nameof(System.DateTimeOffset.Parse), StringComparison.Ordinal)),
+ ..typeof(DateTimeOffset).GetMethods().Where(x => string.Equals(x.Name, nameof(System.DateTimeOffset.ParseExact), StringComparison.Ordinal)),
+ ..typeof(DateTimeOffset).GetMethods().Where(x => string.Equals(x.Name, nameof(System.DateTimeOffset.TryParse), StringComparison.Ordinal)),
+ ..typeof(DateTimeOffset).GetMethods().Where(x => string.Equals(x.Name, nameof(System.DateTimeOffset.TryParseExact), StringComparison.Ordinal)),
+ ]);
+
public ParityCheck Directory { get; } = new();
public ParityCheck DirectoryInfo { get; } = new(excludeMethods: new[]