Skip to content

Commit

Permalink
.ReturnsAsync(null): should interpret as value, not lambda
Browse files Browse the repository at this point in the history
  • Loading branch information
stakx committed Aug 31, 2019
1 parent bf45f80 commit 030f000
Showing 1 changed file with 78 additions and 0 deletions.
78 changes: 78 additions & 0 deletions tests/Moq.Tests/ReturnsExtensionsFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ public interface IAsyncInterface
Task<int> ValueParameterValueReturnType(int value);

Task<Guid> NewGuidAsync();

Task<object> NoParametersObjectReturnType();

Task<object> OneParameterObjectReturnType(string value);

Task<object> ManyParametersObjectReturnType(string arg1, bool arg2, float arg3);
}

public interface IValueTaskAsyncInterface
Expand All @@ -44,6 +50,12 @@ public interface IValueTaskAsyncInterface
ValueTask<int> ValueParameterValueReturnType(int value);

ValueTask<Guid> NewGuidAsync();

ValueTask<object> NoParametersObjectReturnType();

ValueTask<object> OneParameterObjectReturnType(string value);

ValueTask<object> ManyParametersObjectReturnType(string arg1, bool arg2, float arg3);
}

[Fact]
Expand Down Expand Up @@ -897,5 +909,71 @@ public void ValueTaskThrowsAsyncWithNullRandomGenerator()
var paramName = Assert.Throws<ArgumentNullException>(setup).ParamName;
Assert.Equal("random", paramName);
}

[Fact]
public async void No_parameters_object_return_type__ReturnsAsync_null__returns_completed_Task_with_null_result()
{
var mock = new Mock<IAsyncInterface>();
mock.Setup(m => m.NoParametersObjectReturnType()).ReturnsAsync(null);

var result = await mock.Object.NoParametersObjectReturnType();

Assert.Null(result);
}

[Fact]
public async void One_parameter_object_return_type__ReturnsAsync_null__returns_completed_Task_with_null_result()
{
var mock = new Mock<IAsyncInterface>();
mock.Setup(m => m.OneParameterObjectReturnType("")).ReturnsAsync(null);

var result = await mock.Object.OneParameterObjectReturnType("");

Assert.Null(result);
}

[Fact]
public async void Many_parameters_object_return_type__ReturnsAsync_null__returns_completed_Task_with_null_result()
{
var mock = new Mock<IAsyncInterface>();
mock.Setup(m => m.ManyParametersObjectReturnType("", false, 0f)).ReturnsAsync(null);

var result = await mock.Object.ManyParametersObjectReturnType("", false, 0f);

Assert.Null(result);
}

[Fact]
public async void No_parameters_object_return_type__ReturnsAsync_null__returns_completed_ValueTask_with_null_result()
{
var mock = new Mock<IValueTaskAsyncInterface>();
mock.Setup(m => m.NoParametersObjectReturnType()).ReturnsAsync(null);

var result = await mock.Object.NoParametersObjectReturnType();

Assert.Null(result);
}

[Fact]
public async void One_parameter_object_return_type__ReturnsAsync_null__returns_completed_ValueTask_with_null_result()
{
var mock = new Mock<IValueTaskAsyncInterface>();
mock.Setup(m => m.OneParameterObjectReturnType("")).ReturnsAsync(null);

var result = await mock.Object.OneParameterObjectReturnType("");

Assert.Null(result);
}

[Fact]
public async void Many_parameters_object_return_type__ReturnsAsync_null__returns_completed_ValueTask_with_null_result()
{
var mock = new Mock<IValueTaskAsyncInterface>();
mock.Setup(m => m.ManyParametersObjectReturnType("", false, 0f)).ReturnsAsync(null);

var result = await mock.Object.ManyParametersObjectReturnType("", false, 0f);

Assert.Null(result);
}
}
}

0 comments on commit 030f000

Please sign in to comment.