diff --git a/src/AsmResolver.PE/DotNet/Metadata/Tables/EventAttributes.cs b/src/AsmResolver.PE/DotNet/Metadata/Tables/EventAttributes.cs index aa7e08f5b..aa456faff 100644 --- a/src/AsmResolver.PE/DotNet/Metadata/Tables/EventAttributes.cs +++ b/src/AsmResolver.PE/DotNet/Metadata/Tables/EventAttributes.cs @@ -8,6 +8,10 @@ namespace AsmResolver.PE.DotNet.Metadata.Tables [Flags] public enum EventAttributes : ushort { + /// + /// Specifies that the event has no attributes. + /// + None = 0x0000, /// /// Specifies that the event is using a special name. /// diff --git a/test/AsmResolver.DotNet.Tests/EventDefinitionTest.cs b/test/AsmResolver.DotNet.Tests/EventDefinitionTest.cs index e45e52b2c..1306fe580 100644 --- a/test/AsmResolver.DotNet.Tests/EventDefinitionTest.cs +++ b/test/AsmResolver.DotNet.Tests/EventDefinitionTest.cs @@ -16,6 +16,33 @@ public void ReadName() Assert.NotNull(@event); } + [Fact] + public void VerifyEventAttributes_None() + { + var @event = new EventDefinition("MyEvent"u8, EventAttributes.None, eventType: null); + Assert.Equal(EventAttributes.None, @event.Attributes); + Assert.False(@event.IsSpecialName); + Assert.False(@event.IsRuntimeSpecialName); + } + + [Fact] + public void VerifyEventAttributes_SpecialName() + { + var @event = new EventDefinition("MyEvent"u8, EventAttributes.SpecialName, eventType: null); + Assert.Equal(EventAttributes.SpecialName, @event.Attributes); + Assert.True(@event.IsSpecialName); + Assert.False(@event.IsRuntimeSpecialName); + } + + [Fact] + public void VerifyEventAttributes_RuntimeSpecialName() + { + var @event = new EventDefinition("MyEvent"u8, EventAttributes.RtSpecialName, eventType: null); + Assert.Equal(EventAttributes.RtSpecialName, @event.Attributes); + Assert.False(@event.IsSpecialName); + Assert.True(@event.IsRuntimeSpecialName); + } + [Theory] [InlineData(nameof(MultipleEvents.Event1), "System.EventHandler")] [InlineData(nameof(MultipleEvents.Event2), "System.AssemblyLoadEventHandler")]