mirror of
https://github.com/bybrooklyn/openbitdo.git
synced 2026-03-19 04:12:56 -04:00
87 lines
2.3 KiB
Rust
87 lines
2.3 KiB
Rust
use bitdo_proto::{
|
|
DeviceSession, MockTransport, RetryPolicy, SessionConfig, TimeoutProfile, VidPid,
|
|
};
|
|
|
|
#[test]
|
|
fn retries_after_timeout_then_succeeds() {
|
|
let mut transport = MockTransport::default();
|
|
transport.push_read_timeout();
|
|
let mut good = vec![0u8; 64];
|
|
good[0] = 0x02;
|
|
good[1] = 0x05;
|
|
good[4] = 0xC1;
|
|
good[22] = 0x09;
|
|
good[23] = 0x60;
|
|
transport.push_read_data(good);
|
|
|
|
let config = SessionConfig {
|
|
retry_policy: RetryPolicy {
|
|
max_attempts: 3,
|
|
backoff_ms: 0,
|
|
},
|
|
timeout_profile: TimeoutProfile {
|
|
probe_ms: 1,
|
|
io_ms: 1,
|
|
firmware_ms: 1,
|
|
},
|
|
allow_unsafe: false,
|
|
brick_risk_ack: false,
|
|
experimental: false,
|
|
trace_enabled: true,
|
|
};
|
|
let mut session =
|
|
DeviceSession::new(transport, VidPid::new(0x2dc8, 24585), config).expect("session init");
|
|
|
|
let response = session
|
|
.send_command(bitdo_proto::CommandId::GetPid, None)
|
|
.expect("response");
|
|
assert_eq!(
|
|
response.parsed_fields.get("detected_pid").copied(),
|
|
Some(24585)
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn retries_after_malformed_then_succeeds() {
|
|
let mut transport = MockTransport::default();
|
|
let mut malformed = vec![0u8; 64];
|
|
malformed[0] = 0x00;
|
|
malformed[1] = 0x05;
|
|
malformed[4] = 0xC1;
|
|
transport.push_read_data(malformed);
|
|
|
|
let mut good = vec![0u8; 64];
|
|
good[0] = 0x02;
|
|
good[1] = 0x05;
|
|
good[4] = 0xC1;
|
|
good[22] = 0x09;
|
|
good[23] = 0x60;
|
|
transport.push_read_data(good);
|
|
|
|
let config = SessionConfig {
|
|
retry_policy: RetryPolicy {
|
|
max_attempts: 3,
|
|
backoff_ms: 0,
|
|
},
|
|
timeout_profile: TimeoutProfile {
|
|
probe_ms: 1,
|
|
io_ms: 1,
|
|
firmware_ms: 1,
|
|
},
|
|
allow_unsafe: false,
|
|
brick_risk_ack: false,
|
|
experimental: false,
|
|
trace_enabled: true,
|
|
};
|
|
let mut session =
|
|
DeviceSession::new(transport, VidPid::new(0x2dc8, 24585), config).expect("session init");
|
|
|
|
let response = session
|
|
.send_command(bitdo_proto::CommandId::GetPid, None)
|
|
.expect("response");
|
|
assert_eq!(
|
|
response.parsed_fields.get("detected_pid").copied(),
|
|
Some(24585)
|
|
);
|
|
}
|