#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Kind {
Match,
Insertion,
Deletion,
Skip,
SoftClip,
HardClip,
Pad,
SequenceMatch,
SequenceMismatch,
}
impl Kind {
pub fn consumes_read(&self) -> bool {
matches!(
self,
Self::Match
| Self::Insertion
| Self::SoftClip
| Self::SequenceMatch
| Self::SequenceMismatch
)
}
pub fn consumes_reference(&self) -> bool {
matches!(
self,
Self::Match
| Self::Deletion
| Self::Skip
| Self::SequenceMatch
| Self::SequenceMismatch
)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_consumes_read() {
assert!(Kind::Match.consumes_read());
assert!(Kind::Insertion.consumes_read());
assert!(!Kind::Deletion.consumes_read());
assert!(!Kind::Skip.consumes_read());
assert!(Kind::SoftClip.consumes_read());
assert!(!Kind::HardClip.consumes_read());
assert!(!Kind::Pad.consumes_read());
assert!(Kind::SequenceMatch.consumes_read());
assert!(Kind::SequenceMismatch.consumes_read());
}
#[test]
fn test_consumes_reference() {
assert!(Kind::Match.consumes_reference());
assert!(!Kind::Insertion.consumes_reference());
assert!(Kind::Deletion.consumes_reference());
assert!(Kind::Skip.consumes_reference());
assert!(!Kind::SoftClip.consumes_reference());
assert!(!Kind::HardClip.consumes_reference());
assert!(!Kind::Pad.consumes_reference());
assert!(Kind::SequenceMatch.consumes_reference());
assert!(Kind::SequenceMismatch.consumes_reference());
}
}