Skip to content

Reject non-finite range values#9

Merged
SteffenCarlsen merged 2 commits into
mainfrom
feature/reject-nonfinite-range-values
Jun 23, 2026
Merged

Reject non-finite range values#9
SteffenCarlsen merged 2 commits into
mainfrom
feature/reject-nonfinite-range-values

Conversation

@SteffenCarlsen

Copy link
Copy Markdown
Owner

Summary

  • Reject non-finite Minimum, Maximum, and Value assignments in RangeBase controls.
  • Reject non-finite Minimum, Maximum, and Value assignments in NumberBox.
  • Add regression coverage for NaN/infinity inputs and record the numeric-state lesson in Lessons.md.

Root cause

Range controls validated SmallChange, LargeChange, and NumberBox.Step, but the core range state accepted NaN and infinity. Those values can bypass clamping and later poison render calculations such as slider thumb position and progress fill geometry.

Validation

  • dotnet test tests\ModernOverlay.Tests\ModernOverlay.Tests.csproj --configuration Debug --filter "FullyQualifiedName~RangeControlsRejectNonFiniteNumericValues"
  • dotnet test tests\ModernOverlay.Tests\ModernOverlay.Tests.csproj --configuration Debug --filter "FullyQualifiedName~OverlayUiRangeNumericTests"
  • dotnet test tests\ModernOverlay.Tests\ModernOverlay.Tests.csproj --configuration Release --filter "FullyQualifiedName~RangeControlsRejectNonFiniteNumericValues"
  • dotnet test tests\ModernOverlay.Tests\ModernOverlay.Tests.csproj --configuration Debug --logger trx
  • git diff --check

@SteffenCarlsen SteffenCarlsen marked this pull request as ready for review June 23, 2026 17:52
Copilot AI review requested due to automatic review settings June 23, 2026 17:52

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR hardens ModernOverlay’s numeric UI components by preventing NaN/infinite values from entering core range state, avoiding downstream render-geometry corruption (e.g., slider thumb positions and progress fill calculations).

Changes:

  • Added finite-value validation for RangeBase.Minimum, RangeBase.Maximum, and RangeBase.Value.
  • Added finite-value validation for NumberBox.Minimum, NumberBox.Maximum, and NumberBox.Value.
  • Added a regression test for non-finite range assignments and documented the lesson in Lessons.md.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
tests/ModernOverlay.Tests/OverlayUiRangeNumericTests.cs Adds regression coverage asserting ArgumentOutOfRangeException on NaN/∞ inputs for Slider and NumberBox.
src/ModernOverlay.UI/Controls.cs Enforces finite-only assignments into RangeBase range state via a centralized helper.
src/ModernOverlay.UI/AdvancedControls.cs Enforces finite-only assignments into NumberBox range state via a centralized helper.
Lessons.md Records the “reject non-finite numeric inputs before clamping/render math” lesson for future work.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@SteffenCarlsen SteffenCarlsen merged commit 387c7f0 into main Jun 23, 2026
2 checks passed
@SteffenCarlsen SteffenCarlsen deleted the feature/reject-nonfinite-range-values branch June 23, 2026 17:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants