using R3.Collections; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; namespace R3.Tests; public static class _TestHelper { public static void AssertEqual(this LiveList list, params T[] expected) { list.ShouldBe(expected); } public static void AssertEqual(this LiveList list, params T[][] expected) { list.Count.ShouldBe(expected.Length); for (int i = 0; i < expected.Length; i++) { list[i].ShouldBe(expected[i]); } } public static void AssertEmpty(this LiveList list) { list.Count.ShouldBe(0); } public static void AssertIsCompleted(this LiveList list) { list.IsCompleted.ShouldBeTrue(); } public static void AssertIsNotCompleted(this LiveList list) { list.IsCompleted.ShouldBeFalse(); } public static void Advance(this FakeTimeProvider timeProvider, int seconds) { timeProvider.Advance(TimeSpan.FromSeconds(seconds)); } // ShouldBe -> Is [MethodImpl(MethodImplOptions.NoInlining)] public static void Is( [NotNullIfNotNull(nameof(expected))] this T? actual, [NotNullIfNotNull(nameof(actual))] T? expected, string? customMessage = null) { actual.ShouldBe(expected, customMessage); } [MethodImpl(MethodImplOptions.NoInlining)] public static void Is( [NotNullIfNotNull(nameof(expected))] this T? actual, [NotNullIfNotNull(nameof(actual))] T? expected, IEqualityComparer comparer, string? customMessage = null) { actual.ShouldBe(expected, comparer, customMessage); } [MethodImpl(MethodImplOptions.NoInlining)] public static void IsNot(this T? actual, T? expected, string? customMessage = null) { actual.ShouldNotBe(expected, customMessage); } [MethodImpl(MethodImplOptions.NoInlining)] public static void IsNot(this T? actual, T? expected, IEqualityComparer comparer, string? customMessage = null) { actual.ShouldNotBe(expected, comparer, customMessage); } [MethodImpl(MethodImplOptions.NoInlining)] public static void Is( [NotNullIfNotNull(nameof(expected))] this IEnumerable? actual, [NotNullIfNotNull(nameof(actual))] IEnumerable? expected, bool ignoreOrder = false) { actual.ShouldBe(expected, ignoreOrder); } [MethodImpl(MethodImplOptions.NoInlining)] public static void Is( [NotNullIfNotNull(nameof(expected))] this IEnumerable? actual, [NotNullIfNotNull(nameof(actual))] IEnumerable? expected, bool ignoreOrder, string? customMessage) { actual.ShouldBe(expected, ignoreOrder, customMessage); } [MethodImpl(MethodImplOptions.NoInlining)] public static void Is( [NotNullIfNotNull(nameof(expected))] this IEnumerable? actual, [NotNullIfNotNull(nameof(actual))] IEnumerable? expected, IEqualityComparer comparer, bool ignoreOrder = false, string? customMessage = null) { actual.ShouldBe(expected, comparer, ignoreOrder, customMessage); } }