Add rpacket tests

next
Sayan Nandan 4 years ago
parent ad7987878c
commit ff932f686c
No known key found for this signature in database
GPG Key ID: C31EFD7DDA12AEE0

@ -355,13 +355,22 @@ pub fn parse_result_packet(
Err(_) => return Err(UnrecognizedError(metaframe[4].to_owned())),
};
let respsize = match metaframe[4].parse::<usize>() {
Ok(r) => r,
Err(_) => return Err(StandardError(TPError::InvalidMetaframe)),
};
if let Some(respcode) = TPError::from_u8(respcode) {
match respcode {
Okay => {
TPError::Okay => {
// Enter dataframe and check result
if let Some(value) = dataframe.get(0) {
if dataframe.get(1).is_none() {
return Ok(value.to_string());
if value.len() == respsize {
return Ok(value.to_string());
} else {
return Err(StandardError(TPError::CorruptDataframe));
}
} else {
return Err(StandardError(TPError::CorruptDataframe));
}
@ -464,3 +473,42 @@ fn test_qpacket_error() {
eq_corrupt_df
);
}
#[cfg(test)]
#[test]
fn test_rpacket_error() {
let v = Version(0, 1, 0);
use TPResultError::*;
let bad_tp_tag = "AP/0.1.0/R/5\n\nsayan".to_owned();
let bad_version = "TP/0.1/R/0/5\n\nsayan".to_owned();
let bad_mf_r_tag = "TP/0.1.0/X/0/5\n\nsayan".to_owned();
let bad_mf_no_size = "TP/0.1.0/R/0\n\nsayan".to_owned();
let bad_df = "TP/0.1.0/R/0/5\n\n".to_owned();
let bad_df_size = "TP/0.1.0/0/4\n\nsaya".to_owned();
let err_invalid_mf = StandardError(TPError::InvalidMetaframe);
let err_corrupt_df = StandardError(TPError::CorruptDataframe);
assert_eq!(
parse_result_packet(&bad_tp_tag, &v).err().unwrap(),
err_invalid_mf
);
assert_eq!(
parse_result_packet(&bad_version, &v).err().unwrap(),
err_invalid_mf
);
assert_eq!(
parse_result_packet(&bad_mf_r_tag, &v).err().unwrap(),
err_invalid_mf
);
assert_eq!(
parse_result_packet(&bad_mf_no_size, &v).err().unwrap(),
err_invalid_mf
);
assert_eq!(
parse_result_packet(&bad_df, &v).err().unwrap(),
err_corrupt_df
);
assert_eq!(
parse_result_packet(&bad_df_size, &v).err().unwrap(),
err_invalid_mf
);
}

Loading…
Cancel
Save