Skip to content

Commit a23e71b

Browse files
committed
Change mock function result container type, use expect for everything
Add derive `Default` for `DpStatus`
1 parent 1bff44e commit a23e71b

5 files changed

Lines changed: 84 additions & 56 deletions

File tree

type-c-interface-mocks/src/controller/mod.rs

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -24,34 +24,34 @@ pub struct Mock {
2424
name: &'static str,
2525
/// Recorded function calls
2626
pub fn_calls: VecDeque<FnCall>,
27-
/// Next result to return for [`type_c_interface::controller::pd::Pd::get_port_status`]
28-
pub next_result_get_port_status: Option<Result<PortStatus, PdError>>,
29-
/// Next result to return for [`type_c_interface::controller::pd::Pd::clear_dead_battery_flag`]
30-
pub next_result_clear_dead_battery_flag: Option<Result<(), PdError>>,
31-
/// Next result to return for [`type_c_interface::controller::pd::Pd::enable_sink_path`]
32-
pub next_result_enable_sink_path: Option<Result<(), PdError>>,
33-
/// Next result to return for [`type_c_interface::controller::pd::Pd::get_pd_alert`]
34-
pub next_result_get_pd_alert: Option<Result<Option<Ado>, PdError>>,
35-
/// Next result to return for [`type_c_interface::controller::pd::Pd::set_unconstrained_power`]
36-
pub next_result_set_unconstrained_power: Option<Result<(), PdError>>,
37-
/// Next result to return for [`type_c_interface::controller::pd::Pd::get_other_vdm`]
38-
pub next_result_get_other_vdm: Option<Result<OtherVdm, PdError>>,
39-
/// Next result to return for [`type_c_interface::controller::pd::Pd::get_attn_vdm`]
40-
pub next_result_get_attn_vdm: Option<Result<AttnVdm, PdError>>,
41-
/// Next result to return for [`type_c_interface::controller::pd::Pd::send_vdm`]
42-
pub next_result_send_vdm: Option<Result<(), PdError>>,
43-
/// Next result to return for [`type_c_interface::controller::pd::Pd::execute_drst`]
44-
pub next_result_execute_drst: Option<Result<(), PdError>>,
45-
/// Next result to return for [`type_c_interface::controller::pd::Pd::get_dp_status`]
46-
pub next_result_get_dp_status: Option<Result<DpStatus, PdError>>,
47-
/// Next result to return for [`type_c_interface::controller::pd::Pd::set_dp_config`]
48-
pub next_result_set_dp_config: Option<Result<(), PdError>>,
49-
/// Next result to return for [`type_c_interface::controller::pd::Pd::set_tbt_config`]
50-
pub next_result_set_tbt_config: Option<Result<(), PdError>>,
51-
/// Next result to return for [`type_c_interface::controller::pd::Pd::set_usb_control`]
52-
pub next_result_set_usb_control: Option<Result<(), PdError>>,
53-
/// Next result to return for [`type_c_interface::ucsi::Lpm::execute_lpm_command`]
54-
pub next_result_execute_lpm_command: Option<Result<Option<embedded_usb_pd::ucsi::lpm::ResponseData>, PdError>>,
27+
/// Next results to return for [`type_c_interface::controller::pd::Pd::get_port_status`]
28+
pub next_result_get_port_status: VecDeque<Result<PortStatus, PdError>>,
29+
/// Next results to return for [`type_c_interface::controller::pd::Pd::clear_dead_battery_flag`]
30+
pub next_result_clear_dead_battery_flag: VecDeque<Result<(), PdError>>,
31+
/// Next results to return for [`type_c_interface::controller::pd::Pd::enable_sink_path`]
32+
pub next_result_enable_sink_path: VecDeque<Result<(), PdError>>,
33+
/// Next results to return for [`type_c_interface::controller::pd::Pd::get_pd_alert`]
34+
pub next_result_get_pd_alert: VecDeque<Result<Option<Ado>, PdError>>,
35+
/// Next results to return for [`type_c_interface::controller::pd::Pd::set_unconstrained_power`]
36+
pub next_result_set_unconstrained_power: VecDeque<Result<(), PdError>>,
37+
/// Next results to return for [`type_c_interface::controller::pd::Pd::get_other_vdm`]
38+
pub next_result_get_other_vdm: VecDeque<Result<OtherVdm, PdError>>,
39+
/// Next results to return for [`type_c_interface::controller::pd::Pd::get_attn_vdm`]
40+
pub next_result_get_attn_vdm: VecDeque<Result<AttnVdm, PdError>>,
41+
/// Next results to return for [`type_c_interface::controller::pd::Pd::send_vdm`]
42+
pub next_result_send_vdm: VecDeque<Result<(), PdError>>,
43+
/// Next results to return for [`type_c_interface::controller::pd::Pd::execute_drst`]
44+
pub next_result_execute_drst: VecDeque<Result<(), PdError>>,
45+
/// Next results to return for [`type_c_interface::controller::pd::Pd::get_dp_status`]
46+
pub next_result_get_dp_status: VecDeque<Result<DpStatus, PdError>>,
47+
/// Next results to return for [`type_c_interface::controller::pd::Pd::set_dp_config`]
48+
pub next_result_set_dp_config: VecDeque<Result<(), PdError>>,
49+
/// Next results to return for [`type_c_interface::controller::pd::Pd::set_tbt_config`]
50+
pub next_result_set_tbt_config: VecDeque<Result<(), PdError>>,
51+
/// Next results to return for [`type_c_interface::controller::pd::Pd::set_usb_control`]
52+
pub next_result_set_usb_control: VecDeque<Result<(), PdError>>,
53+
/// Next results to return for [`type_c_interface::ucsi::Lpm::execute_lpm_command`]
54+
pub next_result_execute_lpm_command: VecDeque<Result<Option<embedded_usb_pd::ucsi::lpm::ResponseData>, PdError>>,
5555
}
5656

