diff --git a/Source/Mockolate/Setup/MethodSetup.cs b/Source/Mockolate/Setup/MethodSetup.cs index c7b8ea53..6c364bf2 100644 --- a/Source/Mockolate/Setup/MethodSetup.cs +++ b/Source/Mockolate/Setup/MethodSetup.cs @@ -57,7 +57,7 @@ public void TriggerCallbacks(object?[] parameters) /// /// Gets a value indicating whether this setup has return calls configured. /// - protected abstract bool HasReturnCalls(); + protected virtual bool HasReturnCalls() => false; /// /// Sets an parameter with the specified name and returns its generated value of type diff --git a/Source/Mockolate/Setup/ReturnMethodSetup.cs b/Source/Mockolate/Setup/ReturnMethodSetup.cs index a64b3186..afbccbf3 100644 --- a/Source/Mockolate/Setup/ReturnMethodSetup.cs +++ b/Source/Mockolate/Setup/ReturnMethodSetup.cs @@ -186,11 +186,6 @@ protected override TResult GetReturnValue(MethodInvocation invocation, if (returnCallback.Invoke(ref _currentReturnCallbackIndex, (invocationCount, @delegate) => @delegate(invocationCount), out TReturn? newValue)) { - if (newValue is null) - { - return default!; - } - if (!TryCast(newValue, out TResult returnValue, behavior)) { throw new MockException( @@ -477,11 +472,6 @@ protected override TResult GetReturnValue(MethodInvocation invocation, if (returnCallback.Invoke(ref _currentReturnCallbackIndex, (invocationCount, @delegate) => @delegate(invocationCount, p1), out TReturn? newValue)) { - if (newValue is null) - { - return default!; - } - if (!TryCast(newValue, out TResult returnValue, behavior)) { throw new MockException( @@ -799,11 +789,6 @@ protected override TResult GetReturnValue(MethodInvocation invocation, if (returnCallback.Invoke(ref _currentReturnCallbackIndex, (invocationCount, @delegate) => @delegate(invocationCount, p1, p2), out TReturn? newValue)) { - if (newValue is null) - { - return default!; - } - if (!TryCast(newValue, out TResult returnValue, behavior)) { throw new MockException( @@ -1136,11 +1121,6 @@ protected override TResult GetReturnValue(MethodInvocation invocation, if (returnCallback.Invoke(ref _currentReturnCallbackIndex, (invocationCount, @delegate) => @delegate(invocationCount, p1, p2, p3), out TReturn? newValue)) { - if (newValue is null) - { - return default!; - } - if (!TryCast(newValue, out TResult returnValue, behavior)) { throw new MockException( @@ -1491,11 +1471,6 @@ protected override TResult GetReturnValue(MethodInvocation invocation, if (returnCallback.Invoke(ref _currentReturnCallbackIndex, (invocationCount, @delegate) => @delegate(invocationCount, p1, p2, p3, p4), out TReturn? newValue)) { - if (newValue is null) - { - return default!; - } - if (!TryCast(newValue, out TResult returnValue, behavior)) { throw new MockException( diff --git a/Source/Mockolate/Setup/VoidMethodSetup.cs b/Source/Mockolate/Setup/VoidMethodSetup.cs index d54195b2..93756945 100644 --- a/Source/Mockolate/Setup/VoidMethodSetup.cs +++ b/Source/Mockolate/Setup/VoidMethodSetup.cs @@ -196,10 +196,6 @@ protected override void TriggerParameterCallbacks(object?[] parameters) protected override bool? GetCallBaseClass() => _callBaseClass; - /// - protected override bool HasReturnCalls() - => _returnCallbacks.Count > 0; - /// protected override T SetOutParameter(string parameterName, Func defaultValueGenerator) => defaultValueGenerator(); @@ -444,10 +440,6 @@ protected override void TriggerParameterCallbacks(object?[] parameters) protected override bool? GetCallBaseClass() => _callBaseClass; - /// - protected override bool HasReturnCalls() - => _returnCallbacks.Count > 0; - /// protected override T SetOutParameter(string parameterName, Func defaultValueGenerator) { @@ -715,10 +707,6 @@ protected override void TriggerParameterCallbacks(object?[] parameters) protected override bool? GetCallBaseClass() => _callBaseClass; - /// - protected override bool HasReturnCalls() - => _returnCallbacks.Count > 0; - /// protected override T SetOutParameter(string parameterName, Func defaultValueGenerator) { @@ -995,10 +983,6 @@ protected override void TriggerParameterCallbacks(object?[] parameters) protected override bool? GetCallBaseClass() => _callBaseClass; - /// - protected override bool HasReturnCalls() - => _returnCallbacks.Count > 0; - /// protected override T SetOutParameter(string parameterName, Func defaultValueGenerator) { @@ -1281,10 +1265,6 @@ protected override void TriggerParameterCallbacks(object?[] parameters) protected override bool? GetCallBaseClass() => _callBaseClass; - /// - protected override bool HasReturnCalls() - => _returnCallbacks.Count > 0; - /// protected override T SetOutParameter(string parameterName, Func defaultValueGenerator) { diff --git a/Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt b/Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt index 32d5bee4..8e73ee3d 100644 --- a/Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt +++ b/Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt @@ -1355,7 +1355,7 @@ namespace Mockolate.Setup protected abstract void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior); protected abstract bool? GetCallBaseClass(); protected abstract TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator); - protected abstract bool HasReturnCalls(); + protected virtual bool HasReturnCalls() { } protected abstract bool IsMatch(Mockolate.Interactions.MethodInvocation invocation); protected abstract T SetOutParameter(string parameterName, System.Func defaultValueGenerator); protected abstract T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior); @@ -1565,7 +1565,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1588,7 +1587,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1612,7 +1610,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1636,7 +1633,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1660,7 +1656,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } diff --git a/Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt b/Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt index 13ab955b..b8b80164 100644 --- a/Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt +++ b/Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt @@ -1354,7 +1354,7 @@ namespace Mockolate.Setup protected abstract void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior); protected abstract bool? GetCallBaseClass(); protected abstract TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator); - protected abstract bool HasReturnCalls(); + protected virtual bool HasReturnCalls() { } protected abstract bool IsMatch(Mockolate.Interactions.MethodInvocation invocation); protected abstract T SetOutParameter(string parameterName, System.Func defaultValueGenerator); protected abstract T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior); @@ -1564,7 +1564,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1587,7 +1586,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1611,7 +1609,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1635,7 +1632,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1659,7 +1655,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } diff --git a/Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt b/Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt index 5490bb6f..ae51ca30 100644 --- a/Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt +++ b/Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt @@ -1331,7 +1331,7 @@ namespace Mockolate.Setup protected abstract void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior); protected abstract bool? GetCallBaseClass(); protected abstract TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator); - protected abstract bool HasReturnCalls(); + protected virtual bool HasReturnCalls() { } protected abstract bool IsMatch(Mockolate.Interactions.MethodInvocation invocation); protected abstract T SetOutParameter(string parameterName, System.Func defaultValueGenerator); protected abstract T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior); @@ -1527,7 +1527,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1550,7 +1549,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1574,7 +1572,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1598,7 +1595,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } @@ -1622,7 +1618,6 @@ namespace Mockolate.Setup protected override void ExecuteCallback(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior) { } protected override bool? GetCallBaseClass() { } protected override TResult GetReturnValue(Mockolate.Interactions.MethodInvocation invocation, Mockolate.MockBehavior behavior, System.Func defaultValueGenerator) { } - protected override bool HasReturnCalls() { } protected override bool IsMatch(Mockolate.Interactions.MethodInvocation invocation) { } protected override T SetOutParameter(string parameterName, System.Func defaultValueGenerator) { } protected override T SetRefParameter(string parameterName, T value, Mockolate.MockBehavior behavior) { } diff --git a/Tests/Mockolate.Tests/MockMethods/SetupMethodTests.cs b/Tests/Mockolate.Tests/MockMethods/SetupMethodTests.cs index 40405359..ea17d662 100644 --- a/Tests/Mockolate.Tests/MockMethods/SetupMethodTests.cs +++ b/Tests/Mockolate.Tests/MockMethods/SetupMethodTests.cs @@ -61,6 +61,16 @@ public async Task GetHashCode_ShouldWork() await That(result).IsEqualTo(expectedResult); } + [Fact] + public async Task HasReturnCalls_ShouldDefaultToFalse() + { + MyMethodSetup sut = new(); + + bool result = sut.GetHasReturnCalls(); + + await That(result).IsFalse(); + } + [Fact] public async Task OverlappingSetups_ShouldUseLatestMatchingSetup() { @@ -950,10 +960,10 @@ public class MyMethodSetup : MethodSetup public static void DoTriggerCallbacks(NamedParameter?[] namedParameters, object?[] values) => TriggerCallbacks(namedParameters, values); - protected override bool? GetCallBaseClass() - => throw new NotSupportedException(); + public bool GetHasReturnCalls() + => base.HasReturnCalls(); - protected override bool HasReturnCalls() + protected override bool? GetCallBaseClass() => throw new NotSupportedException(); protected override T SetOutParameter(string parameterName, Func defaultValueGenerator)