Skip to content

Commit b86c6f5

Browse files
committed
add some more tests
1 parent 46d0964 commit b86c6f5

File tree

1 file changed

+77
-7
lines changed

1 file changed

+77
-7
lines changed

satrs/src/ccsds/scheduler.rs

Lines changed: 77 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ pub mod alloc_mod {
303303
///
304304
/// The range includes the start time but excludes the end time. Returns whether any
305305
/// telecommands were deleted.
306-
pub fn delete_in_time_window(&mut self, start_time: UnixTime, end_time: UnixTime) -> bool {
306+
pub fn delete_time_window(&mut self, start_time: UnixTime, end_time: UnixTime) -> bool {
307307
let len_before = self.tc_map.len();
308308
self.tc_map.retain(|k, _| k < &start_time || k >= &end_time);
309309
self.tc_map.len() < len_before
@@ -312,7 +312,7 @@ pub mod alloc_mod {
312312
/// Delete all scheduled telecommands scheduled after or at a given time.
313313
///
314314
/// Returns whether any telecommands were deleted.
315-
pub fn delete_all_starting_at(&mut self, start_time: UnixTime) -> bool {
315+
pub fn delete_starting_at(&mut self, start_time: UnixTime) -> bool {
316316
let len_before = self.tc_map.len();
317317
self.tc_map.retain(|k, _| k < &start_time);
318318
self.tc_map.len() < len_before
@@ -321,7 +321,7 @@ pub mod alloc_mod {
321321
/// Delete all scheduled telecommands scheduled before but not equal to a given time.
322322
///
323323
/// Returns whether any telecommands were deleted.
324-
pub fn delete_all_before(&mut self, end_time: UnixTime) -> bool {
324+
pub fn delete_before(&mut self, end_time: UnixTime) -> bool {
325325
let len_before = self.tc_map.len();
326326
self.tc_map.retain(|k, _| k >= &end_time);
327327
self.tc_map.len() < len_before
@@ -783,7 +783,7 @@ mod tests {
783783
scheduler
784784
.insert_telecommand_with_reader(&reader_2, UnixTime::new(7, 0))
785785
.unwrap();
786-
let deleted = scheduler.delete_in_time_window(UnixTime::new(3, 0), UnixTime::new(6, 0));
786+
let deleted = scheduler.delete_time_window(UnixTime::new(3, 0), UnixTime::new(6, 0));
787787
assert!(deleted);
788788
assert_eq!(scheduler.current_fill_count().packets, 2);
789789
assert_eq!(
@@ -834,7 +834,7 @@ mod tests {
834834
.insert_telecommand_with_reader(&reader_2, UnixTime::new(7, 0))
835835
.unwrap();
836836
// This only deletes the first 2 TCs.
837-
let deleted = scheduler.delete_in_time_window(UnixTime::new(2, 0), UnixTime::new(7, 0));
837+
let deleted = scheduler.delete_time_window(UnixTime::new(2, 0), UnixTime::new(7, 0));
838838
assert!(deleted);
839839
assert_eq!(scheduler.current_fill_count().packets, 1);
840840
assert_eq!(scheduler.current_fill_count().bytes, test_tc_2_raw.len());
@@ -846,11 +846,81 @@ mod tests {
846846

847847
#[test]
848848
fn test_deletion_from_start() {
849-
//TODO
849+
let unix_time = UnixTime::new(0, 0);
850+
let mut scheduler = CcsdsScheduler::new(
851+
unix_time,
852+
Limits::new(Some(100), Some(1024)),
853+
Duration::from_millis(1000),
854+
);
855+
let test_tc_0 = test_tc(&[42], u14::ZERO);
856+
let test_tc_1 = test_tc(&[1, 2, 3], u14::new(1));
857+
let test_tc_2 = test_tc(&[1, 2, 3], u14::new(2));
858+
let test_tc_0_raw = test_tc_0.to_vec();
859+
let test_tc_1_raw = test_tc_1.to_vec();
860+
let test_tc_2_raw = test_tc_2.to_vec();
861+
let reader_0 =
862+
CcsdsPacketReader::new(&test_tc_0_raw, Some(ChecksumType::WithCrc16)).unwrap();
863+
let reader_1 =
864+
CcsdsPacketReader::new(&test_tc_1_raw, Some(ChecksumType::WithCrc16)).unwrap();
865+
let reader_2 =
866+
CcsdsPacketReader::new(&test_tc_2_raw, Some(ChecksumType::WithCrc16)).unwrap();
867+
scheduler
868+
.insert_telecommand_with_reader(&reader_0, UnixTime::new(2, 0))
869+
.unwrap();
870+
scheduler
871+
.insert_telecommand_with_reader(&reader_1, UnixTime::new(5, 0))
872+
.unwrap();
873+
scheduler
874+
.insert_telecommand_with_reader(&reader_2, UnixTime::new(7, 0))
875+
.unwrap();
876+
// This only deletes the first 2 TCs.
877+
let deleted = scheduler.delete_starting_at(UnixTime::new(5, 0));
878+
assert!(deleted);
879+
assert_eq!(scheduler.current_fill_count().packets, 1);
880+
assert_eq!(scheduler.current_fill_count().bytes, test_tc_0_raw.len());
881+
scheduler.update_time(UnixTime::new(10, 0));
882+
scheduler.release_telecommands(|_id, packet| {
883+
assert_eq!(packet, test_tc_0_raw);
884+
});
850885
}
851886

852887
#[test]
853888
fn test_deletion_until_end() {
854-
//TODO
889+
let unix_time = UnixTime::new(0, 0);
890+
let mut scheduler = CcsdsScheduler::new(
891+
unix_time,
892+
Limits::new(Some(100), Some(1024)),
893+
Duration::from_millis(1000),
894+
);
895+
let test_tc_0 = test_tc(&[42], u14::ZERO);
896+
let test_tc_1 = test_tc(&[1, 2, 3], u14::new(1));
897+
let test_tc_2 = test_tc(&[1, 2, 3], u14::new(2));
898+
let test_tc_0_raw = test_tc_0.to_vec();
899+
let test_tc_1_raw = test_tc_1.to_vec();
900+
let test_tc_2_raw = test_tc_2.to_vec();
901+
let reader_0 =
902+
CcsdsPacketReader::new(&test_tc_0_raw, Some(ChecksumType::WithCrc16)).unwrap();
903+
let reader_1 =
904+
CcsdsPacketReader::new(&test_tc_1_raw, Some(ChecksumType::WithCrc16)).unwrap();
905+
let reader_2 =
906+
CcsdsPacketReader::new(&test_tc_2_raw, Some(ChecksumType::WithCrc16)).unwrap();
907+
scheduler
908+
.insert_telecommand_with_reader(&reader_0, UnixTime::new(2, 0))
909+
.unwrap();
910+
scheduler
911+
.insert_telecommand_with_reader(&reader_1, UnixTime::new(5, 0))
912+
.unwrap();
913+
scheduler
914+
.insert_telecommand_with_reader(&reader_2, UnixTime::new(7, 0))
915+
.unwrap();
916+
// This only deletes the first 2 TCs.
917+
let deleted = scheduler.delete_before(UnixTime::new(7, 0));
918+
assert!(deleted);
919+
assert_eq!(scheduler.current_fill_count().packets, 1);
920+
assert_eq!(scheduler.current_fill_count().bytes, test_tc_2_raw.len());
921+
scheduler.update_time(UnixTime::new(10, 0));
922+
scheduler.release_telecommands(|_id, packet| {
923+
assert_eq!(packet, test_tc_2_raw);
924+
});
855925
}
856926
}

0 commit comments

Comments
 (0)