#![allow(clippy::missing_panics_doc)]
mod fuzz_crash;
mod fuzz_hang;
mod parse;
mod pro_forma_negative;
mod pro_forma_positive;
mod sloppy;
#[macro_export]
macro_rules! parse_test {
($case:literal, $name:ident) => {
#[test]
fn $name() {
let res = $crate::sequence::CompoundPeptidoformIon::pro_forma($case, None);
let upper = $case.to_ascii_uppercase();
let lower = $case.to_ascii_lowercase();
let res_upper = $crate::sequence::CompoundPeptidoformIon::pro_forma(&upper, None);
let res_lower = $crate::sequence::CompoundPeptidoformIon::pro_forma(&lower, None);
println!("{}", $case);
assert!(res.is_ok(), "{}", res.err().unwrap());
assert_eq!(res, res_upper);
assert_eq!(res, res_lower);
let back = res.as_ref().unwrap().to_string();
let res_back = $crate::sequence::CompoundPeptidoformIon::pro_forma(&back, None);
assert_eq!(res, res_back, "{} != {back}", $case);
}
};
(ne $case:literal, $name:ident) => {
#[test]
fn $name() {
let res = $crate::sequence::CompoundPeptidoformIon::pro_forma($case, None);
println!("{}\n{:?}", $case, res);
assert!(res.is_err());
}
};
}
#[macro_export]
macro_rules! parse_sloppy_test {
($case:literal, $name:ident) => {
#[test]
fn $name() {
let res = $crate::sequence::Peptidoform::sloppy_pro_forma(
$case,
0..$case.len(),
None,
SloppyParsingParameters::default(),
);
let res_leading_n = $crate::sequence::Peptidoform::sloppy_pro_forma(
$case,
0..$case.len(),
None,
SloppyParsingParameters {
ignore_prefix_lowercase_n: true,
},
);
let res_upper = $crate::sequence::Peptidoform::sloppy_pro_forma(
&$case.to_ascii_uppercase(),
0..$case.len(),
None,
SloppyParsingParameters::default(),
);
let res_lower = $crate::sequence::Peptidoform::sloppy_pro_forma(
&$case.to_ascii_lowercase(),
0..$case.len(),
None,
SloppyParsingParameters::default(),
);
println!("{}", $case);
dbg!(&res);
assert!(res.is_ok());
assert_eq!(res, res_leading_n);
assert_eq!(res, res_upper);
assert_eq!(res, res_lower);
}
};
(ne $case:literal, $name:ident) => {
#[test]
fn $name() {
let res = $crate::sequence::Peptidoform::sloppy_pro_forma(
$case,
0..$case.len(),
None,
&SloppyParsingParameters::default(),
);
println!("{}\n{:?}", $case, res);
assert!(res.is_err());
}
};
}