using FluentAssertions; using FluentAssertions.Equivalency; namespace LCU.API.Internal.DocumentLibTest; public static class DateTimeComparison { public static IEquivalencyStep Truncated { get; } = new TruncatedDateTimeStep(); public static DateTime Truncate(this DateTime date) => date.AddTicks(-(date.Ticks % 10000)); private class TruncatedDateTimeStep : IEquivalencyStep { public EquivalencyResult Handle ( Comparands comparands, IEquivalencyValidationContext context, IEquivalencyValidator nestedValidator ) { if (comparands.Subject is not DateTime subject || comparands.Expectation is not DateTime expectation) return EquivalencyResult.ContinueWithNext; subject.Truncate() .Should() .Be(expectation.Truncate(), context.Reason.FormattedMessage, context.Reason.Arguments); return EquivalencyResult.AssertionCompleted; } } }