Skip to content

feat: add nullability filters and assertions for events#342

Merged
vbreuss merged 3 commits into
mainfrom
feature/event-nullability
Jun 6, 2026
Merged

feat: add nullability filters and assertions for events#342
vbreuss merged 3 commits into
mainfrom
feature/event-nullability

Conversation

@vbreuss

@vbreuss vbreuss commented Jun 6, 2026

Copy link
Copy Markdown
Member

Add a WhichAreNullable filter and IsNullable / AreNullable assertions (plus negated variants) for EventInfo, matching what already exists for fields and properties.


@vbreuss vbreuss self-assigned this Jun 6, 2026
@vbreuss vbreuss added the enhancement New feature or request label Jun 6, 2026
@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown

Test Results

    13 files  ±  0      13 suites  ±0   11m 25s ⏱️ + 2m 28s
 6 813 tests + 54   6 810 ✅ + 54   3 💤 ±0  0 ❌ ±0 
40 723 runs  +324  40 710 ✅ +324  13 💤 ±0  0 ❌ ±0 

Results for commit 7a79109. ± Comparison against base commit 475b693.

This pull request removes 2 and adds 56 tests. Note that renamed tests count towards both.
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ GetNotNullableMembers_ShouldReturnNonNullableFieldsAndProperties
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ GetNullableMembers_ShouldReturnNullableFieldsAndProperties
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ GetNotNullableMembers_ShouldReturnNonNullableFieldsPropertiesAndEvents
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ GetNullableMembers_ShouldReturnNullableFieldsPropertiesAndEvents
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ IsNullable_ShouldEvaluateEventNullability(eventName: "NonNullableEvent", expectNullable: False)
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ IsNullable_ShouldEvaluateEventNullability(eventName: "NonNullableGenericEvent", expectNullable: False)
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ IsNullable_ShouldEvaluateEventNullability(eventName: "NullableEvent", expectNullable: True)
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ IsNullable_ShouldEvaluateEventNullability(eventName: "NullableGenericEvent", expectNullable: True)
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ IsNullable_WhenEventIsOblivious_ShouldReturnFalse
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ IsNullable_WithNonNullableEventInConstructedGenericType_ShouldReturnFalse
aweXpect.Reflection.Internal.Tests.Helpers.NullabilityHelpersTests ‑ IsNullable_WithNullEventInfo_ShouldReturnFalse
aweXpect.Reflection.Tests.Filters.EventFilters+WhichAreNotNullable+Tests ‑ ShouldAllowFilteringForNonNullableEvents
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown

🚀 Benchmark Results

Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.300
[Host] : .NET 10.0.8 (10.0.8, 10.0.826.23019), X64 RyuJIT x86-64-v3
DefaultJob : .NET 10.0.8 (10.0.8, 10.0.826.23019), X64 RyuJIT x86-64-v3

Method Mean Error StdDev Gen0 Allocated
TypeIsNotStatic_aweXpect 231.9 ns 1.09 ns 0.85 ns 0.0386 648 B

@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown

👽 Mutation Results

Mutation testing badge

aweXpect.Reflection

Details
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Total Detected Total Undetected Total Mutants
Filters/EventFilters.WhichAreNullable.cs 100.00% 3 0 0 0 0 0 3 0 3
Filters/TypeFilters.WhichOnlyHaveNullableMembers.cs 100.00% 4 0 0 0 0 0 4 0 4
Helpers/NullabilityHelpers.cs 73.08% 57 7 0 14 30 34 57 21 142
ThatEvent.IsNullable.cs 100.00% 10 0 0 0 3 6 10 0 19
ThatEvents.AreNullable.cs 100.00% 20 0 0 0 4 12 20 0 36
ThatType.OnlyHasNonNullableMembers.cs 88.24% 15 2 0 0 3 6 15 2 26
ThatType.OnlyHasNullableMembers.cs 88.24% 15 2 0 0 3 6 15 2 26
ThatTypes.OnlyHaveNonNullableMembers.cs 92.86% 13 1 0 0 3 4 13 1 21
ThatTypes.OnlyHaveNullableMembers.cs 92.86% 13 1 0 0 3 4 13 1 21

The final mutation score is 84.75%

Coverage Thresholds: high:80 low:60 break:0

@vbreuss vbreuss force-pushed the feature/event-nullability branch from 2bdb3ff to 7a79109 Compare June 6, 2026 21:17
@vbreuss vbreuss enabled auto-merge (squash) June 6, 2026 21:18
@sonarqubecloud

sonarqubecloud Bot commented Jun 6, 2026

Copy link
Copy Markdown

@vbreuss vbreuss merged commit 3b35cf8 into main Jun 6, 2026
12 checks passed
@vbreuss vbreuss deleted the feature/event-nullability branch June 6, 2026 21:25
@github-actions

github-actions Bot commented Jun 7, 2026

Copy link
Copy Markdown

This is addressed in release v2.0.0.

@github-actions github-actions Bot added the state: released The issue is released label Jun 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request state: released The issue is released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Nullability filters/assertions for events

1 participant