summaryrefslogtreecommitdiff
path: root/src/rust/uci/mod.rs
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2022-04-07 14:35:21 -0700
committerRoshan Pius <rpius@google.com>2022-04-08 21:09:07 +0000
commit36369f568b525d69a4ec94e396eb6d33c21b2af7 (patch)
tree179e6d94804c5372702bf8f3cc77393f6dca5731 /src/rust/uci/mod.rs
parent5e1598e3db544b9585e6dced771c86959e774e7c (diff)
downloaduwb-36369f568b525d69a4ec94e396eb6d33c21b2af7.tar.gz
uwb(uci-rust): Cleanup MockUwbAdaption
Clients using mocks should ideally be only dealing with the interface exposed by the corresponding module. The current impl of MockUwbAdaptation needs clients to dig into the internals of UwbClientCallback. For ex: Uci module tests have to deal with packet fragmentation inside UwbClientCallback impl which should be hidden from unit tests of clients. Bug: 216552887 Test: atest libuwb_uci_rust_tests Change-Id: I071daedd7b1f92089ac4db28707c44baf7a1598e
Diffstat (limited to 'src/rust/uci/mod.rs')
-rw-r--r--src/rust/uci/mod.rs75
1 files changed, 38 insertions, 37 deletions
diff --git a/src/rust/uci/mod.rs b/src/rust/uci/mod.rs
index a24d2f2..a8d8893 100644
--- a/src/rust/uci/mod.rs
+++ b/src/rust/uci/mod.rs
@@ -556,16 +556,16 @@ impl Dispatcher for DispatcherImpl {
#[cfg(test)]
mod tests {
+ use self::uci_hrcv::UciNotification;
+ use self::uci_hrcv::UciResponse;
+
use super::*;
use crate::adaptation::MockUwbAdaptation;
use crate::event_manager::MockEventManager;
use android_hardware_uwb::aidl::android::hardware::uwb::{
UwbEvent::UwbEvent, UwbStatus::UwbStatus,
};
- use uwb_uci_packets::{
- DeviceState, DeviceStatusNtfBuilder, GetDeviceInfoRspBuilder, Packet, UciPacketHalPacket,
- UciPacketPacket,
- };
+ use uwb_uci_packets::*;
fn setup_dispatcher(
config_fn: fn(&mut Arc<MockUwbAdaptation>, &mut MockEventManager),
@@ -609,9 +609,9 @@ mod tests {
Ok((dispatcher, rsp_sender))
}
- fn generate_fake_cmd_rsp_data() -> (Vec<u8>, Vec<u8>) {
- let cmd_data = GetDeviceInfoCmdBuilder {}.build().to_vec();
- let rsp_packet: UciPacketPacket = GetDeviceInfoRspBuilder {
+ fn generate_fake_get_device_cmd_rsp() -> (GetDeviceInfoCmdPacket, GetDeviceInfoRspPacket) {
+ let cmd = GetDeviceInfoCmdBuilder {}.build();
+ let rsp = GetDeviceInfoRspBuilder {
status: StatusCode::UciStatusOk,
uci_version: 0,
mac_version: 0,
@@ -619,21 +619,12 @@ mod tests {
uci_test_version: 0,
vendor_spec_info: vec![],
}
- .build()
- .into();
- // Convert to UciPacketHalPacket
- let mut rsp_frags: Vec<UciPacketHalPacket> = rsp_packet.into();
- let rsp_data = rsp_frags.pop().unwrap().to_vec();
-
- (cmd_data, rsp_data)
+ .build();
+ (cmd, rsp)
}
- fn generate_fake_ntf_data() -> Vec<u8> {
- let ntf_packet: UciPacketPacket =
- DeviceStatusNtfBuilder { device_state: DeviceState::DeviceStateReady }.build().into();
- // Convert to UciPacketHalPacket
- let mut ntf_frags: Vec<UciPacketHalPacket> = ntf_packet.into();
- ntf_frags.pop().unwrap().to_vec()
+ fn generate_fake_device_status_ntf() -> DeviceStatusNtfPacket {
+ DeviceStatusNtfBuilder { device_state: DeviceState::DeviceStateReady }.build()
}
#[test]
@@ -674,10 +665,15 @@ mod tests {
}
#[test]
- fn test_send_uci_message() -> Result<()> {
+ fn test_get_device_info() -> Result<()> {
let mut dispatcher = setup_dispatcher(|mock_adaptation, _mock_event_manager| {
- let (cmd_data, rsp_data) = generate_fake_cmd_rsp_data();
- mock_adaptation.expect_send_uci_message(cmd_data, Some(rsp_data), None, Ok(()));
+ let (cmd, rsp) = generate_fake_get_device_cmd_rsp();
+ mock_adaptation.expect_send_uci_message(
+ cmd.into(),
+ Some(UciResponse::GetDeviceInfoRsp(rsp)),
+ None,
+ Ok(()),
+ );
})?;
dispatcher.block_on_jni_command(JNICommand::UciGetDeviceInfo)?;
@@ -685,14 +681,19 @@ mod tests {
}
#[test]
- fn test_send_uci_message_with_retry() -> Result<()> {
+ fn test_get_device_info_with_uci_retry() -> Result<()> {
let mut dispatcher = setup_dispatcher(|mock_adaptation, _mock_event_manager| {
- let (cmd_data, rsp_data) = generate_fake_cmd_rsp_data();
+ let (cmd, rsp) = generate_fake_get_device_cmd_rsp();
// Let the first 2 tries not response data, then the 3rd tries response successfully.
- mock_adaptation.expect_send_uci_message(cmd_data.clone(), None, None, Ok(()));
- mock_adaptation.expect_send_uci_message(cmd_data.clone(), None, None, Ok(()));
- mock_adaptation.expect_send_uci_message(cmd_data, Some(rsp_data), None, Ok(()));
+ mock_adaptation.expect_send_uci_message(cmd.clone().into(), None, None, Ok(()));
+ mock_adaptation.expect_send_uci_message(cmd.clone().into(), None, None, Ok(()));
+ mock_adaptation.expect_send_uci_message(
+ cmd.into(),
+ Some(UciResponse::GetDeviceInfoRsp(rsp)),
+ None,
+ Ok(()),
+ );
})?;
dispatcher.block_on_jni_command(JNICommand::UciGetDeviceInfo)?;
@@ -700,10 +701,10 @@ mod tests {
}
#[test]
- fn test_send_uci_message_failed() -> Result<()> {
+ fn test_get_device_info_send_uci_message_failed() -> Result<()> {
let dispatcher = setup_dispatcher(|mock_adaptation, _mock_event_manager| {
- let (cmd_data, _rsp_data) = generate_fake_cmd_rsp_data();
- mock_adaptation.expect_send_uci_message(cmd_data, None, None, Err(UwbErr::failed()));
+ let (cmd, _rsp) = generate_fake_get_device_cmd_rsp();
+ mock_adaptation.expect_send_uci_message(cmd.into(), None, None, Err(UwbErr::failed()));
})?;
dispatcher
@@ -713,14 +714,14 @@ mod tests {
}
#[test]
- fn test_notification() -> Result<()> {
+ fn test_device_status_notification() -> Result<()> {
let mut dispatcher = setup_dispatcher(|mock_adaptation, mock_event_manager| {
- let (cmd_data, rsp_data) = generate_fake_cmd_rsp_data();
- let ntf_data = generate_fake_ntf_data();
+ let (cmd, rsp) = generate_fake_get_device_cmd_rsp();
+ let ntf = generate_fake_device_status_ntf();
mock_adaptation.expect_send_uci_message(
- cmd_data,
- Some(rsp_data),
- Some(ntf_data),
+ cmd.into(),
+ Some(UciResponse::GetDeviceInfoRsp(rsp)),
+ Some(UciNotification::DeviceStatusNtf(ntf)),
Ok(()),
);
mock_event_manager.expect_device_status_notification_received(Ok(()));