FakeBluetoothRepository
Types
The outcome FakeBluetoothRepository.bond produces. Fail and Security both simply throw their wrapped error; the distinct cases exist only to document caller intent (via failBondWith vs failBondWithSecurityException) and leave a seam should the fake ever need to branch on permission failures.
Properties
Every device passed to bond, in call order — lets tests assert that bonding was (or was not) attempted.
Controls what bond does. Defaults to BondOutcome.Success so existing tests that never touch this knob keep the historical "bonding always succeeds" behavior. Set it (or use the failBondWith / failBondWithSecurityException helpers) to drive the failure paths of consumers such as AndroidScannerViewModel.requestBonding.
Functions
Make the next FakeBluetoothRepository.bond call record the device as bonded and then throw error.
Make the next FakeBluetoothRepository.bond call throw a generic error (the flaky/interrupted-bonding path).
Android-specific override: throw SecurityException (the missing-permission path on Android). This is needed because SecurityException is JVM-only and not available in commonMain.