Skip to content

Commit

Permalink
Replace Condition with a simple Func<bool>
Browse files Browse the repository at this point in the history
since that's all it now encapsulates; noone uses the optional `success`
action delegate anymore.
  • Loading branch information
stakx committed Dec 27, 2020
1 parent 8fc439e commit 2ba2fd9
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 38 deletions.
23 changes: 0 additions & 23 deletions src/Moq/Condition.cs

This file was deleted.

4 changes: 2 additions & 2 deletions src/Moq/Language/Flow/WhenPhrase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ internal sealed class WhenPhrase<T> : ISetupConditionResult<T>
where T : class
{
private Mock<T> mock;
private Condition condition;
private Func<bool> condition;

public WhenPhrase(Mock<T> mock, Condition condition)
public WhenPhrase(Mock<T> mock, Func<bool> condition)
{
this.mock = mock;
this.condition = condition;
Expand Down
6 changes: 3 additions & 3 deletions src/Moq/MethodCall.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ internal sealed partial class MethodCall : SetupWithOutParameterSupport
private Behavior raiseEvent;
private Behavior returnOrThrow;
private Behavior afterReturnCallback;
private Condition condition;
private Func<bool> condition;
private string failMessage;

private string declarationSite;

public MethodCall(Expression originalExpression, Mock mock, Condition condition, InvocationShape expectation)
public MethodCall(Expression originalExpression, Mock mock, Func<bool> condition, InvocationShape expectation)
: base(originalExpression, mock, expectation)
{
this.condition = condition;
Expand All @@ -43,7 +43,7 @@ public string FailMessage
get => this.failMessage;
}

public override Condition Condition => this.condition;
public override Func<bool> Condition => this.condition;

private static string GetUserCodeCallSite()
{
Expand Down
2 changes: 1 addition & 1 deletion src/Moq/Mock.Generic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -712,7 +712,7 @@ public ISetupSequentialAction SetupSequence(Expression<Action<T>> expression)
/// </param>
public ISetupConditionResult<T> When(Func<bool> condition)
{
return new WhenPhrase<T>(this, new Condition(condition));
return new WhenPhrase<T>(this, condition);
}

#endregion
Expand Down
10 changes: 5 additions & 5 deletions src/Moq/Mock.cs
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@ private static void VerifyNoOtherCalls(Mock mock, HashSet<Mock> verifiedMocks)

#region Setup

internal static MethodCall Setup(Mock mock, LambdaExpression expression, Condition condition)
internal static MethodCall Setup(Mock mock, LambdaExpression expression, Func<bool> condition)
{
Guard.NotNull(expression, nameof(expression));

Expand All @@ -527,7 +527,7 @@ internal static MethodCall Setup(Mock mock, LambdaExpression expression, Conditi
});
}

internal static MethodCall SetupGet(Mock mock, LambdaExpression expression, Condition condition)
internal static MethodCall SetupGet(Mock mock, LambdaExpression expression, Func<bool> condition)
{
Guard.NotNull(expression, nameof(expression));

Expand All @@ -540,7 +540,7 @@ internal static MethodCall SetupGet(Mock mock, LambdaExpression expression, Cond
return Mock.Setup(mock, expression, condition);
}

internal static MethodCall SetupSet(Mock mock, LambdaExpression expression, Condition condition)
internal static MethodCall SetupSet(Mock mock, LambdaExpression expression, Func<bool> condition)
{
Guard.NotNull(expression, nameof(expression));
Guard.IsAssignmentToPropertyOrIndexer(expression, nameof(expression));
Expand Down Expand Up @@ -580,15 +580,15 @@ internal static void SetupSet(Mock mock, LambdaExpression expression, PropertyIn
}, allowNonOverridableLastProperty: true);
}

internal static MethodCall SetupAdd(Mock mock, LambdaExpression expression, Condition condition)
internal static MethodCall SetupAdd(Mock mock, LambdaExpression expression, Func<bool> condition)
{
Guard.NotNull(expression, nameof(expression));
Guard.IsEventAdd(expression, nameof(expression));

return Mock.Setup(mock, expression, condition);
}

internal static MethodCall SetupRemove(Mock mock, LambdaExpression expression, Condition condition)
internal static MethodCall SetupRemove(Mock mock, LambdaExpression expression, Func<bool> condition)
{
Guard.NotNull(expression, nameof(expression));
Guard.IsEventRemove(expression, nameof(expression));
Expand Down
7 changes: 3 additions & 4 deletions src/Moq/Setup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ protected Setup(Expression originalExpression, Mock mock, InvocationShape expect
this.mock = mock;
}

public virtual Condition Condition => null;
public virtual Func<bool> Condition => null;

public InvocationShape Expectation => this.expectation;

Expand Down Expand Up @@ -61,8 +61,7 @@ public void Execute(Invocation invocation)
invocation.MarkAsMatchedBy(this);
this.SetOutParameters(invocation);

// update condition (important for `MockSequence`) and matchers (important for `Capture`):
this.Condition?.SetupEvaluatedSuccessfully();
// update matchers (important for `Capture`):
this.expectation.SetupEvaluatedSuccessfully(invocation);

this.ExecuteCore(invocation);
Expand Down Expand Up @@ -99,7 +98,7 @@ public void MarkAsVerifiable()

public bool Matches(Invocation invocation)
{
return this.expectation.IsMatch(invocation) && (this.Condition == null || this.Condition.IsTrue);
return this.expectation.IsMatch(invocation) && (this.Condition == null || this.Condition());
}

public virtual void SetOutParameters(Invocation invocation)
Expand Down

0 comments on commit 2ba2fd9

Please sign in to comment.