From 8f29b53ae4c0ca026b526ad826c933a1aaf36bf0 Mon Sep 17 00:00:00 2001 From: Dominique Schuppli Date: Tue, 2 Aug 2022 19:46:22 +0200 Subject: [PATCH 1/2] Add regression tests for subscribing to & raising redeclared event fixup regr tests add --- .../Regressions/IssueReportsFixture.cs | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/tests/Moq.Tests/Regressions/IssueReportsFixture.cs b/tests/Moq.Tests/Regressions/IssueReportsFixture.cs index 5efb0f5da..ea29987ad 100644 --- a/tests/Moq.Tests/Regressions/IssueReportsFixture.cs +++ b/tests/Moq.Tests/Regressions/IssueReportsFixture.cs @@ -3688,6 +3688,77 @@ public virtual void SecondCall() #endregion + #region 1175 + + public class Issue1175 + { + [Fact] + public void Can_subscribe_to_and_raise_redeclared_event_1() + { + var handled = false; + + var mock = new Mock(); + mock.Setup(x => x.RaiseEvent()).Raises(x => x.Event += null, false); + mock.Object.Event += _ => handled = true; + + mock.Object.RaiseEvent(); + + Assert.True(handled); + } + + public interface IBase + { + event Action Event; + void RaiseEvent(); + } + + public interface IDerived : IBase + { + new event Action Event; + } + + [Fact] + public void Can_subscribe_to_and_raise_redeclared_event_2() + { + var aEventsMock = new Mock>(); + var aConsumer = new GenericHidingEventConsumer(aEventsMock.Object); + + aEventsMock.Raise(theO => theO.Created += null, this, true); + + Assert.True(aConsumer.EventHandled); + } + + public interface IEvents + { + event EventHandler Created; + } + + public interface IGenericHidingEvents : IEvents + { + new event EventHandler Created; + } + + public class GenericHidingEventConsumer + { + private IGenericHidingEvents myHidingEvents; + + public GenericHidingEventConsumer(IGenericHidingEvents theHidingEvents) + { + this.myHidingEvents = theHidingEvents; + this.myHidingEvents.Created += this.HidingEventsOnCreated; + } + + private void HidingEventsOnCreated(object theSender, bool theE) + { + EventHandled = true; + } + + public bool EventHandled { get; set; } + } + } + + #endregion + #region 1217 public class Issue1217 From e52a69560c5332306ca516f8077db4e60d1ef372 Mon Sep 17 00:00:00 2001 From: Dominique Schuppli Date: Tue, 2 Aug 2022 19:51:03 +0200 Subject: [PATCH 2/2] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 008283ce5..cd6ae4d07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1 #### Fixed +* "Expression is not an event add" when using `.Raises()` with redeclared event (@howcheng, #1175) * Throws `TypeLoadException` on mock when a record has a base record on .NET 6 (@tgrieger-sf, #1273)