Fix for issue #228: Events not raised on mocked type with multiple interfaces #288
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The ImplementedInterfaces list on Mock contains the public interfaces of our mocked type, the internally defined IMocked type, and anything else added to the mock via calls to As. When looking for events, only the last of these (and the concrete mocked type) should be looked at.
Previously the assumption was that ImplementedInterfaces' first entry was the IMocked type, and that the rest were always needed. This meant the first entry in that list could be skipped, and the rest were always taken. After 162a543 added more interfaces to the list, however, this logic needs to change to count all internally implemented entries in the list and skip them all.
Fixing this will fix #228 which was caused when the EventInfo from an interface was intercepted, but the EventInfo from the underlying concrete type was actually expected.