diff options
| author | cirakg <cirakg@cirakg.xyz> | 2026-10-20 06:56:58 +0200 |
|---|---|---|
| committer | cirakg <cirakg@cirakg.xyz> | 2026-10-20 06:56:58 +0200 |
| commit | 93d0becabf76aaa568989f295ca9b8a2c387f0cc (patch) | |
| tree | 14adc56b77d791ebe387c411f7de65063119df0e /docs/TESTING.md | |
| parent | f455246fde086dda0cb61b92c84a5146a831a2bf (diff) | |
docs: record M6b (QR) results
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'docs/TESTING.md')
| -rw-r--r-- | docs/TESTING.md | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/TESTING.md b/docs/TESTING.md index 29cec49..ca72af3 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md @@ -26,6 +26,25 @@ Test devices (`TEST_DEVICES`): Forerunner 255S (weakest: 218 px round MIP, butto ## Results +### M6b, 2026-10-20 (QR, in 0.6.0) + +Monkey C unit tests: 111 per device. + +1. **Reference comparison with segno** (`make codes`). + - **31 matrices identical module for module.** They cover versions 1 to 40 and levels L, M, Q and H, numeric, alphanumeric and UTF-8 byte data, forced versions and masks, and automatic choices. The watch picks the same version and mask as segno with `boost_error=False`. + - **Two deliberate differences**, listed in README 12.4: + - segno pads a stream that already ends on a codeword boundary with an extra zero byte; the watch follows ISO 18004. + - segno uses a single mode per symbol; the watch segments optimally. +2. **Decoding.** 30 QR codes from the test run are decoded with zxing-cpp at 2 and 3 px per module. They include mixed segmented content, Unicode, emoji, a Wi-Fi string and all four levels. +3. **Screenshots.** The UI flow opens the fixture's QR card (version 6, its digit run in numeric mode), encoded on the watch as a job the first time (2.8 s in the simulated watches). Its screenshot decodes on all seven watches, as does the EAN-13 card's. + +Also tested: + +- **The encrypted matrix cache:** round trip; tampering ignored; cleared by update and remove; a locked entry's cache unreadable while locked. +- **Capacity errors.** + +What the UI flow found: scoring the eight masks tripped the watchdog, first on the Forerunner 70 (2,500 modules per step) and then on the 255S (1,200). Each job step now works on at most 500 modules when scoring rows and 1,000 when scoring columns. + ### M6a, 2026-10-20 (linear barcodes, in 0.6.0) Monkey C unit tests: 105 per device, with the checks of README 12.4. @@ -147,3 +166,4 @@ Things the simulator can't verify, done by you on the Forerunner 70. The checkli - [ ] M4: check that leaving the app and coming back asks for the PIN again for the locked demo entry. Check that the glance in the glance loop shows the number of entries. - [ ] M5: in Garmin Connect, paste a few `otpauth://` links of test accounts (not your real ones) into the Import fields, turn "Import now" on and save. Check the result on the watch and in the Result field. Also check that the text fields are emptied afterwards: this answers part of the M1 question. - [ ] M6a: with "Debug: demo entries", open "Gym card" (an EAN-13). Scan it with your phone's camera, or a shop scanner if you can, indoors and outdoors. Tell me whether it reads. +- [ ] M6b: open "Member QR" (a demo entry) and scan it with your phone's camera. The first opening encodes it; note roughly how long that takes. The second opening should be instant (cache). |
