@@ -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