- fake_records now generates a full year (2026) of classic workday
punches (09:00-13:00, 14:00-18:00) for the employees in fake_users;
this spans many 1024-byte blocks, exercising the multi-block
streaming path
- fake_users/fake_records are now public so tests can assert against
them instead of hardcoded expectations
- scoped #[allow(clippy::unwrap_used)] to only the functions that
actually use unwrap, instead of a blanket file-level allow
- added gets_total_record_count, streams_records, and
gets_none_for_unknown_employee tests
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
tests/mock/mod.rs emulates the device's TCP protocol (ping, get_name,
get_total_record_count, get_record_bytes), grounded in the reverse
engineering notes at
https://nicolabelluti.me/posts/2024/05/studying-a-communication-protocol/,
so tests/e2e.rs can exercise the real R701 client against it instead of
needing a physical reader. Starts with one test (connect + ping);
more scenarios (get_name, record streaming, error cases) to follow.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>