Skip to main content

GUI Harness (tests/mmr-gui)

What it is​

A C# WinForms application with two jobs:

  1. Browser — an interactive explorer that loads the built DLLs and exercises their surfaces, useful when investigating behavior by hand.
  2. Headless self-test — --selftest <binDir> runs 128 checks across 21 DLLs without any UI, suitable as a CI gate.
  • Location: tests/mmr-gui (git submodule → github.com/havaianasdestruido/mmr-gui)
  • Target: .NET 10, PlatformTarget=x86

Running it​

dotnet build -warnaserror

# Managed-only self-check — no DLLs needed (toolchain sanity)
mmr-gui.exe --selfcheck

# Headless DLL gate — needs the x86 .NET runtime
mmr-gui.exe --selftest build\bin\Debug

Set the x86 runtime location first:

$env:DOTNET_ROOT_X86 = "C:\Program Files (x86)\dotnet"

Modes​

ModeWhat it needsWhat it proves
--selfchecknothing (managed only)the harness itself is healthy
--selftest <binDir>x86 .NET runtime + built DLLs128 behavioral checks across 21 DLLs
Interactiveruntime + DLLsmanual exploration

Relationship to the contract suite​

The GUI harness overlaps the contract suite deliberately: different runtime (managed vs. ctypes), different loading path, and a human-usable browser on top. A behavior that passes in both is robust to consumer differences; a behavior that passes in only one usually reveals a loading/decoration assumption worth investigating.

Build discipline​

  • Build with -warnaserror — the submodule keeps a zero-warning bar.
  • If checks fail only in --selftest, verify the runtime is x86 (DOTNET_ROOT_X86) before suspecting the DLLs.