Skip to content

Commit 6649323

Browse files
committed
rev commit
1 parent d31084a commit 6649323

3 files changed

Lines changed: 24 additions & 5 deletions

File tree

src/Moq.Tests/EventHandlersFixture.cs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,29 @@ public async Task Can_raise_parameterized_async_event_using_RaiseAsync()
179179
Assert.Equal(42, received);
180180
}
181181

182-
public class HasAsyncEvent
182+
[Fact]
183+
public async Task RaiseAsync_WithVoidEventDelegate_ThrowsArgumentOutOfRangeException()
183184
{
184-
#pragma warning disable CS0067 // Event never used
185-
public virtual event Func<Task> Event;
186-
public virtual event Func<int, Task> ParameterizedEvent;
185+
//Arrange
186+
var mock = new Mock<IWithEvent>();
187+
188+
await Assert.ThrowsAnyAsync<ArgumentOutOfRangeException>(async () => await mock.RaiseAsync(e => e.CustomEvent += null, "foo", 5));
187189
}
190+
188191
}
189192
}
193+
194+
public delegate void CustomEvent(string message, int value);
195+
196+
public interface IWithEvent
197+
{
198+
event CustomEvent CustomEvent;
199+
200+
}
201+
202+
public class HasAsyncEvent
203+
{
204+
#pragma warning disable CS0067 // Event never used
205+
public virtual event Func<Task> Event;
206+
public virtual event Func<int, Task> ParameterizedEvent;
207+
}

src/Moq.Tests/Moq.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<PackageReference Include="System.Net.Http" Version="4.3.4" />
2929
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
3030
<PackageReference Include="xunit" Version="2.9.3" />
31-
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.0" PrivateAssets="all"/>
31+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.0" PrivateAssets="all" />
3232
<PackageReference Include="Castle.Core" Version="5.2.1" />
3333
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
3434
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="All" />

src/Moq/Mock`1.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1423,6 +1423,7 @@ public void Raise(Action<T> eventExpression, params object[] args)
14231423
/// </example>
14241424
public Task RaiseAsync(Action<T> eventExpression, params object[] args)
14251425
{
1426+
if (eventExpression.Method.ReturnType == typeof(void)) throw new ArgumentOutOfRangeException(nameof(eventExpression), "The event expression must return Task or ValueTask.");
14261427
return Mock.RaiseEventAsync(this, eventExpression, args);
14271428
}
14281429

0 commit comments

Comments
 (0)