# RioJoySmokeTest On-cabinet verification that the **virtual gamepad path works end to end**: it drives the real [`HidFeederJoystickSink`](../../src/RioJoy.Core/Output/HidFeederJoystickSink.cs) (open the RioGamepad device → submit reports via `IOCTL_RIO_SUBMIT_REPORT`) and reads the gamepad back through `winmm joyGetPosEx`, the same data `joy.cpl` and a game would see. It checks the six axes (min/mid/max), buttons, and the POV hat. This is **not** part of `RioJoy.sln` and not a unit test — it needs the signed driver actually installed (see [`driver/README.md`](../../driver/README.md)), so it only passes on a machine where the RioGamepad device is present. ## Run ```cmd dotnet run --project tools/RioJoySmokeTest -c Release ``` Exit codes: `0` all checks passed · `1` a check failed · `2` driver or joystick not found (driver not installed, or device not started — check Device Manager).