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)