use psltools::{Reader, Strand};
#[test]
fn negative_strand_query_block_forward_intervals() {
let reader = Reader::<psltools::Psl>::from_path("tests/data/neg_strand.psl").expect("read");
let psl = &reader.as_slice()[0];
assert_eq!(psl.strands.query, Strand::Reverse);
assert_eq!(psl.query_block_forward(0), 53..61);
assert_eq!(psl.query_block_forward(1), 41..51);
assert_eq!(psl.query_start, 41);
assert_eq!(psl.query_end, 61);
}
#[test]
fn positive_strand_query_block_forward_is_identity() {
let reader = Reader::<psltools::Psl>::from_path("tests/data/basic.psl").expect("read");
let psl = &reader.as_slice()[1]; assert_eq!(psl.query_block_forward(0), 0..5);
assert_eq!(psl.query_block_forward(1), 7..12);
}
#[test]
fn translated_protein_is_detected_and_uses_size_mul_3() {
let reader = Reader::<psltools::Psl>::from_path("tests/data/translated.psl").expect("read");
let psl = &reader.as_slice()[0];
assert!(
psl.is_protein(),
"++ record with tEnd == 3*size should be protein"
);
assert_eq!(psl.size_mul(), 3);
assert_eq!(psl.reference_block_interval(0), 0..30);
}
#[test]
fn plain_dna_is_not_protein() {
let reader = Reader::<psltools::Psl>::from_path("tests/data/basic.psl").expect("read");
let psl = &reader.as_slice()[0];
assert!(!psl.is_protein());
assert_eq!(psl.size_mul(), 1);
}
#[test]
fn overlaps_reference_region() {
let reader = Reader::<psltools::Psl>::from_path("tests/data/basic.psl").expect("read");
let psl = &reader.as_slice()[0]; assert!(psl.overlaps_reference(b"chr1", 10, 20));
assert!(!psl.overlaps_reference(b"chr1", 15, 20)); assert!(!psl.overlaps_reference(b"chr2", 0, 100));
}