5757
impl Mock {
@@ -60,20 +60,20 @@ impl Mock {
6060
Self {
6161
fn_calls: VecDeque::new(),
6262
name,
63-
next_result_get_port_status: None,
64-
next_result_clear_dead_battery_flag: None,
65-
next_result_enable_sink_path: None,
66-
next_result_get_pd_alert: None,
67-
next_result_set_unconstrained_power: None,
68-
next_result_get_other_vdm: None,
69-
next_result_get_attn_vdm: None,
70-
next_result_send_vdm: None,
71-
next_result_execute_drst: None,
72-
next_result_get_dp_status: None,
73-
next_result_set_dp_config: None,
74-
next_result_set_tbt_config: None,
75-
next_result_set_usb_control: None,
76-
next_result_execute_lpm_command: None,
63+
next_result_get_port_status: VecDeque::new(),
64+
next_result_clear_dead_battery_flag: VecDeque::new(),
65+
next_result_enable_sink_path: VecDeque::new(),
66+
next_result_get_pd_alert: VecDeque::new(),
67+
next_result_set_unconstrained_power: VecDeque::new(),
68+
next_result_get_other_vdm: VecDeque::new(),
69+
next_result_get_attn_vdm: VecDeque::new(),
70+
next_result_send_vdm: VecDeque::new(),
71+
next_result_execute_drst: VecDeque::new(),
72+
next_result_get_dp_status: VecDeque::new(),
73+
next_result_set_dp_config: VecDeque::new(),
74+
next_result_set_tbt_config: VecDeque::new(),
75+
next_result_set_usb_control: VecDeque::new(),
76+
next_result_execute_lpm_command: VecDeque::new(),
7777
}
7878
}
7979
}

