Skip to content

Commit

Permalink
.
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonCropp committed Jun 22, 2024
1 parent e5a7e06 commit 8d0ab55
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,10 @@ public static void CompleteIn(System.Threading.Tasks.Task actual, System.TimeSpa
public static T CompleteIn<T>(System.Func<System.Threading.Tasks.Task<T>> actual, System.TimeSpan timeout, string? customMessage = null) { }
public static T CompleteIn<T>(System.Func<T> function, System.TimeSpan timeout, string? customMessage = null) { }
public static T CompleteIn<T>(System.Threading.Tasks.Task<T> actual, System.TimeSpan timeout, string? customMessage = null) { }
public static System.Threading.Tasks.Task CompleteInAsync(System.Func<System.Threading.Tasks.Task> actual, System.TimeSpan timeout, string? customMessage = null) { }
public static System.Threading.Tasks.Task CompleteInAsync(System.Threading.Tasks.Task actual, System.TimeSpan timeout, string? customMessage = null) { }
public static System.Threading.Tasks.Task<T> CompleteInAsync<T>(System.Func<System.Threading.Tasks.Task<T>> actual, System.TimeSpan timeout, string? customMessage = null) { }
public static System.Threading.Tasks.Task<T> CompleteInAsync<T>(System.Threading.Tasks.Task<T> actual, System.TimeSpan timeout, string? customMessage = null) { }
public static void NotThrow(System.Action action, string? customMessage = null) { }
public static void NotThrow(System.Func<System.Threading.Tasks.Task> action, string? customMessage = null) { }
public static void NotThrow(System.Threading.Tasks.Task action, string? customMessage = null) { }
Expand Down
38 changes: 26 additions & 12 deletions src/Shouldly/ShouldStaticClasses/ShouldCompleteInExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,53 +5,67 @@ public static partial class Should
/*** CompleteIn(Action) ***/
public static void CompleteIn(Action action, TimeSpan timeout, string? customMessage = null)
{
var actual = Task.Factory.StartNew(
action,
CancellationToken.None,
TaskCreationOptions.None,
TaskScheduler.Default);
var actual = Task.Factory.StartNew(action, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default);
CompleteInAsync(actual, timeout, customMessage, "Delegate")
.GetAwaiter().GetResult();
}

/*** CompleteIn(Func<T>) ***/
public static T CompleteIn<T>(Func<T> function, TimeSpan timeout, string? customMessage = null)
{
var actual = Task.Factory.StartNew(function, CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var actual = Task.Factory.StartNew(function, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default);
return CompleteInAsync(actual, timeout, customMessage, "Delegate")
.GetAwaiter().GetResult();
}

/*** CompleteIn(Func<Task>) ***/
//[Obsolete("Use CompleteInAsync. Will be remove in version 5")]
public static void CompleteIn(Func<Task> actual, TimeSpan timeout, string? customMessage = null)
{
CompleteInAsync(actual(), timeout, customMessage, "Task")
CompleteInAsync(actual, timeout, customMessage)
.GetAwaiter().GetResult();
}

/*** CompleteInAsync(Func<Task>) ***/
public static Task CompleteInAsync(Func<Task> actual, TimeSpan timeout, string? customMessage = null)
=> CompleteInAsync(actual(), timeout, customMessage, "Task");

/*** CompleteIn(Func<Task<T>>) ***/
public static T CompleteIn<T>(Func<Task<T>> actual, TimeSpan timeout, string? customMessage = null)
=> CompleteInAsync(actual, timeout, customMessage)
.GetAwaiter().GetResult();

/*** CompleteInAsync(Func<Task<T>>) ***/
public static Task<T> CompleteInAsync<T>(Func<Task<T>> actual, TimeSpan timeout, string? customMessage = null)
{
var task = actual();
return CompleteInAsync(task, timeout, customMessage, "Task")
.GetAwaiter().GetResult();
return CompleteInAsync(task, timeout, customMessage, "Task");
}

/*** CompleteIn(Task<T>) ***/
//[Obsolete("Use CompleteInAsync. Will be remove in version 5")]
public static void CompleteIn(Task actual, TimeSpan timeout, string? customMessage = null)
{
CompleteInAsync(actual, timeout, customMessage, "Task")
CompleteInAsync(actual, timeout, customMessage)
.GetAwaiter().GetResult();
}

/*** CompleteInAsync(Task<T>) ***/
public static Task CompleteInAsync(Task actual, TimeSpan timeout, string? customMessage = null)
=> CompleteInAsync(actual, timeout, customMessage, "Task");

/*** CompleteIn(Task<T>) ***/
//[Obsolete("Use CompleteInAsync. Will be remove in version 5")]
public static T CompleteIn<T>(Task<T> actual, TimeSpan timeout, string? customMessage = null)
{
return CompleteInAsync(actual, timeout, customMessage, "Task")
return CompleteInAsync(actual, timeout, customMessage)
.GetAwaiter().GetResult();
}

/*** CompleteInAsync(Task<T>) ***/
public static Task<T> CompleteInAsync<T>(Task<T> actual, TimeSpan timeout, string? customMessage = null)
=> CompleteInAsync(actual, timeout, customMessage, "Task");

private static async Task CompleteInAsync(Task actual, TimeSpan timeout, string? customMessage, string what)
{
var winner = await Task.WhenAny(actual, Task.Delay(timeout));
Expand Down

0 comments on commit 8d0ab55

Please sign in to comment.