Improvements for writable abstractions #39
@ -205,11 +205,22 @@ mod tests {
|
||||
let mut buf: [u8; 64] = [0; 64];
|
||||
eof_pdu.write_to_bytes(&mut buf).unwrap();
|
||||
let eof_read_back = EofPdu::from_bytes(&buf);
|
||||
if !eof_read_back.is_ok() {
|
||||
if eof_read_back.is_err() {
|
||||
let e = eof_read_back.unwrap_err();
|
||||
panic!("deserialization failed with: {e}")
|
||||
}
|
||||
let eof_read_back = eof_read_back.unwrap();
|
||||
assert_eq!(eof_read_back, eof_pdu);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_write_to_vec() {
|
||||
let pdu_conf = common_pdu_conf(CrcFlag::NoCrc, LargeFileFlag::Normal);
|
||||
let pdu_header = PduHeader::new_no_file_data(pdu_conf, 0);
|
||||
let eof_pdu = EofPdu::new_no_error(pdu_header, 0x01020304, 12);
|
||||
let mut buf: [u8; 64] = [0; 64];
|
||||
let written = eof_pdu.write_to_bytes(&mut buf).unwrap();
|
||||
let pdu_vec = eof_pdu.to_vec().unwrap();
|
||||
assert_eq!(buf[0..written], pdu_vec);
|
||||
}
|
||||
}
|
||||
|
@ -234,13 +234,13 @@ mod tests {
|
||||
use crate::cfdp::{SegmentMetadataFlag, SegmentationControl};
|
||||
use crate::util::UbfU8;
|
||||
|
||||
const SRC_ID: UbfU8 = UbfU8::new(1);
|
||||
const DEST_ID: UbfU8 = UbfU8::new(2);
|
||||
const SEQ_NUM: UbfU8 = UbfU8::new(3);
|
||||
|
||||
#[test]
|
||||
fn test_basic() {
|
||||
let src_id = UbfU8::new(1);
|
||||
let dest_id = UbfU8::new(2);
|
||||
let transaction_seq_num = UbfU8::new(3);
|
||||
let common_conf =
|
||||
CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_seq_num).unwrap();
|
||||
let common_conf = CommonPduConfig::new_with_byte_fields(SRC_ID, DEST_ID, SEQ_NUM).unwrap();
|
||||
let pdu_header = PduHeader::new_for_file_data_default(common_conf, 0);
|
||||
let file_data: [u8; 4] = [1, 2, 3, 4];
|
||||
let fd_pdu = FileDataPdu::new_no_seg_metadata(pdu_header, 10, &file_data);
|
||||
@ -255,11 +255,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_serialization() {
|
||||
let src_id = UbfU8::new(1);
|
||||
let dest_id = UbfU8::new(2);
|
||||
let transaction_seq_num = UbfU8::new(3);
|
||||
let common_conf =
|
||||
CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_seq_num).unwrap();
|
||||
let common_conf = CommonPduConfig::new_with_byte_fields(SRC_ID, DEST_ID, SEQ_NUM).unwrap();
|
||||
let pdu_header = PduHeader::new_for_file_data_default(common_conf, 0);
|
||||
let file_data: [u8; 4] = [1, 2, 3, 4];
|
||||
let fd_pdu = FileDataPdu::new_no_seg_metadata(pdu_header, 10, &file_data);
|
||||
@ -288,13 +284,21 @@ mod tests {
|
||||
assert_eq!(buf[current_idx], 4);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_write_to_vec() {
|
||||
let common_conf = CommonPduConfig::new_with_byte_fields(SRC_ID, DEST_ID, SEQ_NUM).unwrap();
|
||||
let pdu_header = PduHeader::new_for_file_data_default(common_conf, 0);
|
||||
let file_data: [u8; 4] = [1, 2, 3, 4];
|
||||
let fd_pdu = FileDataPdu::new_no_seg_metadata(pdu_header, 10, &file_data);
|
||||
let mut buf: [u8; 64] = [0; 64];
|
||||
let written = fd_pdu.write_to_bytes(&mut buf).unwrap();
|
||||
let pdu_vec = fd_pdu.to_vec().unwrap();
|
||||
assert_eq!(buf[0..written], pdu_vec);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_deserialization() {
|
||||
let src_id = UbfU8::new(1);
|
||||
let dest_id = UbfU8::new(2);
|
||||
let transaction_seq_num = UbfU8::new(3);
|
||||
let common_conf =
|
||||
CommonPduConfig::new_with_byte_fields(src_id, dest_id, transaction_seq_num).unwrap();
|
||||
let common_conf = CommonPduConfig::new_with_byte_fields(SRC_ID, DEST_ID, SEQ_NUM).unwrap();
|
||||
let pdu_header = PduHeader::new_for_file_data_default(common_conf, 0);
|
||||
let file_data: [u8; 4] = [1, 2, 3, 4];
|
||||
let fd_pdu = FileDataPdu::new_no_seg_metadata(pdu_header, 10, &file_data);
|
||||
|
@ -335,6 +335,20 @@ mod tests {
|
||||
generic_serialization_test_no_error(DeliveryCode::Incomplete, FileStatus::Unreported);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_write_to_vec() {
|
||||
let finished_pdu = generic_finished_pdu(
|
||||
CrcFlag::NoCrc,
|
||||
LargeFileFlag::Normal,
|
||||
DeliveryCode::Complete,
|
||||
FileStatus::Retained,
|
||||
);
|
||||
let mut buf: [u8; 64] = [0; 64];
|
||||
let written = finished_pdu.write_to_bytes(&mut buf).unwrap();
|
||||
let pdu_vec = finished_pdu.to_vec().unwrap();
|
||||
assert_eq!(buf[0..written], pdu_vec);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_deserialization_simple() {
|
||||
let finished_pdu = generic_finished_pdu(
|
||||
|
@ -388,6 +388,16 @@ pub mod tests {
|
||||
assert_eq!(current_idx, written);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_write_to_vec() {
|
||||
let (_, _, metadata_pdu) =
|
||||
generic_metadata_pdu(CrcFlag::NoCrc, LargeFileFlag::Normal, None);
|
||||
let mut buf: [u8; 64] = [0; 64];
|
||||
let pdu_vec = metadata_pdu.to_vec().unwrap();
|
||||
let written = metadata_pdu.write_to_bytes(&mut buf).unwrap();
|
||||
assert_eq!(buf[0..written], pdu_vec);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_deserialization() {
|
||||
let (_, _, metadata_pdu) =
|
||||
|
@ -905,6 +905,20 @@ mod tests {
|
||||
verify_crc_no_app_data(&test_buf);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_writing_into_vec() {
|
||||
let pus_tc = base_ping_tc_simple_ctor();
|
||||
let tc_vec = pus_tc.to_vec().expect("Error writing TC to buffer");
|
||||
assert_eq!(tc_vec.len(), 13);
|
||||
let (tc_from_raw, size) = PusTcReader::new(tc_vec.as_slice())
|
||||
.expect("Creating PUS TC struct from raw buffer failed");
|
||||
assert_eq!(size, 13);
|
||||
verify_test_tc_with_reader(&tc_from_raw, false, 13);
|
||||
assert!(tc_from_raw.user_data().is_empty());
|
||||
verify_test_tc_raw(&tc_vec);
|
||||
verify_crc_no_app_data(&tc_vec);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_update_func() {
|
||||
let mut sph = SpHeader::tc_unseg(0x02, 0x34, 0).unwrap();
|
||||
|
@ -999,7 +999,7 @@ mod tests {
|
||||
#[test]
|
||||
fn test_setters() {
|
||||
let timestamp = dummy_timestamp();
|
||||
let mut pus_tm = base_ping_reply_full_ctor(×tamp);
|
||||
let mut pus_tm = base_ping_reply_full_ctor(timestamp);
|
||||
pus_tm.set_sc_time_ref_status(0b1010);
|
||||
pus_tm.set_dest_id(0x7fff);
|
||||
pus_tm.set_msg_counter(0x1f1f);
|
||||
@ -1010,10 +1010,21 @@ mod tests {
|
||||
assert_eq!(pus_tm.apid(), 0x7ff);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_write_into_vec() {
|
||||
let timestamp = dummy_timestamp();
|
||||
let pus_tm = base_ping_reply_full_ctor(timestamp);
|
||||
let tm_vec = pus_tm.to_vec().expect("Serialization failed");
|
||||
assert_eq!(tm_vec.len(), 22);
|
||||
let (tm_deserialized, size) =
|
||||
PusTmReader::new(tm_vec.as_slice(), 7).expect("Deserialization failed");
|
||||
assert_eq!(tm_vec.len(), size);
|
||||
verify_ping_reply_with_reader(&tm_deserialized, false, 22, dummy_timestamp());
|
||||
}
|
||||
#[test]
|
||||
fn test_deserialization_no_source_data() {
|
||||
let timestamp = dummy_timestamp();
|
||||
let pus_tm = base_ping_reply_full_ctor(×tamp);
|
||||
let pus_tm = base_ping_reply_full_ctor(timestamp);
|
||||
let mut buf: [u8; 32] = [0; 32];
|
||||
let ser_len = pus_tm
|
||||
.write_to_bytes(&mut buf)
|
||||
@ -1045,7 +1056,7 @@ mod tests {
|
||||
#[test]
|
||||
fn test_target_buf_too_small() {
|
||||
let timestamp = dummy_timestamp();
|
||||
let pus_tm = base_ping_reply_full_ctor(×tamp);
|
||||
let pus_tm = base_ping_reply_full_ctor(timestamp);
|
||||
let mut buf: [u8; 16] = [0; 16];
|
||||
let res = pus_tm.write_to_bytes(&mut buf);
|
||||
assert!(res.is_err());
|
||||
|
Loading…
Reference in New Issue
Block a user