type-c-interface-mocks/src/controller/pd.rs

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,75 +37,99 @@ impl Pd for Mock {
3737
async fn get_port_status(&mut self, port: LocalPortId) -> Result<PortStatus, PdError> {
3838
self.fn_calls
3939
.push_back(ControllerFnCall::Pd(FnCall::GetPortStatus(port)));
40-
self.next_result_get_port_status.unwrap_or(Ok(Default::default()))
40+
self.next_result_get_port_status
41+
.pop_front()
42+
.expect("next_result_get_port_status not set")
4143
}
4244

4345
async fn clear_dead_battery_flag(&mut self, port: LocalPortId) -> Result<(), PdError> {
4446
self.fn_calls
4547
.push_back(ControllerFnCall::Pd(FnCall::ClearDeadBatteryFlag(port)));
46-
self.next_result_clear_dead_battery_flag.unwrap_or(Ok(()))
48+
self.next_result_clear_dead_battery_flag
49+
.pop_front()
50+
.expect("next_result_clear_dead_battery_flag not set")
4751
}
4852

4953
async fn enable_sink_path(&mut self, port: LocalPortId, enable: bool) -> Result<(), PdError> {
5054
self.fn_calls
5155
.push_back(ControllerFnCall::Pd(FnCall::EnableSinkPath(port, enable)));
52-
self.next_result_enable_sink_path.unwrap_or(Ok(()))
56+
self.next_result_enable_sink_path
57+
.pop_front()
58+
.expect("next_result_enable_sink_path not set")
5359
}
5460

5561
async fn get_pd_alert(&mut self, port: LocalPortId) -> Result<Option<Ado>, PdError> {
5662
self.fn_calls.push_back(ControllerFnCall::Pd(FnCall::GetPdAlert(port)));
57-
self.next_result_get_pd_alert.unwrap_or(Ok(None))
63+
self.next_result_get_pd_alert
64+
.pop_front()
65+
.expect("next_result_get_pd_alert not set")
5866
}
5967

6068
async fn set_unconstrained_power(&mut self, port: LocalPortId, unconstrained: bool) -> Result<(), PdError> {
6169
self.fn_calls
6270
.push_back(ControllerFnCall::Pd(FnCall::SetUnconstrainedPower(port, unconstrained)));
63-
self.next_result_set_unconstrained_power.unwrap_or(Ok(()))
71+
self.next_result_set_unconstrained_power
72+
.pop_front()
73+
.expect("next_result_set_unconstrained_power not set")
6474
}
6575

6676
async fn get_other_vdm(&mut self, port: LocalPortId) -> Result<OtherVdm, PdError> {
6777
self.fn_calls.push_back(ControllerFnCall::Pd(FnCall::GetOtherVdm(port)));
6878
self.next_result_get_other_vdm
79+
.pop_front()
6980
.expect("next_result_get_other_vdm not set")
7081
}
7182

7283
async fn get_attn_vdm(&mut self, port: LocalPortId) -> Result<AttnVdm, PdError> {
7384
self.fn_calls.push_back(ControllerFnCall::Pd(FnCall::GetAttnVdm(port)));
74-
self.next_result_get_attn_vdm.expect("next_result_get_attn_vdm not set")
85+
self.next_result_get_attn_vdm
86+
.pop_front()
87+
.expect("next_result_get_attn_vdm not set")
7588
}
7689

7790
async fn send_vdm(&mut self, port: LocalPortId, tx_vdm: SendVdm) -> Result<(), PdError> {
7891
self.fn_calls
7992
.push_back(ControllerFnCall::Pd(FnCall::SendVdm(port, tx_vdm)));
80-
self.next_result_send_vdm.unwrap_or(Ok(()))
93+
self.next_result_send_vdm
94+
.pop_front()
95+
.expect("next_result_send_vdm not set")
8196
}
8297

8398
async fn execute_drst(&mut self, port: LocalPortId) -> Result<(), PdError> {
8499
self.fn_calls.push_back(ControllerFnCall::Pd(FnCall::ExecuteDrst(port)));
85-
self.next_result_execute_drst.unwrap_or(Ok(()))
100+
self.next_result_execute_drst
101+
.pop_front()
102+
.expect("next_result_execute_drst not set")
86103
}
87104

88105
async fn get_dp_status(&mut self, port: LocalPortId) -> Result<DpStatus, PdError> {
89106
self.fn_calls.push_back(ControllerFnCall::Pd(FnCall::GetDpStatus(port)));
90107
self.next_result_get_dp_status
108+
.pop_front()
91109
.expect("next_result_get_dp_status not set")
92110
}
93111

94112
async fn set_dp_config(&mut self, port: LocalPortId, config: DpConfig) -> Result<(), PdError> {
95113
self.fn_calls
96114
.push_back(ControllerFnCall::Pd(FnCall::SetDpConfig(port, config)));
97-
self.next_result_set_dp_config.unwrap_or(Ok(()))
115+
self.next_result_set_dp_config
116+
.pop_front()
117+
.expect("next_result_set_dp_config not set")
98118
}
99119

100120
async fn set_tbt_config(&mut self, port: LocalPortId, config: TbtConfig) -> Result<(), PdError> {
101121
self.fn_calls
102122
.push_back(ControllerFnCall::Pd(FnCall::SetTbtConfig(port, config)));
103-
self.next_result_set_tbt_config.unwrap_or(Ok(()))
123+
self.next_result_set_tbt_config
124+
.pop_front()
125+
.expect("next_result_set_tbt_config not set")
104126
}
105127

106128
async fn set_usb_control(&mut self, port: LocalPortId, config: UsbControlConfig) -> Result<(), PdError> {
107129
self.fn_calls
108130
.push_back(ControllerFnCall::Pd(FnCall::SetUsbControl(port, config)));
109-
self.next_result_set_usb_control.unwrap_or(Ok(()))
131+
self.next_result_set_usb_control
132+
.pop_front()
133+
.expect("next_result_set_usb_control not set")
110134
}
111135
}

