continue seq exec helper tests
This commit is contained in:
parent
96e88659ab
commit
d107ab5ed3
@ -148,3 +148,9 @@ impl AssemblyCommandingHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
#[test]
|
||||||
|
fn test_basic() {}
|
||||||
|
}
|
||||||
|
@ -22,14 +22,20 @@ extern crate downcast_rs;
|
|||||||
#[cfg(any(feature = "std", test))]
|
#[cfg(any(feature = "std", test))]
|
||||||
extern crate std;
|
extern crate std;
|
||||||
|
|
||||||
|
pub mod action;
|
||||||
|
#[cfg(feature = "alloc")]
|
||||||
|
pub mod dev_mgmt;
|
||||||
pub mod encoding;
|
pub mod encoding;
|
||||||
pub mod event_man;
|
pub mod event_man;
|
||||||
pub mod events;
|
pub mod events;
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
pub mod executable;
|
pub mod executable;
|
||||||
pub mod hal;
|
pub mod hal;
|
||||||
|
pub mod hk;
|
||||||
|
pub mod mode;
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
pub mod mode_tree;
|
pub mod mode_tree;
|
||||||
|
pub mod params;
|
||||||
pub mod pool;
|
pub mod pool;
|
||||||
pub mod power;
|
pub mod power;
|
||||||
pub mod pus;
|
pub mod pus;
|
||||||
@ -38,16 +44,10 @@ pub mod request;
|
|||||||
pub mod res_code;
|
pub mod res_code;
|
||||||
#[cfg(feature = "alloc")]
|
#[cfg(feature = "alloc")]
|
||||||
pub mod scheduling;
|
pub mod scheduling;
|
||||||
pub mod time;
|
|
||||||
pub mod tmtc;
|
|
||||||
pub mod action;
|
|
||||||
pub mod hk;
|
|
||||||
pub mod mode;
|
|
||||||
pub mod params;
|
|
||||||
#[cfg(feature = "alloc")]
|
|
||||||
pub mod dev_mgmt;
|
|
||||||
#[cfg(feature = "alloc")]
|
#[cfg(feature = "alloc")]
|
||||||
pub mod subsystem;
|
pub mod subsystem;
|
||||||
|
pub mod time;
|
||||||
|
pub mod tmtc;
|
||||||
|
|
||||||
pub use spacepackets;
|
pub use spacepackets;
|
||||||
|
|
||||||
|
@ -529,6 +529,105 @@ impl SubsystemCommandingHelper {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
// TODO: Test sequence execution helper
|
use core::cell::RefCell;
|
||||||
|
use std::collections::VecDeque;
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
mode::{ModeAndSubmode, ModeRequest, ModeRequestSender, UNKNOWN_MODE},
|
||||||
|
mode_tree::{
|
||||||
|
ModeStoreProvider, ModeStoreVec, SequenceModeTables, SequenceTableEntry,
|
||||||
|
SequenceTableMapTable, SequenceTablesMapValue,
|
||||||
|
},
|
||||||
|
queue::GenericTargetedMessagingError,
|
||||||
|
request::RequestId,
|
||||||
|
subsystem::SequenceExecutionHelperState,
|
||||||
|
ComponentId,
|
||||||
|
};
|
||||||
|
|
||||||
|
use super::SequenceExecutionHelper;
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum ExampleTargetId {
|
||||||
|
Target0 = 1,
|
||||||
|
Target1 = 2,
|
||||||
|
Target2 = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum ExampleMode {
|
||||||
|
Mode0 = 1,
|
||||||
|
Mode1 = 2,
|
||||||
|
Mode2 = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct ModeReqSenderMock {
|
||||||
|
pub requests: RefCell<VecDeque<(RequestId, ComponentId, ModeRequest)>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ModeRequestSender for ModeReqSenderMock {
|
||||||
|
fn local_channel_id(&self) -> crate::ComponentId {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn send_mode_request(
|
||||||
|
&self,
|
||||||
|
request_id: RequestId,
|
||||||
|
target_id: ComponentId,
|
||||||
|
request: ModeRequest,
|
||||||
|
) -> Result<(), GenericTargetedMessagingError> {
|
||||||
|
self.requests
|
||||||
|
.borrow_mut()
|
||||||
|
.push_back((request_id, target_id, request));
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_default_mode_store() -> ModeStoreVec {
|
||||||
|
let mut mode_store = ModeStoreVec::default();
|
||||||
|
mode_store.add_component(ExampleTargetId::Target0 as u64, UNKNOWN_MODE);
|
||||||
|
mode_store.add_component(ExampleTargetId::Target1 as u64, UNKNOWN_MODE);
|
||||||
|
mode_store.add_component(ExampleTargetId::Target2 as u64, UNKNOWN_MODE);
|
||||||
|
mode_store
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_simple_sample_seq_table() -> SequenceModeTables {
|
||||||
|
let mut table = SequenceModeTables::default();
|
||||||
|
let mut table_val = SequenceTablesMapValue::new("MODE_0");
|
||||||
|
let mut table_seq_0 = SequenceTableMapTable::new("MODE_0_SEQ_0");
|
||||||
|
table_seq_0.add_entry(SequenceTableEntry::new(
|
||||||
|
"TARGET_0",
|
||||||
|
ExampleTargetId::Target0 as u64,
|
||||||
|
ModeAndSubmode::new(ExampleMode::Mode0 as u32, 0),
|
||||||
|
false,
|
||||||
|
));
|
||||||
|
table_seq_0.add_entry(SequenceTableEntry::new(
|
||||||
|
"TARGET_1",
|
||||||
|
ExampleTargetId::Target1 as u64,
|
||||||
|
ModeAndSubmode::new(ExampleMode::Mode1 as u32, 0),
|
||||||
|
true,
|
||||||
|
));
|
||||||
|
table_val.add_sequence_table(table_seq_0);
|
||||||
|
table.0.insert(ExampleMode::Mode0 as u32, table_val);
|
||||||
|
table
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_sequence_execution_helper() {
|
||||||
|
let sender = ModeReqSenderMock::default();
|
||||||
|
let mut mode_store = create_default_mode_store();
|
||||||
|
let mut execution_helper = SequenceExecutionHelper::new();
|
||||||
|
assert_eq!(execution_helper.state(), SequenceExecutionHelperState::Idle);
|
||||||
|
let simple_table = create_simple_sample_seq_table();
|
||||||
|
execution_helper
|
||||||
|
.load(ExampleMode::Mode0 as u32, 1, &simple_table)
|
||||||
|
.unwrap();
|
||||||
|
assert_eq!(execution_helper.state(), SequenceExecutionHelperState::Busy);
|
||||||
|
execution_helper
|
||||||
|
.run(&simple_table, &sender, &mut mode_store)
|
||||||
|
.expect("sequence exeecution helper run failure");
|
||||||
|
// TODO: continue tests
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Test subsystem commanding helper
|
// TODO: Test subsystem commanding helper
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user