type-c-interface-mocks/src/controller/ucsi.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ impl UcsiLpm for Mock {
1515
self.fn_calls
1616
.push_back(ControllerFnCall::Ucsi(FnCall::ExecuteLpm(command)));
1717
self.next_result_execute_lpm_command
18+
.pop_front()
1819
.expect("next_result_execute_lpm_command not set")
1920
}
2021
}

type-c-interface/src/control/dp.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub struct DpPinConfig {
1212
}
1313

1414
/// DisplayPort status data
15-
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
15+
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq)]
1616
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
1717
pub struct DpStatus {
1818
/// DP alt-mode entered

type-c-service/tests/power.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,14 @@ impl Test for TestBasicConsumerFlow {
3636
{
3737
// Set up the mock to report a sink connection and allow enabling the sink path
3838
let mut mock0 = port0.mock.lock().await;
39-
mock0.next_result_get_port_status = Some(Ok(PortStatus {
39+
40+
mock0.next_result_get_port_status.push_back(Ok(PortStatus {
4041
available_sink_contract: Some(POWER_CAPABILITY_5V_1A5),
4142
connection_state: Some(ConnectionState::Attached),
4243
power_role: PowerRole::Sink,
4344
..Default::default()
4445
}));
46+
mock0.next_result_enable_sink_path.push_back(Ok(()));
4547
}
4648

4749
// Simulate a plug event and a new consumer contract
@@ -85,7 +87,8 @@ impl Test for TestBasicConsumerFlow {
8587
{
8688
// Set up the mock to report an unplug
8789
let mut mock0 = port0.mock.lock().await;
88-
mock0.next_result_get_port_status = None;
90+
let port_status = Ok(Default::default());
91+
mock0.next_result_get_port_status.push_back(port_status);
8992
}
9093

9194
// Simulate an unplug event

0 commit comments

Comments
 (0)